当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0124807

漏洞标题:Discuz CSRF发帖POC可蠕虫

相关厂商:Discuz!

漏洞作者: phith0n

提交时间:2015-07-06 08:59

修复时间:2015-10-04 10:16

公开时间:2015-10-04 10:16

漏洞类型:CSRF

危害等级:中

自评Rank:8

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-07-06: 细节已通知厂商并且等待厂商处理中
2015-07-06: 厂商已经确认,细节仅向厂商公开
2015-07-09: 细节向第三方安全合作伙伴开放
2015-08-30: 细节向核心白帽子及相关领域专家公开
2015-09-09: 细节向普通白帽子公开
2015-09-19: 细节向实习白帽子公开
2015-10-04: 细节向公众公开

简要描述:

TSRC西安沙龙议题案例之Discuz(影响大量站点,即使修改某文件做过部分防御仍可绕过)。

详细说明:

0x01 窃取Token
默认安装的Discuz,crossdomain.xml中的allow-access-from为*,所以任意域下的flash均可窃取discuz的Token(formhash),造成csrf。
经过统计,常见的八个安全社区:

QQ20150706-1@2x.png


其中红色的四个在我统计的时候仍然存在该问题。
从安全社区的现状即可预估所有Discuz社区的现状,存在漏洞的概率至少在50%以上,而且肯定远比这个值高(毕竟统计的是安全社区,站长和管理员都是相对懂的,就高达50%)。
利用蚁逅平台,即可窃取目标Discuz的Token:

QQ20150702-2@2x.png


上图是利用CSRF窃取的90sec社区用户的formhash。
0x02 绕过CSRF防御函数
以下代码是Discuz对CSRF的检查函数:

QQ20150703-1@2x.png


其中主要验证了formhash和referer
formhash在0x01中我通过flash即可窃取了,现在考虑怎么绕过referer。
绕过方法有2:
1.利用空Referer(https -> http)
2.利用代码逻辑错误:代码中,满足这个条件strncmp($_SERVER['HTTP_REFERER'], 'http://wsq.discuz.qq.com', 24) === 0 ,即可不检查referer。而这里我可以构造一个子域名,值为wsq.discuz.qq.com,如http://wsq.discuz.qq.com.jjfly.party,将POC放在该域名下,即可绕过referer检查。
0x03 构造POC
所以,我给出利用POC(这里以CSRF发帖为例):
http://wsq.discuz.qq.com.jjfly.party/game/discuz/csrf.php?domain=localdiscuz.com
(domain为目标discuz的域名,二级目录则填写localhost/discuz)
默认安装最新版Discuz x3.2(最好装根目录,否则crossdomain.xml可能请求不到),受害者登录并访问以上POC,即可自动发表一篇帖子,标题为“hacked by phithon”。
演示视频:http://youtu.be/H39rRofr8bg
0x04 绕过防御
有安全意识的站长可能会修改crossdomain.xml,将其中的*修改为自己的域名,如:

QQ20150706-3@2x.png


discuz官网就这样修改的。但实际上仍然无法防御CSRF攻击。
如何绕过?
我们可以将flash后缀修改为.gif或.txt等(其实这里存在一个XSS,我们可以直接上传swf,但因为和本漏洞无关,不多解释,本漏洞不需要上传后缀为swf),作为合法文件传到目标域名下。
通过discuz中某些上传方法,可以直接控制上传后的文件内容:
http://att.discuz.net/data/attachment/forum/201507/06/024906sfeaii36a9dri6l4.txt
所以,我上传了一个swf,将后缀修改为txt。
官网演示(证明swf是可以上传并得到路径的):http://att.discuz.net/data/attachment/forum/201507/06/024833ti31fmy4484muxxh.txt
为了不影响官网,CSRF发帖就不再官网演示了。本地上传一个:
http://localdiscuz.com/data/attachment/forum/201507/06/025812up2z4m6ayayt46pm.txt
构造POC:
http://wsq.discuz.qq.com.jjfly.party/game/discuz/csrf1.php?domain=localdiscuz.com&swf=http://localdiscuz.com/data/attachment/forum/201507/06/025812up2z4m6ayayt46pm.txt
其中domain是目标域名,swf是刚才上传的flash。
访问后依旧可以CSRF,因为这个flash也是本域名下的。浏览器执行flash并不以后缀判断。
演示视频:
http://youtu.be/VP0N50YThLI
这样一绕过,这个CSRF漏洞影响的范围就更广了,据我估计能影响99%的站点。

