[TOC]
验证码绕过
验证码绕过的常见姿势
- 验证码可重用
- 验证码再客户端进行
- 验证码可识别
- 空验证码绕过
- 是否校验客户端可控
- 错误超过一定次数才开启验证
- 验证码数量有限
- 验证码可预测
具体绕过情况
一、前端验证验证码
只在前端验证验证码,并没有后端验证。直接抓包然后进行跑数据包,反正又没有验证码的阻碍。
二、验证码未校验
验证码设置了,但是并没有校验,乱输验证码也能够成功的登录。
三、验证码可重用
验证码可以重复使用,比如现在的验证码1111,然后虽然你登录失败后验证码会变,但是你输入1111他却判断该验证码正确,比如验证码多少分钟内有效!
https://www.uedbox.com/post/14207/
四、验证码空值绕过
验证码空值绕过,比如,我们现在抓一个包,发现登录参数是user=admin&password=admin&yzm=4123
验证码参数为yzm=4123
但是我们去掉yzm的传参我们就可以绕过验证码机制,直接传参user=admin&password=admin
,验证码就失效了。
https://www.uedbox.com/post/22266/
五、验证码可识别
验证码较简单,易于识别,轻松使用脚本识别。
https://www.uedbox.com/post/10085/
六、验证码会在HTML页面输出
验证码直接给到了前端中,通过再前端提取该验证码每次更新替换输入即可。
https://www.uedbox.com/post/16869/
七、验证码可控制
验证码可控制,比如他的验证码是否开启包含在URL里面,是一个URL传参,我们可以把URL验证码设置更改,那么验证码就取消掉了,可控制。
https://www.uedbox.com/post/29913/
八、验证码有规则
验证码有规则,比如是时间戳的后6位(rand函数进行随机数)。
九、万能验证码
存在万能验证码,验证码无论是什么,只需要输入000000就能直接绕过。
十、验证码存在Cookie
验证码有的时候会藏在Cookie
里面,分析一下是不是验证码的参数。
十一、图片验证码
图片验证码,但是类型台是,容易识别。
https://www.uedbox.com/post/24112/
十二、多次登录才需验证码
多次登陆失败后才需要输入验证码:
- 基于
Session
:https://www.uedbox.com/post/22043/ - 基于
IP
:https://www.uedbox.com/post/28442/ - 基于用户:爆破用户名,而非爆破密码!
十三、验证码登录
如果账号支持账号+验证码登录的,如果没有对次数做限制,我们可以尝试是否可以通过爆破验证码,来进行尝试登录。
密码找回漏洞
找回密码
找回密码,往邮箱发送明文或密文的密码或者验证码(手机短信验证就是往你手机号号码发送验证码),通过这样的方法来判断是否是本人。
重置密码连接
密保问题(偏社工)
在注册之前,通过预先设定密保问题,忘记密码时,通过此密保进行认证,认证就成功进入密码修改页面:
- 密保问题容器直接被猜测(比如很多学院的知道学号和身份证号码九可以重置校园通的密码)
- 密保问题答案页面中线上(数据包里面可能自带了密保答案,可能在JS里面)
密码找回常见的漏洞
- 验证码返回给客户端
- 业务流程缺陷
- 验证码无时间间隔限制
- 验证码可爆破
- 验证码在客户端生成
具体绕过情况
一、验证码发送后前端返回
可能发送短信后,服务器直接给验证码通过返回码,返回给数据包中。
https://www.uedbox.com/post/13890/
二、验证码无次数限制可爆破
验证码几分钟内有效,由于短信验证码位数的限制,计算机可以快速爆破验证码!
https://www.uedbox.com/post/15675/
三、验证码可控
通过请求直接随机数传递,并不是服务端生成,用户可以自行更改传参中的验证码!
https://www.uedbox.com/post/26992/
四、直接修改密码页面
正常逻辑:页面1=》页面2=》页面3,我们跳过中间页面,直接进入修改密码页面。
https://www.uedbox.com/post/35739/
五、越权漏洞
通过抓取数据包,把需要发给用户的验证码,发到自己的手机,然后修改他们密码。或者修改用户的密码,通过修改数据包将传参中的用户手机号,改为自己的手机号,接收验证码,修改密码。用户无感知!
https://www.uedbox.com/post/24098/,https://www.uedbox.com/post/42136/
靶场实战
由于靶场是一个CMS所以我们先本地自建靶场模拟!找出漏洞所在!
自建靶场
1.自建靶场
2.找的存在危险的点
3.爆破密码
4.登录
5.代码审计,得到写文件漏洞
6.抓包处理
因此本地的写入木马流程跑通!
线上靶场
1.靶场地址
http://59.63.200.79:8020
2.爆破密码
3.抓数据包,写入木马
4.连接菜刀
常见问题
验证码绕过,密码找回漏洞
1.验证码是什么?
验证码分两种:
1. 验证码是一种区分用户是计算机还是人的公共全自动程序(比如登陆的时候要填写的)
2. 识别身份,比如短信验证码、电话验证码、邮箱验证码。
2.验证码有哪几种
有中文字符,纯数字,点击字符、数学运算,移动方块等等
3.验证码有什么作用
可以防止恶意破解密码、刷票、论坛灌水,有效防止黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。
4.验证码一定可靠吗
不一定可靠,验证码如果在书写代码的时候存在逻辑漏洞,就比较容易绕过。即使没有逻辑漏洞,如果验证码的图片混淆比较简单,可以写脚本自动识别(python有)
5.验证码的常见安全问题
一.前端验证验证码,并没有后端验证
二.验证码设置了但是并没有效验
三.验证码可以重复使用
四.空值绕过
五.验证码可控制
六.验证码有规则
七.有万能验证码
八.验证码放在cookie参数里
6.前端验证码如何绕过
直接抓包进行,因为后端没有验证
7.验证码的规则一般是什么
有很多种,不一定,要看代码怎么写,很多时候使用的rand函数生成随机数
8.万能验证码一般是什么
一般是000000 或者 888888
9.验证码空值绕过是怎么回事
去除数据包里的验证码参数,发现绕过了传参机制,你不传这个参数,然后就没有进入验证码校验流程
10.验证码可控是什么情况
验证码可能存在于url传参里,url设置定,验证码可控
11.验证码放在cookie参数里要怎么去找
查看cookie参数里有没有相应的值(验证码或相应参数名)
12.验证码有时效性吗
一般来说会有时效性,常见的是30分钟
13.密码找回有哪几种方法
1.通过邮箱发送重置链接或数字|字符串验证码
2.通过短信发送验证码
14. 密码找回一般有什么安全问题
1.验证码发送前端返回
2.验证码输入无次数限制
3.验证码可控
4.直接访问修改密码页面发现直接可以改(缺失身份认证)
5.越权(自己手机的验证码,把别人密码改掉了)
6.密码保护问题出存在缺陷
15. 前端返回怎么利用
查看返回的数据包(可以通过浏览器或者抓包工具)
16. 验证码可控有什么危害
可以发送垃圾邮件,钓鱼网站链接,不良网站链接
17. 直接修改密码页面是什么情况
一般是验证失败后还可以继续访问密码修改页面
18. 缺失身份认证是什么情况
缺少相应的用户id和信息验证,可以用自己的手机号绑定他人的账号
19. 越权是什么
通过自己的验证码,改包,去修改别人的密码
20. 越权和缺失身份认证的区别
平行越权需要登录后使用,而缺失身份认证不用
21. 密码保护问题有哪些缺陷
1. 容易被猜测
2. 答案在js里出现
22. 如何去猜测别人的密码保护问题的答案
通过蛛丝马迹分析,然后调用可用资源,去社工。
23. 验证码在cookie里会加密吗
会,可能会通过md5之类的进行加密
24. 校验验证码一般有哪些生成规则
可能对用户的用户名,密码,登陆时间之类的进行生成(这个可能性太多了,不过时间戳是比较常见的,以前遇到过,邮箱找回链接,只需要时间戳和用户名就可以修改密码,那样就能尝试爆破,自己先接一个看看规律)