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

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

缺陷编号:wooyun-2015-0146332

漏洞标题:找钢网会员找回密码处设计存在缺陷后台返回的加密后的用户名固定导致可更改任意用户登陆密码

相关厂商:找钢网

漏洞作者: wcsl

提交时间:2015-10-13 11:11

修复时间:2015-11-27 19:04

公开时间:2015-11-27 19:04

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-10-13: 细节已通知厂商并且等待厂商处理中
2015-10-13: 厂商已经确认,细节仅向厂商公开
2015-10-23: 细节向核心白帽子及相关领域专家公开
2015-11-02: 细节向普通白帽子公开
2015-11-12: 细节向实习白帽子公开
2015-11-27: 细节向公众公开

简要描述:

找钢网会员找回密码处设计存在缺陷,后台返回的加密后的用户名固定导致可更改任意用户登陆密码

详细说明:

1、测试找回密码模块,抓包分析正常找回密码流程
https://member.zhaogang.com/member/Password.aspx

图片1.jpg


2、如上图,输入正确验证码,服务端返回加密后的登陆用户名(问题在这,后台加密用户名时应该是未使用随机盐值或者使用固定IV值,导致同一个用户每次请求找回密码此处返回的都是不变的一串密文,如下图用户fendou2014对应的加密后的用户就是:eSKcZJzreJ2btAO2UlQQ6Q==)

图片2.png


3、第三步如下图,输入新密码(fendou2016),客户端用加密后的登陆用户名(eSKcZJzreJ2btAO2UlQQ6Q==)+要修改的密码(fendou2016)就可以修改该用户密码,也就是说只要知道任意用户对应的密文,就能修改该用户的登陆密码

图片3.png


图片4.jpg


图片5.png


4、那么如何知道目标用户名对应的密文,加个X-Forwarded-For不断跑验证码了,跑对了验证码,服务端就返回了验证后的用户名密文。其中用户名和手机号在第一步服务端就返回了(属于信息泄露,看12号提的那个漏洞)

图片6.png


图片7.png


图片8.png


5、接下来就是重放第三步的数据包,改成任意用户名就能改密码了

漏洞证明:

1、测试找回密码模块,抓包分析正常找回密码流程
https://member.zhaogang.com/member/Password.aspx

图片1.jpg


2、如上图,输入正确验证码,服务端返回加密后的登陆用户名(问题在这,后台加密用户名时应该是未使用随机盐值或者使用固定IV值,导致同一个用户每次请求找回密码此处返回的都是不变的一串密文,如下图用户fendou2014对应的加密后的用户就是:eSKcZJzreJ2btAO2UlQQ6Q==)

图片2.png


3、第三步如下图,输入新密码(fendou2016),客户端用加密后的登陆用户名(eSKcZJzreJ2btAO2UlQQ6Q==)+要修改的密码(fendou2016)就可以修改该用户密码,也就是说只要知道任意用户对应的密文,就能修改该用户的登陆密码

图片3.png


图片4.jpg


图片5.png


4、那么如何知道目标用户名对应的密文,加个X-Forwarded-For不断跑验证码了,跑对了验证码,服务端就返回了验证后的用户名密文。其中用户名和手机号在第一步服务端就返回了(属于信息泄露,看12号提的那个漏洞)

图片6.png


图片7.png


图片8.png


5、接下来就是重放第三步的数据包,改成任意用户名就能改密码了

修复方案:

修改密码的请求参数不能含有可被攻击者可预测的,此处请求参数为固定的密文+新密码,固定的密文可以通过跑验证码得到,所以后台加密时应该使用盐值,或者分组密码加密时IV值不能固定,这样不同验证码请求返回的密文随机,就可以啦。。。。。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2015-10-13 19:02

厂商回复:

确认为设计缺陷,谢谢白帽子提交我们的漏洞!

最新状态:

暂无


漏洞评价:

评论

  1. 2015-10-13 12:57 | wcsl ( 路人 | Rank:25 漏洞数:2 | web python)

    向厂家澄清下,此处描述有问题,解决方案应该是在发送验证码的时候每次加随机token,这样无法跑出密文用户名。。然后用户名加密最好也应该随机。。具体厂家更懂