当前位置:首页 » web渗透 » 正文

手机短信验证码渗透测试实战

702 人参与  2021年01月27日 09:22  分类 : web渗透  

验证码绕过

一般情况网站或者其它的业务系统在找回密码时都会通过手机号或者邮箱来验证用户身份。但是可悲的是他们在验证的过程中产生了一些逻辑错误。


什么错误呢?大概是这样的,用户输入手机号,点击获取验证码,服务端校验手机号是否正确,正确则返回类似errno=0的参数,不正确则返回类似errno=-1的参数,然后客户端通过js判断服务返回的值,如果返回errno=0,那说明手机号正确,调用发送验证码的服务,否则不调用并提示手机号错误或不存在。这里的错误点就在于不应该由服务端返回errno这个参数再由客户端来验证,应该是服务端验证完手机号后直接做出操作,如果手机号正确则直接调用发送验证码的服务,不正确则直接返回手机号不存在之类的提示。


以下是一次测试记录,已经进行脱敏,如发现敏感信息,请及时联系删除!

找回密码页面

1.png

随便输入一个手机号

2.png

查看响应

这里返回error=-1,这个-1表示手机号不存在,error等于其它值标准其它内容。

3.png

不更换手机号,拦截响应包

回到proxy模块,拦截响应包,我们把-1改成其它值试试

4.png

点了好多下forward,终于看到了errno=-1

5.png

我们把errno=-1改为errno=0,这里的思路就是0代表的是没有错误,验证成功,-1代表手机号不存在

6.png

不停的点forward,又出现errno=-1,再次改为0,同上

7.png

接着就看到了验证码发送成功,这是不是就说明我们可以通过修改error的值来绕过这个系统的判断了呢?,但是我们知道,我们的手机号是接不到验证码的怎么办呢?

8.png

尝试绕过验证码

其实同理,按照我们上面操作继续干就行,随便输入一个验证码,如果响应包中出现errno=-1,我们就改为0

9.png

神奇的一幕出现了,我们的手机号绕过了,验证码也成功绕过。ok点到为止,不敢瞎搞了,咱只是说说思路,也不敢真的修改!

gaitubao_11.png

验证码重放

所谓的验证码重放就是指服务端代码没有严格校验对于验证码发送服务的调用而导致的。这里的逻辑在于客户端点击发送验证码后,浏览器提示60s后重试,但是服务端没有校验同一用户是否在指定时间段内进行多次发送验证码请求。

遇到需要手机号获取验证码的情况,直接浏览器开代理,bp上拦截,把获取验证码的请求拦截,发送到repeater模块,进行重放,看你的手机是否能够收到多个验证码,如果可以说明存在验证码存放漏洞。

输入能接收短信的手机号

10.png

将请求发到repeater模块

将请求包发送到repeater模块,我们多点几次go,看看我们的手机是否会收到相应点击数量的验证码信息,如果收到了说明存在验证码重放漏洞,否则不存在。

gaitubao_15.png

查看收到的信息,发现存在验证码重放漏洞

12.png

来源:零零博客(微信/QQ号:1586173648),转载请保留出处和链接!

本文链接:https://www.00bk.cn/wz/52.html

<< 上一篇 下一篇 >>

零零博客

网站地图 | 数码资讯 | 9911影视 | 频道号 | 互联网络 | 秒懂知识

赣ICP备2021007898号-1