验证码漏洞【逻辑篇】

短信验证码漏洞

常见于绑定手机号、 重置密码、用户注册等功能点中

一、验证码回显

原理

把验证码校验的功能放到客户端来进行(返回数据包中、客户端页面中),从而导致验证码在客户端回显

利用

通过抓包工具可以截取真实验证码(如mobile_code=)

二、前端验证码

原理

验证码由客户端js生成并且在客户端用js验证,现常见于app和小程序中

特征

验证码由前端验证有个最大的特征就是对字母大小写敏感

绕过方法

方法一:使用插件禁用js
方法二:拦截修改返回包

①使用burp拦截正常账号获取验证码通过时服务器返回数据
②分析返回数据中成功时的数据
③再通过输入错误的验证码,来拦截服务器会返回错误验证码的数据包
④使用保存的信息里面的验证成功的数据,进行替换

三、验证码与手机号未绑定

原理

通过抓包修改参数中的手机号,将验证码发到自己手机号上

参考案例

https://mp.weixin.qq.com/s/rtcJjAQFaaM-65zUYwu8Cg

四、验证码爆破

原理

服务端没有对验证次数以及失效时间进行限制,并且验证码不大于6位数
//这种漏洞已经很少见了,常见于没有维修的旧网站

五、验证码复用(容易被忽视的漏洞)

当用户名或者密码错误时,验证码依旧不失效,这时候就可以对用户名或者密码进行爆破

原理

Session存在有效期,验证码使用后未被销毁,只要不刷新网页session就不会失效

利用

使用burpsuite的intruder模块进行爆破即可
//有些网站会弹出新的网页或者弹窗警告,只要不点击返回,验证码就不会刷新

六、无效验证码

原理

存在接口问题,因为每个功能都会被设为不同的模块进行耦合,如果出现验证模块与功能没有没有通过接口关联上,此时2模块不存在如何关联,所以无论输入谁收到的验证码,都可以通过
//此类漏洞多见于新、小网站

利用

(1)用自己手机号获取验证码
(2)换个浏览器,使用目标手机号发送验证码
(3)再将自己手机获取的验证码填入验证框中

七、验证码重放(短信轰炸)

原理

对发送验证码的次数、时间限制不严格,导致可以对短信验证码接口进行重放,大量发送恶意短信
//属于低危漏洞

找回密码漏洞

(姿势一)重定向

//常见于白盒审计

原理

通过将修改密码url上的参数进行修改,达到重定向到其他账户的修改密码url

黑盒测试

(1)查看在功能点url中是否包含验证身份的相关参数
(2)如果有,就url修改相关参数
(3)如果能实现重定向就成功,否则失败

演示案例-海洋cms

(1)首先,我们使用海洋cms找回密码的功能点,这里很明显可以看到url上的repswname参数是用于验证账号的

(2)这里的repswcode参数有一个设定,初始化没有修改过密码的账号的repswcode默认为y

(3)所以我们只需将repswcode=y,repswname=其他用户名,就可以重定向到其他用户的修改密码页面了

(姿势二)修改返回值

参考本文的:短信验证码漏洞_二、前端验证码_绕过方法_方法二

图形验证码识别工具

xp_CAPTCHA (白嫖版)

参考文章

(白嫖版)burp插件 xp_CAPTCHA验证码识别_Punished

(踩坑一)安装muggle-ocr库

用pip install安装,报错:

ERROR: Could not find a version that satisfies the requirement muggle-ocr (from versions: none)
ERROR: No matching distribution found for muggle-ocr

原因:
muggle-ocr库已被python官方移除了,无法用pip install安装,更换国内的镜像源也没有用
但可以通过安装包离线手动安装

链接:https://pan.baidu.com/s/1snmVd6RmGRzx5U8_IM9E4Q?pwd=pt3a
提取码:pt3a

下载好压缩包以后,直接使用pip install语句即可

pip install muggle-ocr-1.0.3.tar.gz -i https://pypi.douban.com/simple

注意!!!
笔者是用python 3.7.4安装的,不知为何用python3.6版本会报错

(踩坑二)burp安装python扩展

需要先安装jython环境

(1)在官网下载jar包
https://www.jython.org/download.html

(2) 在Burp上配置jython环境

操作演示(一)xp_CAPTCHAV3.2白嫖版

(1)先将数据包发送到intruder模块,攻击类型选择Pitchfork(交叉),把要爆破的位置和验证码位置添加到payload中

(2)在包中加入一行
xiapao:(图像验证码url链接)

(3)在payload选项中,我们前面的userid和pwd对应的就是payload set 1和2,这里我们使用的攻击类型,我们用默认的Simple list就行了

(4)在payload set 3中,攻击类型选择 Extension-generated,扩展程序选择 xp_CAPTCHA

(5)成功爆破

操作演示(二)xp_CAPTCHA_api V2.2收费版

(1)先登录,然后填写图像验证码url地址,选择对应的验证码类型(这里选择数英混合)

(2)先将数据包发送到intruder模块,攻击类型选择Pitchfork(交叉),把要爆破的账号和密码添加到payload中,验证码位置填写@xiapao_api@1@

注意!!!

(3)在resource pool(资源池)中将线程调整为1,不然验证码识别不出来

(4)爆破成功

posted @ 2023-01-31 15:52  bcxc9405  阅读(385)  评论(0编辑  收藏  举报
/*
*/