PJzhang:任意密码重置的常规姿势

猫宁!!!

 

之前在360补天看过carry_your分享的46分钟短视频“任意用户密码重置的10种姿势”。

 

在京东SRC安全小课堂第89期,也有一篇他的文章:web漏洞之逻辑漏洞挖掘。内容朴实无华。

 

在freebuf上有一个任意密码重置的文章系列7篇不错:任意用户密码重置(作者:yangyangwithgnu)

 

下面根据真实测试场景对任意密码重置思路梳理一下:

 

1-短信验证码可以爆破

密码重置的时候,有些网站没有图形验证码,而且短信验证码是4位,可以0000-9999进行爆破。

如果限制频次,可以尝试频繁替换x-forwarded-for(如果有的话)中的源ip,可能会绕过频次限制。

如果对方是6位的短信验证码,而且图形验证码的有效期没有设定或者设定为24h之类,一样可以进行爆破,只是时间成本略高。

如果对方设置了图形验证码,需要测试一下对方的图形验证码是不是真的有效,有些是前端都是失效的,有些是后端失效的,均可以重复利用实现爆破。

有的图形验证码就是一个摆设,你抓包把它给删除也是没有什么问题的,因为服务器也不会校验它存在与否。

如果对方在校验时存在逻辑错误,首先校验短信验证码的正确性,然后校验图形验证码的正确性,那图形验证码同样无效,即使是一次性的,也不行。

 

2-短信验证码出现在返回包

短信验证码可能出现在返回包中(不一定必须是响应体中),也有可能出现在前端展示界面(遇到过不止1次),也可以出现在下一次请求中的cookie中。发送给你邮箱的重置密码链接出现在返回包中也可以有用(注意location处)。

 

3-短信验证码不随机

短信验证码当天有效,假如当天是0000,第二天变成了0005,第三天变成0010,如果这种情况出现在注册接口,可以质疑对方自己可能在任意注册数据造假。这种有点少见。

 

4-不校验手机号和短信验证码有没有绑定

获取短信验证码,提交post参数的时候,将手机号替换为自己的,拿到真实验证码,再重新替换为别人的就好,成功进入下一步。这里有一点说明,你的手机号有时候也要是注册手机号才行,有时候不是也可以。

部分网站输入用户名(假如你不知道对方手机号)就可以获取短信验证码,获取的时候,抓包将手机号改为自己的,获取验证码之后,提交进入下一步。

 

5-绕过前端验证

这种情况还是挺多见,输入别人的手机号,获取短信验证码,由于不知道对方的短信详情,尝试输入123456,点击下一步,一般都是报错,可以抓包获取响应体的内容,例如修改false为true,修改404为200。最好是自己注册账户走一遍忘记密码流程,记录下成功时的响应体是什么样的,直接替换对方的报错,如果幸运,直接下一步。有的时候,虽然对方提示重置失败,事实上可能已经成功。

 

6-跳跃式验证

例如重置密码中的第一步url关键词时resetpwd1,进入下一步是resetpwd2,最后一步是resetpwd3,在输入手机号获取了对方的短信验证码之后,修改url中的关键词直接进入最后的密码重置界面,因为你的session id没有变化,服务器认为还是一个人在操作,但是没有校验你有没有提交获取到的短信。绕过前端验证也是一个选择。

 

7-重置密码最后一步修改用户id

很多时候,用户都有自己对应的id,重置密码时如果出现有userid,可以考虑替换这个id数值,从而实现修改对方密码的目的,甚至可以进行批量重置。如果没有id,但是有用户名,一样可以去修改,尝试进行重置。

 

8-替换cookie值

使用自己的账户进行密码重置,进行到最后一步的时候抓包中断。使用对方的账户进行第一步获取短信验证码的操作,复制出对方的cookie,并粘贴到自己账户测试时的cookie请求头中,可能会实现重置对方密码的操作。

 

9-token规律可循

重置密码的链接中有时会有token等的校验凭证,一般都会进行编码,也许时md5,也许是base64等等,可以尝试解码之后,多次比较token的规律(如果不是随机的话),发现其内容的构成,爆破是一个选择。也有可能这个token根本就不变或者每次递增1。

 

10-密码重置凭证长期有效

邮箱重置的链接,在你完成重置之后3天啦,还是有效;短信验证码可以被反复使用。

 

任意密码重置的危害大小除了看业务的重要性,能否实现最大化的重置,是个关键点。如果网站或者app存在注册用户批量猜解,那么你就可以找到更多的账号进行重置,显然比只是简单的重置要有效果。如果可以通过userid进行批量密码重置,那么可以说是威力惊人。

 

上述方法不一定是单独成行,也可以结合使用,同时除了针对忘记密码功能点,在账户注册,账户登录以及后台系统的测试中均可以提供一些思路。

 

除了一般的任意密码重置,csrf在密码重置或修改的地方,一样可以重置对方的密码,xss漏洞获取对方cookie之后,进入后台,也有机会修改别人密码,毕竟对方的cookie不一定长期有效。这些也都算是任意密码重置的范畴。

 

转载于:https://www.cnblogs.com/landesk/p/11212704.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值