【vulhub】Discuz-任意文件删除
0x00漏洞介绍
通过配置个人信息的属性值,导致文件删除。
影响版本
Discuz <= 3.4
0x01 搭建环境
数据库服务器填写db(必须db,不然安装失败),数据库名为discuz,数据库账号密码均为root,管理员密码任意。填写联系方式页面直接点击跳过本步后跳转到首页
0x02 复现过程
首先,环境中是存在robots.txt这个文件的,我们是能正常访问到的,这次漏洞复现的目的就是将这个文件删除
随便注册一个用户,进入个人资料页面/home.php?mod=spacecp&ac=profile
,抓一个保存包,将birthprovince参数改为你想删除的文件,这里就写成robots.txt,并且记住自己的formhash,之后能用到
成功修改后刷新页面我们就发现,页面上的‘’出生省‘’被改成了输入的参数../../../robots.txt
在自己构造一个上传文件的html,将「your-ip」改为你靶场ip,「formhash」改为刚才记下的hash值
<body>
<form action="http://[your-ip]/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>
随便上传一个图片,成功后脏数据被提取,漏洞利用结束,再次访问发现robots.txt被删除
如果发现上传后出现下面的Discuz! System Error字样,可以将上传包cookie改为正常cookie,之后就正常发包
0x03 总结
在upload/source/include/spacecp/spacecp_profile.php
中,文件上传成功后!$upload->error()
进入unlink语句
@unlink(getglobal('setting/attachdir').'./profile/'.$space[$key]);
之后回溯变量$space[$key]
(用户的个人设置)中出生省的参数可修改,就变成了用unlink删除当前内容,造成文件删除