什么是验证码?
CAPTCHA是(全自动区分计算机和人类的图灵测试)的简称,是用于区分计算机和人类的一种程序算法,这种程序必须能生成并评价人类能很容易通过但计算机却通不过的测试。
像我们平时最常遇到的,就是基于图片的验证码。这类图片验证码通常包含的,都是些易于用户识别简单的验证信息。如下图所示。用户必须准确的识别图像内的字符,并以此作为人机验证的答案,方可通过验证码的人机测试。相反如果验证码填写错误,那么验证码字符将会自动刷新并更换一组新的验证字符,直到用户能够填写正确的验证字符为止。
验证码的重要性:
防止与认证相关的攻击行为:
以下列举的是一些较易受到暴力攻击的点。例如:
- 登录:一旦缺少验证码的保护,攻击者则很可能通过暴力破解的方式非法接管用户账户。
- 忘记密码:如果网络应用程序使用详细消息响应帐户存在或不存在,那么攻击者则可以进行用户名的枚举。
- 注册:程序批量创建垃圾账户。此外还可以进行用户名的枚举。(正常情况下没有应用程序会允许用户,同时注册两个相同用户名的账号)
避免垃圾邮件和DOS:
我们知道很多网站都有提交表单的功能,并需要由站点管理员审核通过。例如:会员申请,联系我们,反馈表,调查表等。这些功能都需要验证码的保护,如果不加以防护那么将会导致以下情况的出现:
- 大量的垃圾表单可能产生,不仅会影响网站的访问速度,还会加大站点管理员的工作量,而且一些合法用户的请求,也可能会因此被拒绝。
- 电子邮件轰炸:一些功能可以发送电子邮件到一个任意的邮件地址。如果没有得到有效的验证保护,那么恶意攻击者则可以利用程序,向特定的目标发送大量的垃圾邮件。
保护数据挖掘机器人:
某些包含大量数据的站点极易遭受数据挖掘攻击,因此它们也需要验证码的保护。例如:社交网络和搜索引擎。
验证码为什么能被绕过?
验证码被绕过,有以下两个原因:
- 设计问题
- 执行问题
在以下的内容,我将会带大家认识到这两个问题所在。以及如何解决这些问题,建立更为安全的人机验证。
设计问题
设计问题则意味着验证码本质上的脆弱性,但执行却不存在问题。以下演示将有助于我们了解设计问题的真正原因,以及如何破解它:
设计问题#1:
以下的示例中我们可以看到,这里的验证码就是一道数学运题。而这里的问题就出在页面的HTML源码上。
你可以在Github上下载到该验证码的源码:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/ArithmeticCAPTCHA
如何破解?
在这种情况下攻击者往往都会通过获取该页面的HTML源码,计算答案并提交HTTP响应来破解验证码。
你可以在Github上下载到该利用代码:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/CaptchaExploits
设计问题#2:
某些验证码可能会采用相对有限的问题数据库。例如以下是一个基于图片的验证码,很显然这里不能再利用上面提到的破解方案来破解。但这里的问题出在,这里的图片验证码字符是固定并且有限的,在本例中该验证码只会在来回10个固定字符组合中更换。因此一旦掌握了它的问题数据库,那么破解也自然就不成问题了。
你可以在Github上下载到该验证码的源码:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/TenRepeatedCAPTCHA
如何破解?
攻击者首先必须手动解决这10个验证码问题,并同时记录下这些问题的答案。然后通过工具将这些问题的答案存放在自己的数据库中,进行不断的暴力攻击尝试即可。
你可以在Github上下载到该利用代码:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/CaptchaExploits
执行问题:
执行问题则意味着验证码由于执行不力而可被破解,但从设计的角度来看是完美的。
以下示范将有助于我们了解,执行问题的真正含义以及如何破解它:
执行问题#1:
在演示中,我们正在使用Google reCAPTCHA人机验证。我们使用API将用户解决的CAPTCHA响应发送给Google的端点。更多请点击:https://www.google.com/recaptcha/intro/index.html 。API以JSON的输出形式回复请求,以及HTTP状态码。到现在为止,还没发现什么问题 !!
但是执行问题也就出在这里。开发人员无法检查JSON响应,而以检查发送的HTTP状态码是否为200 OK,作为验证码正确与否的判断依据。
你可以在Github上下载到该验证码的源码:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/blob/master/GooglereCAPTCHA/weakcaptcha1.php
如何破解?
攻击者只需要制作一个脚本即可将任何值发送给人机验证码,并且都将会被服务器所接收,因为无论你发送什么答案,服务器都只会通过检查Google API发送的状态码是否为200 OK来作为判断依据。下图中,我们作为答案发送的值是“InvalidAnswerOfCAPTCHA”
你可以在Github上下载到该利用代码:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/CaptchaExploits
执行问题#2:
验证码存在于web页面,在用户提交后将被验证,但问题却出在了if和else一个简单的子句中。这个错误是由于开发人员将响应码写在了其它部分形成的。所以这里即使验证码答案是错误的,应用程序仍将给予用户积极的响应。
你可以在Github上下载到该验证码的源码:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/blob/master/GooglereCAPTCHA/weakcaptcha2.php
如何破解?
攻击者只需要制作一个脚本,即可向验证码发送任意值。在下图中,我们作为答案发送的值是“InvalidAnswerOfCAPTCHA”
你可以在Github上下载到该利用代码:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/CaptchaExploits
执行问题#3:
验证码存在于web页面,但在提交后未在服务器端进行验证。
你可以在Github上下载到该验证码的源码:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/blob/master/GooglereCAPTCHA/weakcaptcha3.php
如何破解?
攻击者只需通过输入错误的验证码和任意电子邮件,就可以轻松地绕过它。
你可以在Github上下载到该利用代码:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/tree/master/CaptchaExploits
如何保护自己免受CAPTCHA攻击?
其实这个问题也很简单,大家可以按照以下步骤,来制作一个强大的CAPTHCA功能:
设计:实施设计良好的CAPTCHA方案。从以上示例中我们可以看到,大多数我们自己设计的验证码都或多或少的存在一些问题。因此,我建议大家尽可能的使用像Google这样的第三方CAPTCHA。
执行:在你选择了具有良好设计的人机识别系统后,下一步是正确的执行。我们已经看到,尽管有一个设计良好的CAPTCHA,但是如果不能正确执行,仍然可以被破解。如果你使用的是Google reCAPTCHA,请参照以下操作步骤:
- 以检查Google发送的JSON响应取代HTTP状态码检查。
- 在if和else子句中实现正确的逻辑,区分有效和无效的答案。
- 不要透露你的私人CAPTCHA密钥。
你可以从这里下载安全的CAPTCHA代码:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script/blob/master/GooglereCAPTCHA/goodcaptcha.php
总结
在实际业务及生产中,某些功能会要求有CAPTCHA。而不安全的CAPTCHA,将会导致敏感数据被窃取,认证攻击,DOS用户甚至管理员等严重问题的发生。因此对于开发人员和使用者而言,具有一个好的设计和实施的CAPTCHA至关重要!
所有脚本的Github链接:https://github.com/securelayer7/Captch-Bypass-Vulnerable-Script
*参考来源:securelayer7。
验证码绕过
时间: 2024-10-26 10:16:28
验证码绕过的相关文章
密码重置6位数验证码绕过问题
记得以前密码重置刚出来的时候,四位数验证码绕过满天飞.如下: 然后,进行爆破就可以重置密码了: 后来,验证码重新设置为6位数验证码,但是如果不对过期时间进行限制,依然可以被爆破.6位数,理论上来说,有一百万种可能.在这里以个人笔记本为例,一般最大线程为200. 所以一共需要5000秒,爆破完毕. 折算成分,就需要83分钟,也就是一个多小时.虽然攻击成本上升,但是还是可以进行破解.如果用服务器破解,速度更快. 有时候主站,对爆破时间和频率进行了限制,但是一般都会设置10分钟-15分钟的过期时间.这
【代码审计】VAuditDemo 后台登录功能验证码绕过
在 admin/logCheck.php中 $_POST['user']和$_POST['pass'] 未经过任何过滤或者编码处理就传入到$query中,可能存在万能密码绕过机制 但是$pass经过了加密,所以我们从用户名做为突破口
验证码安全问题汇总
0×00 前言 其实drops里面已经有小胖胖@小胖胖要减肥 和A牛@insight-labs 相应的文章,只是觉得应该有个入门级的“测试用例”.本文不涉及OCR,不涉及暴力四六位纯数字验证码,不涉及没有验证码的情况(神马?没有验证码?没有 验证码还讨论什么,要不人家不 care,要不人家已经胸有成竹有更牛逼的方法).本文可能会与之前的某些文章有重合,可能与drops的“最严肃的安全原创平台”气质不符,请在家长指 导下阅读. 首先,我们来看下整个验证码实现的原理 图一 1.客户端发起一个请求 2
漏洞利用:验证绕过,XSS利用,Cookic盗用,文件上传
1. 文件上传 低级别 写好上传的内容 选择好上传的文件 上传成功. 测试:访问文件,执行代码 中级别 修改文件后缀为png 上传该文件 抓包修改文件后缀为php,然后允许数据包通过. 上传成功 测试:访问文件,执行代码 2. 验证码绕过 首先将秘钥添加到配置文件 低级别 step值1,有验证,step值2,无验证,所以将数据包step值修改为2,然后发送即可绕过. 中级别 将数据包step值修改为2,并添加passed_captch=true,然后发送即可绕过. 3.
业务安全漏洞挖掘归纳总结【转载】
0x00 索引说明 6.30在OWASP的分享,关于业务安全的漏洞检测模型.进一步的延伸科普. 0x01 身份认证安全 1 暴力破解 在没有验证码限制或者一次验证码可以多次使用的地方,使用已知用户对密码进行暴力破解或者用一个通用密码对用户进行暴力破解. 简单的验证码爆破.URL: http://zone.wooyun.org/content/20839 一些工具及脚本 Burpsuite htpwdScan 撞库爆破必备 URL: https://github.com/lijiejie/htpw
dvwa安装和使用指南
DVWA(dema vulnerable web application)是一个基于PHP/MYSQL环境写的一个web应用.DVWA是randomstorm的一个开源项目.他是常规的web漏洞教学和检测web脆弱性的程序,目标是协助安全专家测试.他可以测试的漏洞包括sql注入,xxs,sql盲注,命令行注入,crsf等一些常见的安全漏洞. 下载网站 下载 解压 我在虚拟机中演示因此我把文件拖在虚拟机里面了 需要安装xampp环境 XAMPP(Apache+MySQL+PHP+PERL)是一个功
WEB安全--业务安全漏洞
0x00 索引说明 在OWASP的分享,关于业务安全的漏洞检测模型. 0x01 身份认证安全 1 暴力破解 在没有验证码限制或者一次验证码可以多次使用的地方,使用已知用户对密码进行暴力破解或者用一个通用密码对用户进行暴力破解. 简单的验证码爆破.URL: http://zone.wooyun.org/content/20839 一些工具及脚本 Burpsuite htpwdScan 撞库爆破必备 URL: https://github.com/lijiejie/htpwdScan hydra 源
业务安全漏洞挖掘要点
业务安全漏洞挖掘要点 1 身份认证安全 暴力破解 用暴力穷举的方式大量尝试性地猜破密码. 一般包括字典攻击和暴力穷举. 示例 360云盘分享码可以被暴力破解 http://www.wooyun.org/bugs/wooyun-2015-0121646 淘米网登陆不需验证码导致暴力破解 http://www.wooyun.org/bugs/wooyun-2015-0145757 防御方法: 验证码机制,一次请求一次验证码 登录失败处理功能,登录次数限制,锁定功能 二次认证机制 工具: BurpSu
如何破解金融安全防护难题?
云计算.大数据.人工智能.区块链正影响着社会的各个角落,金融行业也是如此--这些技术正逐渐渗透到金融交易的前中后台,助力金融创新. 新技术的普及,带来了想象空间的同时,其硬币的另一面也露出狰狞的面孔--信息安全事件呈现高速增长的趋势,安全事件要么不发生,一发生就损失惨重.研究显示,平均每次网络安全事故,会给金融行业企业造成近100万美元的损失. 新技术.新形势下,那金融行业面临的安全挑战究竟有哪些?认识了这些挑战后,我们又应该如何破除这些金融安全防护的难题? 3月15日,网易云首席安全架构师沈明