2018年12月9日,国内某安全组织,对discuz X3.2 X3.4版本的漏洞进行了公开,这次漏洞影响范围较大,具体漏洞是discuz 的用户前段SQL注入与请求伪造漏洞,也俗称SSRF漏洞,漏洞产生的原因首先:php环境的版本大约PHP5.2,dizcuzX3.2 X3.4版本,服务器环境是windows 2008 2003 2012系统,linux centos不受此漏洞的影响。
漏洞的详情与利用
该漏洞产生的原因是由于source目录下的module文件里的misc模块代码,具体的是misc_imgcropper.php文件第54行到56行之间的函数变量赋值问题导致可以插入恶意非法参数,导致可以进行变量,我们跟进这个函数传递到了那里。
跟踪这个函数查到调用到了class目录下的class_images.php,代码如下图:
从上述代码中可以看出传递过来的url函数,被正常解析到curl请求当中去,通过这里的代码功能我们可以知道,我们可以调用cur的请求,去请求一些其他网站,curL:www.***.com.那么我们可以伪造自己构造的XSS获取代码,把代码放到自己的网站当中,让访问者自动访问我们精心制作的地址即可。但是利用这个请求伪造攻击的漏洞需要一定的条件就是需要网址的跳转才能更好的利用。
在discuz漏洞的利用过程中我们发现有些php版本也存在问题,必须是大约PHP5.2版本的,有些curl网址的请求才能有效果。我们提交的方式是get方式的数据提交,使用referer进行判断跳转。discuz官方对于来路的判断跳转进行了严格的过滤,导致你能使用任何地址进行跳转,我们来看下官方是如何写的代码。如下图:
从代码里可以看到限制了只要是本地的网址https://127.0.0.1/discuz才能跳转,我们测试了很多方式发现可以绕过discuz的限制,https://127.0.0.1%23%40www.安全测试.com&quickforward=2即可进行绕过,我们本地来测试下该漏洞:
discuz漏洞修复
关于discuz 3.4漏洞修复,建议使用者尽快升级discuz到最新版本,针对于curl的请求,php版本降级于5.2版本一下,或者是限制curl的功能使用。对discuz上的漏洞进行修复,或者是对网站安全防护参数进行重新设置,使他符合当时的网站环境。如果不懂如何修复discuzx3.4版本discuzx3.0版本以及discuzx3.2版本漏洞,也可以找专业的网站安全公司来处理,国内也就Sinesafe和绿盟、启明星辰等安全公司比较专业.本文来源:www.sinesafe.com