通过TleChat插件一键Getshell
TleChat网站插件是一个发布到wordpress,typecho和emlog社区上的站长聊天插件,站长聊天室插件为站长和用户提供聊天室功能,让站长与用户之间的联系更加友爱,支持文本、长文本、语音聊天、图片传输及站长之间的QQ、微信、支付宝打赏,共同建立一个友爱的联盟。
看了看 emlog
论坛上的状况,发现一名作者开发了一款站长聊天的插件,小东之前写过一款简单的聊天应用“Anychat
”,体验地址:http://chat.top15.cn ,感觉写着还是比较麻烦的,感觉插件不错,下载的人也那么多,也下载下来瞅瞅,学习。
一般来说,一个聊天程序,容易存在XS,SQL注入的漏洞,看了一遍源码,对于参数都使用了addslashes()
函数进行转义。
0x01 上传安装插件
发现还不错,界面设计,支持按住说话(上传声音文件吧),上传文件
既然支持上传文件,那么就很有可能存在“文件上传”相关的漏洞
0x02 挖掘漏洞
本地配置了Emlog
的环境,所以就下载了 emlog
版本的插件
下载地址: http://www.emlog.net/plugin/333
在content/plugins/TleChat/chat/upload.php
, 一看文件名就知道是上传文件的,打开瞅瞅
主要代码:
<?php header("Content-type: text/html; charset=utf-8"); require_once '../../../../init.php'; date_default_timezone_set("Etc/GMT-8"); $action = isset($_POST['action']) ? addslashes(trim($_POST['action'])) : ''; var_dump($action); if($action=="ip"){ echo client_ip(0,true); }else if($action=="audio"){ $mp3Name = isset($_POST['mp3Name']) ? addslashes(trim($_POST['mp3Name'])) : ''; move_uploaded_file(@$_FILES['file']['tmp_name'], dirname(__FILE__)."/upload/audio/".$mp3Name); echo BLOG_URL."content/plugins/TleChat/chat/upload/audio/".$mp3Name; }
可以看到,虽然都做了addslashes()
函数的转义,但是文件操作使用了move_uploaded_file()
,重要的一点是
并没有判断文件后缀 !!!
所以,任意文件上传漏洞是存在的!
0x03 验证漏洞 + exploit
因为只是任意文件上传,所以简单写了一个利用网页(文末可下载),直接利用吧!
选择自己的 shell.php
小马文件,大马文件都可以,然后填写上传到存在漏洞服务器上的文件名,然后上传
返回如下结果:
string(5) "audio" http://www.test.com/content/plugins/TleChat/chat/upload/audio/dyboy.php
访问链接,OK,成功上传~
0x04 总结
作者的插件写的很棒,安全问题也不可小觑,产品上线之前,一定要安全测试!!!最近一直在忙学校学习,以及一些创新创业的比赛,也在忙一些开发项目,小程序定制开发可联系小东!QQ:1099718640
0x05 附件下载
插件+Exploit:https://www.lanzous.com/i3roowf