破解前一定要有一个强大有效的字典(top100、top2000 、CSDN、QQ、163等常用密码):判断用户是否设置了复杂的密码、网站是否存在验证码、尝试登陆的行为是否有限制、网站是否双因素认证、token值等等
首先对目标网站进行注册,搞清楚账号面膜的一些限制,比如目标站点要求密码必须是8位以上,字母数字组合。则可以按照此有话字典,比如去掉不合符要求的免密
如果破解的是管理后台密码,可使用admin/administrator/root账号几率较高,可使用这三个账号+任意密码字典进行暴力破解,破解过程中一定要注意观察提示,如“用户名或免密错误”,“密码错误”,“用户名不存在”等相关提示。
C/S即客户端/服务器,基于C/S架构的应用程序,如ssh、ftp、sql-server、mysql等,这些服务往往提供一个高权限的用户,而这个高权限的用户往往可以进行执行命令的操作,如sql-server的sa,mysql的root,Oracle的sys和system账号,使用这些高权限的用户能在很大程度上给开发人员带来方便,但如果口令被破解带来的危害也是相当大的。C/S架构主要使用的破解工具Hydra、Bruter、X-scan
一般是对web应用程序中的高权限用户进行蔡姐,如网站的内容管理系统账户,一般针对B/S的宝丽蔡姐,使用BurpSuite镜像表单爆破
API接口暴力猜解参考 https://xz.aliyun.com/t/6330
Hydra 安装
# wget --no-check-certificate https://www.thc.org/releases/hydra-8.1.tar.gz
# tar zxvf hydra-8.1.tar.gz
# cd hydra-8.1
# ./configure
# make && make install
hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns]
[-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV] server service [OPT]
-R 继续从上一次进度接着破解。
-S 采用SSL链接。
-s PORT 可通过这个参数指定非默认端口。
-l LOGIN 指定破解的用户,对特定用户破解。
-L FILE 指定用户名字典。
-p PASS 小写,指定密码破解,少用,一般是采用密码字典。
-P FILE 大写,指定密码字典。
-e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探。
-C FILE 使用冒号分割格式,例如“登录名:密码”来代替-L/-P参数。
-M FILE 指定目标列表文件一行一条。
-o FILE 指定结果输出文件。
-f 在使用-M参数以后,找到第一对登录名或者密码的时候中止破解。
-t TASKS 同时运行的线程数,默认为16。
-w TIME 设置最大超时的时间,单位秒,默认是30s。
-v / -V 显示详细过程。
server 目标ip
service 指定服务名,支持的服务和协议:telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt
http-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc
ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec
rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh smtp-auth[-ntlm] pcanywhere
teamspeak sip vmauthd firebird ncp afp等等。
OPT 可选项
1、破解ssh:
hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip ssh
hydra -l 用户名 -p 密码字典 -t 线程 -o save.log -vV ip ssh
2、破解ftp:
hydra ip ftp -l 用户名 -P 密码字典 -t 线程(默认16) -vV
hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV
3、get方式提交,破解web登录:
hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip http-get /admin/
hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns -f ip http-get /admin/index.php
4、post方式提交,破解web登录:
hydra -l 用户名 -P 密码字典 -s 80 ip http-post-form "/admin/login.php:username=^USER^&password=^PASS^&submit=login:sorry password"
hydra -t 3 -l admin -P pass.txt -o out.txt -f 10.36.16.18 http-post-form "login.php:id=^USER^&passwd=^PASS^:wrong username or password "
(参数说明:-t同时线程数3,-l用户名是admin,字典pass.txt,保存为out.txt,-f 当破解了一个密码就停止, 10.36.16.18目标ip,http-post-form表示破解是采用http的post方式提交的表单密码破解,中 的内容是表示错误猜解的返回信息提示。)
5、破解https:
hydra -m /index.php -l muts -P pass.txt 10.36.16.18 https
6、破解teamspeak:
hydra -l 用户名 -P 密码字典 -s 端口号 -vV ip teamspeak
7、破解cisco:
hydra -P pass.txt 10.36.16.18 cisco
hydra -m cloud -P pass.txt 10.36.16.18 cisco-enable
8、破解smb:
hydra -l administrator -P pass.txt 10.36.16.18 smb
9、破解pop3:
hydra -l muts -P pass.txt my.pop3.mail pop3
10、破解rdp:
hydra ip rdp -l administrator -P pass.txt -V
11、破解http-proxy:
hydra -l admin -P pass.txt http-proxy://10.36.16.18
12、破解imap:
hydra -L user.txt -p secret 10.36.16.18 imap PLAIN
hydra -C defaults.txt -6 imap://[fe80::2c:31ff:fe12:ac11]:143/PLAIN
防止暴力猜解是非常简单的,无论是B/S架构或者是C/S架构,下面总结出一下几点。
1.密码的复杂性
毫无疑问,密码设置一定要复杂,这是最基本的,最底层的防线,密码设定一定要有策略:
2.验证码措施
验证码是一种区分用户是计算机和人的公共全自动程序
使用验证码可以有效地防止:
恶意破解密码
刷票
论坛灌水等
可以说验证码最主要的是防范“机器人“
验证码防范手段
3.限制访问的频率
验证码是一种区分用户是计算机还是人的公共全自动程序,可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较建议的方式实现了这个功能。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以会打出问题的用户可以被认为是人类。
常见的图形验证码是与web中的会话相关联的,在一个会话开始时,在需要使用验证码的地方会生成一个与当前会话相关的验证码,用户识别出验证码后通过填写表单将数据提交给服务器,服务器端会验证此次会话中的验证码是否正确。具体来说,其工作流程如图1所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2P0Ex0VX-1600787880307)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\暴力破解.assets\图1-验证码技术工作原理-298x300.jpg)]
图1 验证码技术工作原理
对用户方来说,用户访问起始页面,识别返回页面中的验证码,在输入验证码和其他信息后提交表单,在服务器处理后可查看到当前操作是否成功。
服务器在接收到用户对初始页面的请求后,会自动创建一个新的会话,同时生成验证码来关联这个会话,并且生成用户可见到的验证码图片,最后这些页面返回到用户的浏览器上,用户此时可看到完整的页面;在接到用户提交的表单请求时,服务器会比较用户提交的验证码值并与之前存储在此会话下的验证码值做比较,如果一致判断验证码是正确,否则认为提交的验证码是错误的,可能是客户端是计算机或者用户识别错误。服务器端进行这些处理后将处理结果反馈给用户。如果提交的验证码是正确的,则按照预定流程进行下一步骤,否则回到需要用户输入的那个界面上。
验证码作为区分人与机器的一道重要屏障,与之相关的对抗技术一直在WEB安全研究上有着重要意义。图片验证码生成算法以及程序实现流程上都有可能带来问题,容易被攻击者突破。
1) 图片验证码的字符空间小
如果选取的字符空间较小,则让验证码识别变得相对简单。字母数字组合的字符集比单纯为数字的字符集效果要好。
2) 图片中的字符规则
字符进行变形,扭曲不利于程序的识别,而对人眼识别是无障碍的,但此方法对生成程序来说有一定的难度。
3) 图片中缺少干扰图案
干扰图案能有效增加验证码的识别难度,并且对生成程序来说代价小。
1) 验证码固定
一般地,用户在开始访问初始页面时,浏览器会向服务器发起页面请求,服务器此时创建会话,同时返回的页面里会嵌入验证码图片地址,浏览器在加载响应页面后,会自动加载验证码图片地址。服务器在接收到验证码图片地址的请求时,会对当前会话生成一个对应的验证码并且返回验证码图片。用户此时根据就可根据验证码图片信息填写表单数据来进行后面的操作,这时,服务器如果检验出提交的验证码是错误的,服务器会返回页面提示错误然后跳转到初始页面,因初始页面内嵌了验证码图片地址,浏览器再次自动刷新验证码页面。
如果验证码输入错误,会在上面的流程里自动刷新验证码,正常情况下,这个过程看起来是没有问题的。但是,由于HTTP请求响应式的工作原理,使得攻击者有可能控制验证码生成页面请求不被触发,使得在服务器上同一会话内,服务器端保存的此会话下的验证码一直有效。
基于此,服务器端的正确处理应该是在验证码检验失败时,就需要设置此验证码失效,同时对生成的每一个验证码也需要设置有效期。
2) 验证码的字符串值出现在返回的响应中
这是属于程序编码考虑不当导致,比如忘记注释掉调试信息导致。验证码可能出现在响应包中的Cookie, URL, 页面注释,甚至验证码在展示的时候直接就是文本方式,这样就完全失去了使用验证码的价值了。
3) 验证码长度可指定
在页面上存在参数可指定验证码的位数,这可简化识别工作。此问题的出现也可能是调试的需要,并发布时忘记注释掉相关代码而导致。
自验证码技术问世以来,其成为自动化程序运行的第一大敌人。在利益的驱动下,突破封锁技术自然也会产生。一般来说,验证码的对抗技术有如下几个方面:
1)避免触发验证码
验证码的引入会带来用户友好度的下降,增加验证码输入以及人眼对验证码识别的可能错误等都会带来不好的使用体验。这对追求用户体验的网站来说,在没遇到可疑行为时,其采取的策略是默认不开启验证码功能,当触发可疑行为识别规则时,才会出现验证码。基于此原理,对攻击方来说,就是尽量避免触发可能出现验证码的规则。一般可疑行为识别是通过检查频繁尝试并且出错这个行为来进行,基于此的对抗措施则是使用不同的IP来进行尝试,或者等待足够的时间再次尝试,这样让目标网站程序认为这些尝试都是正常的访问请求,从而在自动化程序端连续作业时不会出现验证码而达到绕过的目的。
2)验证码固定
从前面的验证码固定问题描述可看出,攻击者可以在同一个会话下,在获得第一个验证码后,后面不再主动触发验证码生成页面,并且一直使用第一个验证码就可循环进行后面的表单操作,从而绕过了验证码的屏障作用。
3)验证码机器自动识别
计算机自动识别验证码,主要原理是通过一定的算法预先建立验证码范围内的字体特征库,再将要识别的验证码通过同样的算法生成特征,与之前保存的特征库进行比较,进而得到图片验证码的值。
一般地,其识别过程有如下图所示的处理流程:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TuHzwqwo-1600787880311)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\暴力破解.assets\图2-验证码计算机识别过程-300x150.jpg)]
图2 验证码计算机识别过程
A. 去噪处理
主要是去掉图像里的所有干扰信息,比如背景的点,线等。
B. 图像二值化
图像二值化就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出黑白效果。图像二值化主要是为了将图像与空白区分开来,方便后续步骤的进行。
C. 切片处理
图片的切片处理是将每个字符所在区域分离成一个个的图片,确保一个图片内只有一个文字。
D. 文字图片标准化
对切片后的每个字符图片,还需要进行变形修复处理,比如旋转,缩放等操作尽量将每一个字符图片都调整到标准格式,减小随机度。
E. 字符模板识别
在最后的字符识别阶段,常用是通过模板对比的方法。模板的生成就是通过上述处理过程后,对给定图片处理后把生成的特征保存下来,并且人工识别输入其对应的字符。在用作识别阶段时,就与保存的每个字符特征模板进行比较,从中找出最相近的一个字符来。
4)人工分布式识别
机器自动识别图片验证码,对简单的情况能有较高的准确率,但对干扰多,变形复杂的图片验证码,其准确率会很差。由于图片验证码重要度增加,复杂的图片验证码被大量使用,导致近年来出现了利用众包力量实现的人工验证码识别平台。
其工作原理图下所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MI6c2gXz-1600787880313)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\暴力破解.assets\图3-人工分布式识别-300x134.jpg)]
图3 人工分布式识别
自动化程序将要识别的验证码发送到打码平台,打码平台再将验证码发放给从事验证码识别工作的人员(俗称打码工作),在人工识别后再将值依次返回到自动化程序。由于是人直接参与了验证码的识别,此方法就让验证码完全失去了屏障功能。
随着验证码攻防技术的对抗升级,验证码技术也出现了一些新的发展动向。
从图片验证码自身的发展来看,主要是围绕增强人脑交互性来展开的,具体来说有如下几个方向:
1)增强干扰和字符变形
从验证码的机器识别可以看出来,增强干扰和字符变形能极大地提高识别难度。像下面的生成的图片验证码,对人眼识别来说都存在着一些难度。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JQMdZxE5-1600787880316)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\暴力破解.assets\字母-300x38.jpg)]
2)拓展字符空间
常见的图片验证码都是数字或者字母,近年来出现了中文字符作为验证码,这样字符空间就增大了很多。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u2oUUK6G-1600787880318)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\暴力破解.assets\字母1.jpg)]
如果字符空间足够大,试图通过制作字符模板库方式来实现识别的难度就变得很大了。
3)增强与用户的互动性
通过增加与用户的互动也可增加难度,但因为这类互动都是通过问答题方式来实现,其题库数量是否足够以及是否具有足够的随机性则成为了关键所在。
如下图所示的问答型验证码:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2lQpNJ8t-1600787880319)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\暴力破解.assets\12306-300x220.jpg)]
从验证码的信息传递途径和方式来看,有如下几个方式
1)增加信息传递途径也
在原来只通过网页来传递信息的基础上增加了其他传递方式,比如手机短信等。对于使用手机短信验证码,需要确保其关联的手机号不为攻击者所控制,否则也将失去保护意义。因为通过在手机里安装特定app软件就可以获得短信内容,这对于手机号码攻击者可控的情况下,验证码可轻松绕过;但如果其攻击场景是账号登陆类的,由于手机号码不可控,则使得暴力猜测变得不可能实施。扩展验证码的传递途径需要结合应用场景来使用,确保此途径不容易被攻击者获得。
2)利用动态令牌进行一次一密
通过动态令牌实现的一次一密方式,就必须通过人工交互才能实现,但此方式也增加了使用成本,只适用于密级要求很高的场合。
3)语音方式
语音方式在当前网络也有出现,但主要只是作为方便盲人使用的一个备用方案,但由于智能手机终端的广泛普及,以后也有可能成为一个主要的验证码发展场景。
随着技术的不断发展,以后还会出现其他方式的验证码,但可以肯定的是基于人脑的思维特性来区别于程序的预设特性,至于以后会如何发展,还是让我们拭目以待吧。
操作验证码,主要是为了解决三个问题:
1、账户暴力破解
2、高频次的接口访问
3、敏感操作二次确认(CSRF)
实际上这三个问题,都属于 人机区分问题,即 这个操作、请求到底是不是人为地、自愿地发出的?
验证码安全,围绕下面几点展开:
1、验证码可重用 (特定账户暴力破解、CSRF)
2、验证码可识别 (特定账户暴力破解)
3、验证码在客户端生成、显示、校验 (特定账户暴力破解、CSRF)
4、空验证码绕过 (特定账户暴力破解、CSRF)
5、验证码数量有限 (特定账户暴力破解)
6、是否校验客户端可控 (特定账户暴力破解、CSRF)
7、验证码可预测 (特定账户暴力破解)
8、错误超过一定次数才开启验证码 (撞库)
我将乌云上所有的验证码案例汇总分析,共有63个相关案例,得到如下统计结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FciwbCIe-1600787880321)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\暴力破解.assets\20190815234732-feb4601e-bf73-1.jpeg)]
这是验证码安全里最常见的一类安全问题,也是最容易遗漏的一类
一般来说,验证码是与Session绑定的,Session生成时,往往也伴随着验证码的生成和绑定。
在访问页面时,接口的请求和验证码的生成通常是异步进行的,这使得两个功能变得相对独立。也就意味着我们如果仅请求接口,而不触发验证码的生成,那么验证码就不会变化。
并且在考虑安全时,开发人员的关注点往往在 验证码校验 是否通过,通过则进入业务流程,不通过则重新填写,而忽视了 这个用户是否按照既定的业务流程在走(接口访问与验证码生成是否同时进行),验证码是否被多次使用了。
理论上来讲,任何验证码只能使用一次或几次,否则就可能导致安全问题
当用户输入正确的验证码时,程序认为其通过了校验,直接进入了业务流程,忽视了验证码销毁重置的问题。
我们可以在输入了正确验证码后,不断重用这一验证码,这导致了 特定账户暴力破解的问题
WooYun这方面的案例有27个
http://www.anquan.us/static/bugs/wooyun-2015-0116594.html 验证正确,未销毁
http://www.anquan.us/static/bugs/wooyun-2016-0169672.html 正确,未销毁
http://www.anquan.us/static/bugs/wooyun-2015-0164315.html 正确,未销毁
http://www.anquan.us/static/bugs/wooyun-2015-0111128.html 正确,未销毁
http://www.anquan.us/static/bugs/wooyun-2015-0110497.html 校验正确后,未销毁
http://www.anquan.us/static/bugs/wooyun-2015-0102697.html 校验正确后,未销毁
http://www.anquan.us/static/bugs/wooyun-2015-099708.html 校验正确后,未销毁
http://www.anquan.us/static/bugs/wooyun-2015-093065.html 校验正确后,未销毁
http://www.anquan.us/static/bugs/wooyun-2014-087890.html 错误,未销毁,可爆破
http://www.anquan.us/static/bugs/wooyun-2014-085942.html 校验正确后,未销毁
http://www.anquan.us/static/bugs/wooyun-2014-084180.html 同上
http://www.anquan.us/static/bugs/wooyun-2014-083092.html 同上
http://www.anquan.us/static/bugs/wooyun-2014-083274.html 同上
http://www.anquan.us/static/bugs/wooyun-2014-082783.html 同上
http://www.anquan.us/static/bugs/wooyun-2014-074661.html
http://www.anquan.us/static/bugs/wooyun-2014-070959.html
http://www.anquan.us/static/bugs/wooyun-2014-056990.html 输入错误时销毁,正确时不销毁
http://www.anquan.us/static/bugs/wooyun-2014-050862.html
http://www.anquan.us/static/bugs/wooyun-2014-049064.html
http://www.anquan.us/static/bugs/wooyun-2013-046547.html 异步机制请求验证码,未销毁
http://www.anquan.us/static/bugs/wooyun-2013-028024.html 同上
http://www.anquan.us/static/bugs/wooyun-2013-025053.html 未销毁
http://www.anquan.us/static/bugs/wooyun-2013-020460.html
http://www.anquan.us/static/bugs/wooyun-2012-013915.html 未销毁
http://www.anquan.us/static/bugs/wooyun-2012-06226.html
http://www.anquan.us/static/bugs/wooyun-2011-03450.html
当用户输入错误的验证码,而程序没有将验证码重置时,也会存在安全隐患
不过验证码的爆破,有什么意义呢?我们本来就可以看到呀
当一个敏感操作的CSRF存在验证码防御,且验证码比较弱时,我们就可以用js写脚本来爆破,绕过防御
这个属于最简单的验证码,过于简单、清晰、可识别性高,可以编写程序进行识别,导致验证码防御体系失效
WooYun中共有7个类似案例:
http://www.anquan.us/static/bugs/wooyun-2016-0204186.html
http://www.anquan.us/static/bugs/wooyun-2016-0194576.html
http://www.anquan.us/static/bugs/wooyun-2016-0176919.html
http://www.anquan.us/static/bugs/wooyun-2015-0120388.html
http://www.anquan.us/static/bugs/wooyun-2012-012722.html
http://www.anquan.us/static/bugs/wooyun-2012-011765.html
http://www.anquan.us/static/bugs/wooyun-2012-010851.html
实际上,比这个更难识别,更复杂的验证码,也有一些准确率较高的识别方法,我们在测试时把握好效果与成本的平衡即可
程序在客户端生成验证码文本,然后向服务端请求该文本对应的 img,导致我们在客户端直接拿到验证码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jNELLkuw-1600787880321)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\暴力破解.assets\20190815234800-0f021132-bf74-1.jpeg)]
程序在客户端生成验证码文本,然后加图层生成img
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K98ZQB5X-1600787880322)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\暴力破解.assets\20190815234821-1b855cca-bf74-1.jpeg)]
程序在客户端生成验证码,并且输出到form表单里的html标签中,可能是为了方便校验?
WooYun中共有5个类似案例:
http://www.anquan.us/static/bugs/wooyun-2015-0161823.html
http://www.anquan.us/static/bugs/wooyun-2015-0146767.html
http://www.anquan.us/static/bugs/wooyun-2015-099909.html
http://www.anquan.us/static/bugs/wooyun-2012-06634.html
http://www.anquan.us/static/bugs/wooyun-2012-012829.html
https://xz.aliyun.com/t/4487
验证码生成之后,向客户端返回了验证码文本(Cookie、body)
WooYun中共有6个类似案例:
http://www.anquan.us/static/bugs/wooyun-2013-023090.html
http://www.anquan.us/static/bugs/wooyun-2012-010524.html
http://www.anquan.us/static/bugs/wooyun-2012-05151.html
http://www.anquan.us/static/bugs/wooyun-2012-03967.html
http://www.anquan.us/static/bugs/wooyun-2014-075186.html
http://www.anquan.us/static/bugs/wooyun-2014-073811.html
https://xz.aliyun.com/t/4533
如果你的代码是这样写的,那就会存在安全问题
if isset($_POST['captcha'])
{
....
}
login();
当验证码为空时,不进入验证码判断流程,直接进入业务逻辑
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rBeqaWO8-1600787880323)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\暴力破解.assets\20190815234851-2d7fb0ce-bf74-1.jpeg)]
WooYun中有6个类似案例:
http://www.anquan.us/static/bugs/wooyun-2015-0150406.html
http://www.anquan.us/static/bugs/wooyun-2013-028061.html
http://www.anquan.us/static/bugs/wooyun-2013-025065.html
http://www.anquan.us/static/bugs/wooyun-2012-014224.html
http://www.anquan.us/static/bugs/wooyun-2012-08287.html
http://www.anquan.us/static/bugs/wooyun-2014-049531.html
当程序使用静态的图片,而不是动态生成验证码时,图片的数量将是有限的。
我们可以将其全部取回并计算md5,以此绕过验证码机制。
WooYun中有2个类似案例,之前的12306也属于这种情况
http://www.anquan.us/static/bugs/wooyun-2015-0102178.html
http://www.anquan.us/static/bugs/wooyun-2012-07413.html
天才才能写出来的验证码校验机制,请求中存在一个字段,来决定是否进行校验,修改为 false(0) 即可
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5CELS9E7-1600787880324)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\暴力破解.assets\20190815234904-35459b02-bf74-1.jpeg)]
WooYun中有5个类似案例
http://www.anquan.us/static/bugs/wooyun-2014-071289.html
http://www.anquan.us/static/bugs/wooyun-2013-034367.html
http://www.anquan.us/static/bugs/wooyun-2013-026219.html
http://www.anquan.us/static/bugs/wooyun-2012-014563.html
http://www.anquan.us/static/bugs/wooyun-2014-082981.html
接口在登录错误超过一定次数后才会开启验证码,这种机制要么是基于ip判断,要么就是基于session判断,要么是基于账号判断
如果是基于Session判断,我们清空session即可绕过。
WooYun中有1个类似案例
http://www.anquan.us/static/bugs/wooyun-2015-0114450.html
如果是基于ip判断,我们可以尝试ip是否可以伪造,或者使用代理池
WooYun中有1个类似案例
http://www.anquan.us/static/bugs/wooyun-2014-080327.html
服务端的限制仅针对于特定账号,比如某账户错误5次以上开启验证码。
这种情况下虽然无法暴力破解特定账户,但是仍然可以实施撞库攻击
WooYun中有2个类似案例
http://www.anquan.us/static/bugs/wooyun-2015-0149748.html
http://www.anquan.us/static/bugs/wooyun-2016-0193985.html
当验证码与时间戳等因素强相关时,就不再具有随机性的属性,导致验证码形同虚设。
WooYun中有1个类似案例
http://www.anquan.us/static/bugs/wooyun-2015-0115041.html
身份验证码主要是为了验证操作人身份,然后进行 密码修改、账户变更、重要操作等功能。
而这类验证码主要牵扯到5类安全问题:
1、验证码返回给客户端
2、业务流程缺陷
3、验证码无时间间隔限制
4、验证码可爆破
5、验证码在客户端生成
将乌云中的案例去重、去无关案例后,有41个身份验证码的案例,分布如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xIi95Xka-1600787880325)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\暴力破解.assets\20190815234926-426d5edc-bf74-1.jpeg)]
服务器将验证码明文返回给客户端,本来觉得这种错误比较低级,没想到这样的案例还挺多。
大致有三种可能,一种是验证码校验在客户端进行,这种错误太低级了,可能性不大。
另一种情况:
1、客户点击获取验证码
2、程序生成一个随机验证码,将参数拼接之后,提交给短信API
3、客户端需要判断是否发送成功,所以程序将短信API返回的内容交给了客户端
作为一个短信API,很有可能会在response中包含了发送的短信内容,导致验证码的泄露
最后一种情况,开发写API的时候,为了方便调试,返回了这些信息,后来忘删了…
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wUQTSIfX-1600787880326)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\暴力破解.assets\20190815234949-50522776-bf74-1.jpeg)]
WooYun中有15个类似案例
http://www.anquan.us/static/bugs/wooyun-2016-0179467.html
http://www.anquan.us/static/bugs/wooyun-2016-0172266.html
http://www.anquan.us/static/bugs/wooyun-2015-0139468.html
http://www.anquan.us/static/bugs/wooyun-2014-085124.html
http://www.anquan.us/static/bugs/wooyun-2014-082114.html
http://www.anquan.us/static/bugs/wooyun-2014-078687.html
http://www.anquan.us/static/bugs/wooyun-2014-066510.html
http://www.anquan.us/static/bugs/wooyun-2014-049813.html
http://www.anquan.us/static/bugs/wooyun-2014-049547.html
http://www.anquan.us/static/bugs/wooyun-2013-042464.html
http://www.anquan.us/static/bugs/wooyun-2013-024195.html
http://www.anquan.us/static/bugs/wooyun-2013-022009.html
http://www.anquan.us/static/bugs/wooyun-2013-019668.html
http://www.anquan.us/static/bugs/wooyun-2014-085124.html
http://www.anquan.us/static/bugs/wooyun-2014-082114.html
涉及到验证码的业务,通常都分为多步进行,比如 修改手机号功能:认证原手机号 -> 填写新手机号
当下一步的业务,没有校验上一步的认证是否成功时,就会存在逻辑缺陷绕过。
填写手机验证码时填任意值,然后修改请求的response包中的标识字段,将其修改为true,即可绕过
实际上这种问题,本质上也是业务流程的逻辑缺陷问题。
虽然验证码的校验在服务端进行,但是下一步的业务,并没有校验上一步的认证是否成功,两者之间是独立的
这就导致我们可以修改response,让客户端直接跳入下一次逻辑,我们也可以审计源码,直接找出下一步的url
WooYun中有5个类似案例
http://www.anquan.us/static/bugs/wooyun-2015-0151201.html
http://www.anquan.us/static/bugs/wooyun-2015-0120951.html
http://www.anquan.us/static/bugs/wooyun-2015-0119252.html
http://www.anquan.us/static/bugs/wooyun-2015-0104509.html
http://www.anquan.us/static/bugs/wooyun-2015-090379.html
在验证码校验过程中,程序应严格检查对应关系,即 接收验证码的手机号,是否是该账户对应的手机号
如果不存在这处对应关系校验,则会衍生出各种逻辑问题,比如用自己的手机通过验证,然后修改其它人的信息
其实这种情况下,也是存在业务流程缺陷的问题。下一步的业务,并没有校验上一步业务中,手机号是否是属于该账户的
http://www.anquan.us/static/bugs/wooyun-2015-0102205.html
http://www.anquan.us/static/bugs/wooyun-2011-03099.html
http://www.anquan.us/static/bugs/wooyun-2014-080315.html
服务端对用户请求短信的频次没有时间间隔限制,或者是在客户端限制,可导致短信资源滥用
没有基于session、ip、账户的限制,属于完全无限制的情况
http://www.anquan.us/static/bugs/wooyun-2012-010102.html
http://www.anquan.us/static/bugs/wooyun-2012-010556.html
http://www.anquan.us/static/bugs/wooyun-2012-04876.html
http://www.anquan.us/static/bugs/wooyun-2012-04771.html
http://www.anquan.us/static/bugs/wooyun-2012-04166.html
http://www.anquan.us/static/bugs/wooyun-2012-04022.html
http://www.anquan.us/static/bugs/wooyun-2011-01188.html
http://www.anquan.us/static/bugs/wooyun-2011-03485.html
当验证码太弱(4-6位数字),且服务器没有错误次数限制时,则会存在可爆破的问题
WooYun中有7个类似案例
http://www.anquan.us/static/bugs/wooyun-2015-0155994.html
http://www.anquan.us/static/bugs/wooyun-2013-017242.html
http://www.anquan.us/static/bugs/wooyun-2013-016896.html
http://www.anquan.us/static/bugs/wooyun-2012-016179.html
http://www.anquan.us/static/bugs/wooyun-2013-031605.html
http://www.anquan.us/static/bugs/wooyun-2013-040908.html
http://www.anquan.us/static/bugs/wooyun-2012-012377.html
以重置密码业务为例:用户输入手机验证码 -> 用户提交新密码
为了解决业务流程绑定的问题,通常两个步骤的参数中都会带有验证码。
开发人员往往只注意到第一个接口,而忽视了第二个接口。此时,在第一个页面中使用自己的手机号通过验证,第二个页面中修改为他人手机号并爆破
WooYun中有1个类似案例:
http://www.anquan.us/static/bugs/wooyun-2015-0133289.html
这种情况下,客户端生成一个验证码发送给服务端,服务端将这个验证码拼接,然后请求短信API发送短信
天才才能想出来的办法
WooYun中有2个类似案例
http://www.anquan.us/static/bugs/wooyun-2014-086716.html
http://www.anquan.us/static/bugs/wooyun-2013-022378.html
图形验证码是现在大多数网站登录通行的方式。不同的网站,由于其安全级别不一样,网站开发人员掌握的技术不一样,使用的图形验证码的种类也不一样。大体上,图形验证码可以分为以下几类:
主要是通过用户输入图片中的字母、数字、汉字等进行验证。
代表:大多数网站采用此种验证形式。
特点:简单易操作,人机交互性较好。但安全系数低,容易被破解。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XB2pYkPo-1600787880327)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20190104105523420.png)]
有精美图案,识别文本也清晰可认,专注于广告。
代表:Solve Media,宇初验证码
特点:与其说是验证码,倒不如说是广告位。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7LmXR2mM-1600787880328)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\2019010413461084.png)]
按要求将备选碎片滑动到正确的位置,或者滑动图标到末尾
代表:极验验证码
特点:操作简单,体验好。单一纬度,容易被逆向模拟,与移动端页面切换不兼容。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mIcl2OTm-1600787880329)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20190104134758102.png)]
给出一组图片,按要求点击其中指定的一张或者多张图片。
代表:点触验证码、Google新型验证码、12306验证码
特点:安全性强,对于图片、图库、技术要求高。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-00zeBptc-1600787880330)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20190104134856809.png)]
通过文字提醒用户点击图中相同字或者相同图标的位置进行验证。
代表:淘宝新型验证码、点触验证码
特点:操作简单,体验良好,单一图片区域较大,破解难度大。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AlXB5s0q-1600787880331)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20190104135157478.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E68WIbiG-1600787880332)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20190104135619907.png)]
通过行为特征、设备指纹、数据风控等技术,正常用户免验证,异常用户强制验证
代表:点触智能验证码,支付宝验证码
特点:简单便捷,区分人与机器、人与人、设备与设备
通过机器客服给你打电话,告诉你验证码
代表:滴滴验证码,易到验证码
特点:需要接听客服电话,体验较差,无法破解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XBXj92GY-1600787880333)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20190105120347103.png)]
注意:这里需要注意的是,Session ID销毁的条件是用户提交的图形验证码和用户名密码等其他信息正确,即登录成功,或者是用户手动刷新验证码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XTx1WzHA-1600787880334)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20190104142647372.png)]
既然图形验证是用来抵御机器自动化攻击,防止恶意破解密码、刷票、论坛灌水,防止黑客攻击等威胁的一种手段。道高一尺魔高一丈,那么恶意用户肯定会想方设法去绕过或破解图形验证码,来达到其恶意的目的。图形验证码面临的安全问题来自多方面的,既有客户端的问题,也有服务器端的问题,也有验证码本身的技术问题。
比如现在很多类型的图形验证码已经可以通过技术手段识别绕过了,识别图形验证码是计算机科学里的一项重要课题,涉及到计算机图形学,机器学习,机器视觉,人工智能等高深领域。
图片灰度化和****图片二值化
传送门——> https://blog.csdn.net/qq_36119192/article/details/86012022
文字分隔
为了能识别出字符,需要对要识别的文字图图片进行分割,把每个字符作为单独的一个图片看待
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ROvrrQyx-1600787880334)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20190104195114498.png)]
标准化
对于部分特殊的验证码,需要对分割后的图片进行标准化处理,也就是说尽量把每个相同的字符都变成一样的格式,减少随机的程度,最简单的比如旋转还原,复杂点的比如扭曲还原等等
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i2k0dwxd-1600787880335)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20190104195326253.png)]
识别
这一步可以用很多种方法,最简单的就是模板对比,对每个出现过的字符进行处理后把点阵变成字符串,标明是什么字符后,通过字符串对比来判断相似度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q3oPWUTn-1600787880336)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20190104195651390.png)]
最好的识别算法,就是神经网络,神经网络是一种模拟动物神经元工作模式的算法,神经网络有多种不同的结构,但是基本架构分为输入层,隐含层和输出层,输入和输出均为二进制。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6fhnnxha-1600787880336)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20190104195812163.png)]
1.基于表单的暴力破解
尝试输入用户名、密码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-csr7j0PE-1600787880337)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\2019111116300387.png)]
结果如下:用户名或密码不存在
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X1KUttbX-1600787880337)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191111163142351.png)]
源码分析:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7fW0P0lS-1600787880338)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\2019111211223038.png)]
打开代理,使用burpsuite抓包,进行用户名和密码破解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WUPufxV3-1600787880339)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191111165007555.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N3xvx68f-1600787880339)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191111165727939.png)]
设置爆破项,添加$符号
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jnnKTSMD-1600787880341)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112091933412.png)]
添加payload,如果有密码本可进行上传
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sOOVbzlG-1600787880342)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112092427445.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Bhx2IUD-1600787880343)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\201911120924589.png)]
添加完成后,可根据需要是否在option中的选项修改线程数,另外需要进行grep-match
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sFfH7R4T-1600787880344)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\2019111209261837.png)]
单击右上角start attack,开始破解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2hUKxUh2-1600787880346)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112092727807.png)]
破解结果如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nRIV1YeH-1600787880348)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112093100658.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GH7Hsb1m-1600787880349)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\2019111209354549.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gSxNrTY2-1600787880350)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112094116724.png)]
将爆破结果验证登录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W1peluy4-1600787880351)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\201911120947193.png)]
2.验证码绕过(on server)
将用户名、密码、验证码错误输入,使用burpsuite抓包如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eJGzgVmZ-1600787880352)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112121225960.png)]
可知,后台对验证码进行了逻辑判断。
源码分析:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-03ovGzL1-1600787880353)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112113448726.png)]
查找验证码生成文件[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lQfYOlNC-1600787880354)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112114111845.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IDxkrJ2D-1600787880356)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\2019111211435427.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hMmwLoQz-1600787880357)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112114540251.png)]随机生成字母数字组成的6位验证码
漏洞利用:
在刚才burpsuite抓取的包中,将验证码vcode的值修改为正确值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q7wJUhCM-1600787880358)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112121823884.png)]
接着对用户名和密码进行爆破
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zeKfR9QN-1600787880359)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112141526704.png)]
3.验证码绕过(on client)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8uW5PdB8-1600787880360)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112161416608.png)]
单击确认后,验证码会重新刷新,因此必须输入正确的验证码后,再使用burpsuite抓包。用户名、密码随意填写。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gS5KptIx-1600787880361)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112161748928.png)]
代码分析:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kGgKct4Z-1600787880362)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112145331910.png)]
用户名、密码依旧没有什么有效的防护措施,接着看验证码,从A–Z、0-9组合随机产生五位数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-55y1ouE1-1600787880363)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112145535265.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fJKjQfui-1600787880363)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112145738503.png)]
根据抓包后,继续可以进行用户名、密码的爆破
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ShU4bcbT-1600787880364)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112164805105.png)]
4.token防爆破?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SkyAOhWs-1600787880364)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\2019111217110361.png)]
随意输入用户名、密码,使用burpsuite进行抓包
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jd8o5FnJ-1600787880365)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112171655527.png)]
代码分析:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uwrczv75-1600787880365)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112172850822.png)]
下面这条语句中的 S E E S I O N [ ′ t o k e n ′ ] 很 显 然 是 加 载 页 面 时 产 生 的 , 而 从 前 端 页 面 F 12 下 的 t o k e n 的 v a l u e 值 相 当 于 _SEESION['token']很显然是加载页面时产生的,而从前端页面F12下的token的value值相当于 SEESION[′token′]很显然是加载页面时产生的,而从前端页面F12下的token的value值相当于_POST[‘token’],从上面抓到的token值与页面下看到的值相等,即 P O S T [ ′ t o k e n ′ ] = _POST['token']= POST[′token′]=_SEESION[‘token’]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ygrsGaMJ-1600787880366)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112173135521.png)]
接下来保证token值不变的情况下,进行暴力破解,由于是三个变量,因此选择Pitchfork类型爆破,如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3nw2brF7-1600787880366)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\2019111222582118.png)]
设置线程数为1,保证只有获取上一个请求返回的taken值才能,做下一次请求
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ufhAEUJo-1600787880367)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112230238653.png)]
在Options中的Grep-Extract选择Add,出现如下图所示,点击Refetch response 获取返回的包,找到返回的token值,选中并复制下来。点击确定(注意:一定要在选中token的状态下点击确定)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ImOLBIOQ-1600787880367)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112231039320.png)]
接着下拉options中到redirections模块选择always
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-An0vuUEk-1600787880368)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112231431867.png)]
通过筛选规则Recursive grep(匹配),拿到上一个返回包的taken值放在这次taken值的变量里面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X8XYojXK-1600787880368)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\2019111223192160.png)]
payload1和2设置同之前爆破用户名、密码一样,上传密码本
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b8c4PLn9-1600787880369)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112232052219.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oh0KTXqY-1600787880370)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112232111945.png)]
最后,进行start attack,开始暴力破解
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ybflnDu9-1600787880370)(C:\Users\79021\Desktop\笔记\渗透测试\其他漏洞\浅谈暴力破解及验证码安全.assets\20191112232811106.png)]
很明显,爆破成功,获取用户名、密码。