乌云社区某删除功能存在CSRF漏洞(简单利用需诱骗管理员触发)

漏洞详情

CSRF删帖,利用十分简单。
zone删(回)帖的函数:

1
2
3
4
5
6
7
function DelComment(commentId){
if(confirm("确定删除此内容?")){
$.get('/index.php?do=edit&act=delcomment',{"fun":"ajax","id":commentId,"r":Math.random()},function(re){
$("#commentLi_"+commentId).remove();
});
}
}

特征:GET请求,没有Token,也没有验证Referer(验不验证referer不重要,后面有说到)。目标URL:http://zone.wooyun.org/index.php?do=edit&act=delcomment&fun=ajax&id=311946
311946即为需要删除的帖子id:

QQ20150705-1@2x.png

(PS:这个id是可以遍历的,也就是我构造一个页面让剑心访问,可以把zone里的帖子删光、。。逃~)
可以任意删帖,但需要有权限的人访问你的页面才行,有点鸡肋。但如果我能构造个更好的利用方法就不鸡肋了。
好方法当然是,如果能直接在zone里发贴,管理员或领主浏览帖子以后即可删帖。
原本是很简单的,只要我帖子里发一张图片就好。但zone里,如果我发的不是图片就显示不出来:

QQ20150705-2@2x.png

所以需要变通一下:
插入图片地址:http://mhz.pw/test_311951.gif,然后302跳转到http://zone.wooyun.org/index.php?do=edit&act=delcomment&fun=ajax&id=311951即可:

QQ20150705-3@2x.png

QQ20150705-5@2x.png

领主或管理员访问该页面,即可触发,删除目标帖子。

见上面。

解决方案

增加token。
验证Referer也是无效的,因为该请求就来自zone.wooyun.org。