- 每日一句:果实总是属于勤奋开垦的人们
- 本篇内容:验证码的作用
验证码绕过的常见姿势
密码找回漏洞
实战注意
一、验证码的作用
1.之前都是普通漏洞,今天开始的都是逻辑漏洞
逻辑漏洞:
~不是代码层面的错误
~另外逻辑漏洞基本可以是通杀
~现在的很多大厂,基本不会有普通漏洞,但是逻辑漏洞是很难避免
2.本质:
简单的说,验证码是为了区分用户是计算机还是人的一种全自动工具
3.作用:
利用较为简单的程序就可以有效防止:密码破解、刷票、论坛灌水(霸屏)等等
二、验证码绕过的常见姿势
1.绕过方向
通过验证码的逻辑进行入手
通过python、Golang等程序自动识别
2.额外增加
假如通过验证码绕过爆出后台可以提交两个漏洞
~验证码绕过—逻辑漏洞基本
~后台弱密码
//不出意外,一个高危,一个中危
3.登录处绕过
~前端验证验证码,并没有后端验证。直接抓包然后进行跑数据包
~验证码设置了但是并没有校验,乱输验证码也能够成功的登录 (少见)
~验证码有规则,比如是时间戳的后6位
~验证码可以重复使用,比如现在的验证码1111,然后虽然你登录失败后
验证码会变,但是你输入1111他却判定你验证码正确 (常见)
~验证码空值绕过,比如,我们现在抓一个包,发现登录参数是
user=admin&password=admin&yzm=4123。 yzm验证码参数,
但是我们如果去掉yzm的传参我们就可以绕过验证码机制,
直接传参user=admin&password=admin,验证码就失效了(常见)
三、密码找回漏洞
1.理解
主要是一些短信验证码登录,这类验证实际上是区分身份的,比如平时登录的
微信、QQ、支付宝等等,当你QQ密码忘记时,会要求你输入验证码。
这类验证码一般都是5-30分钟的时效性,但是如果没有做限制,是不是可以
直接进行穷举爆破~~
2.常见漏洞
~验证码无次数限制可爆破
~验证码可控
点击获取验证码,抓包,发现包内有传参,比如:yzm=2020,
放包,手机接到验证码为2020。假如这样的话,就很危险。
因为包内的另一个参数:phone,也就是手机号。
被人利用的话,就可以发送大量垃圾短信,钓鱼链接。
例如:
phone:110&yzm:I want to go in
~验证码发送后前端返回
点击获取验证码后,抓包,放包,会将验证码返回给前端抓包处
这样是不是可以任意修改别人的密码
~直接跳转修改密码页面
正常步骤:
输入找回密码账户,给浏览器cookie,
点击获取验证码,输入正确的验证码,
跳转到A站(修改密码的站)
攻击步骤:
输入找回密码账户,给浏览器cookie,
修改发包,直接伪造请求跳转A站的数据包,
跳转A站
~缺失的身份认证–>绑定别人的账号到自己的手机 //(常见)
点击获取验证码,抓包,看内容有:
userid=‘自己账户id’&phone=‘自己手机号’
假如服务端不进行userid与phone进行校验,直接攻击
攻击步骤:
点击获取验证码,抓包,
改userid=‘别人的id’&phone=‘自己的’
然后就成功修改别人密码,只要知道别人的账户就可以了
3.密保改密码
~密保问题可能容易直接被猜测
很多学校知道学号与身份证号即可找回密码
而这些信息可以谷歌语法很容易得到
~密保问题答案页面中显示(即验证码前端返回,一个道理)
四、实战注意:
1.无限制爆破
~找回密码时,没有限制,可以无限次爆破时。万一卡住了,burp不动了
这是将站跑出点小问题。
~此时,暂停burp,刷新页面,直到页面正常在再继续爆破
~这样还不行,只能记录跑到哪了,重新爆破
2.验证码找回的靶场,第一反正直接找后台
找到后台登录,账户admin,密码sb,验证码正常输入。登录,抓包
放到重发器,发送,密码账户不匹配,再发送,密码账户不匹配,
这应该可以想到,验证码可以重复使用。可以确认一下:
假如验证码本来是:1111,改为1112试试,提示验证码错误
在改回1111,发送,账户密码不匹配。确认,验证码可以重复使用。
接着就是爆破密码了
3.burp爆破
一般看长度与状态码,部分网站返回都一样。这时就得注意看看包的内容
要点: 不要仅仅盯着长度与状态码,注意内容
另一种取巧的办法:直接在原网页刷新一下,因为,有的账户密码试正确了
注意:将网页稍微删除点东西,比如:
本来是1.1.1.1/admin/login.php 刷新的时候刷新的这个页面:
1.1.1.1/admin
**本质是:**你跑成功了,你的cookie被赋予了管理员权限
4.小技巧
~后台账户 %80是admin
~burp爆破 防止被IP被拉黑,多几个IP去试试线程,调低线程
一般情况下,默认的5个线程不会被ban
五、总结
- 熟练掌握验证码绕过原理和密码找回漏洞