漏洞证明:

http://youtu.be/H39rRofr8bg
http://youtu.be/VP0N50YThLI

修复方案:

参考土司社区。

版权声明:转载请注明来源 phith0n@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2015-07-06 10:15

厂商回复:

感谢您提出的问题,我们尽快予以修复

最新状态:

暂无


漏洞评价:

评论

  1. 2015-07-06 09:24 | 浅蓝 ( 普通白帽子 | Rank:274 漏洞数:109 | 爱安全:www.ixsec.orgXsec社区:zone.ixse...)

    前排膜拜p神

  2. 2015-07-06 09:38 | anting ( 普通白帽子 | Rank:105 漏洞数:38 | 活到老,学到老)

    前排-1

  3. 2015-07-06 10:00 | 围剿 ( 路人 | Rank:17 漏洞数:5 | Evil decimal)

    前排支持 dz啊可是。。

  4. 2015-07-06 10:10 | 黑翼、 ( 路人 | Rank:26 漏洞数:10 | o(∩_∩)o)

    这个方法helen早就知道了

  5. 2015-07-06 10:12 | 放开那个漏洞,让我来 ( 路人 | Rank:20 漏洞数:2 | 正在尝试加载简介中.........)

    前排膜拜

  6. 2015-07-06 10:34 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    哈哈,的确是好方法。话说这个不是应该算通用型,在漏洞预警区域么?

  7. 2015-07-06 10:57 | 进击的zjx ( 普通白帽子 | Rank:295 漏洞数:63 | 工作需要,暂别一段时间)

    后排顶起

  8. 2015-07-06 11:30 | lufsy ( 路人 | Rank:11 漏洞数:3 | 自由,分享,共进)

    后排顶起

  9. 2015-07-06 12:49 | phith0n 认证白帽子 ( 普通白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    @px1624 不记得是否选了通用了……@浩天 @疯狗 @finger

  10. 2015-07-06 22:11 | range ( 普通白帽子 | Rank:153 漏洞数:32 | 这个人有点懒,没有写个人简介)

    前排

  11. 2015-07-06 22:13 | Anonymous.L ( 实习白帽子 | Rank:37 漏洞数:8 | 最后一位关注xxxx的人 , 孤独之人)

    @黑翼、 helen是谁?

  12. 2015-07-07 11:31 | chock ( 实习白帽子 | Rank:58 漏洞数:15 | 今夜我们都是wooyun人,我们一定要收购长亭)

    已阅,思路清晰,学习了

  13. 2015-07-08 20:48 | 浩森 ( 路人 | Rank:30 漏洞数:6 )

    @phith0n crossdomain.xml ?默认配置是 * ... (影响大量站点,即使修改某文件做过部分防御仍可绕过)也就是 把伪造的swf文件传到站点了?? 不知道是不是的- -说错了 别打我

  14. 2015-07-09 11:53 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @浩森 哦那个就是洞主啊

  15. 2015-07-09 18:54 | 90Snake ( 普通白帽子 | Rank:109 漏洞数:42 | 最大的漏洞就是人)

    是洞主在大会讲的绕过token吗

  16. 2015-07-09 22:04 | phith0n 认证白帽子 ( 普通白帽子 | Rank:656 漏洞数:107 | 一个想当文人的黑客~)

    @90Snake 一半是,还有我最后提的思考问题(关于绕过的问题),也在漏洞里