Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >利用HTTP参数污染方式绕过谷歌reCAPTCHA验证机制

利用HTTP参数污染方式绕过谷歌reCAPTCHA验证机制

作者头像
FB客服
发布于 2018-07-30 03:02:28
发布于 2018-07-30 03:02:28
3.9K0
举报
文章被收录于专栏:FreeBufFreeBuf

今年初,我上报了一个谷歌reCAPTCHA验证码绕过漏洞,该漏洞在于能用一种HTTP参数污染的不安全方式,让Web页面上的reCAPTCHA构造一个针对 /recaptcha/api/siteverify 的请求,在这种情况下,攻击者可以每次都能绕过reCAPTCHA的安全验证机制。之后,谷歌从reCAPTCHA API的顶层接口上对这个漏洞进行了修复。在此,我们一起来看看reCAPTCHA机制是如何被绕过的。

reCAPTCHA验证机制介绍

reCAPTCHA是谷歌提供的一项免费验证服务,可以方便Web应用开发者把验证码认证(CAPTCHA)机制添加到一些需要进行人机身份验证或其它形式验证的网站中。reCAPTCHA服务存在很多实际用例,比如,有时候它会用你登录网站的cookie进行验证,而有时候它又会让用户手动地去完成一些它提供的识别测试。

我是从对某目标网站的访问中发现这个漏洞的。当访问目标网站之后,就像下图一样,网站需要验证用户身份,此时,调用了谷歌 reCAPTCHA API 接口显示一组图片或数字,让用户进行选择:

当用户点击验证码CAPTCHA进行“验证”(Verify)时,会触发一个指向访问网站的HTTP请求,该请求大致如下:

之后,目标访问网站需要调用谷歌的reCAPTCHA API接口,让用户对该API提供的验证作出测试,然后根据该测试响应来验证用户身份。调用谷歌reCAPTCHA API接口过程的POST请求如下:

其中, {application-secret} 是用来对目标网站的验证,而 {reCAPTCHA-generated-hash} 是向谷歌reCAPTCHA API接口发送的一个响应查询,如果用户的最终测试是正确的,则API会返回以下响应信息:

这个响应信息最终会被目标访问网站接收到,之后,根据这个响应信息进行处理,最终会允许用户去访问到相应的网站资源。

HTTP 参数污染

HTTP 参数污染,或者叫HPP,是网站在接受用户输入时,将其用于生成发往其它系统的 HTTP 请求,并且不校验用户输出的时候发生,这主要是源于不同的网站对不同请求参数的处理方式不同。

HTTP 参数污染可能存在客户端或服务端等很多地方,其风险程度也依不同环境而有所不同,在一些特定场景或实际应用中,它可以导致数据泄露,但在另外一些用例中,它也可能仅只是一个低风险漏洞。

我们这里的谷歌reCAPTCHA绕过过程中,需要用到目标访问网站中的HTTP参数污染方法,因此,这个绕过方式的特殊需求构造,最终也降低了谷歌对该漏洞的分类评级。

以下为存在reCAPTCHA绕过可能的目标网站请求实例:

其中的字符串连接符 + 是用来连接不同的url变量。

需要注意的是,在谷歌的API服务器后端,发送以下两个HTTP请求,会得到相同的响应消息。

两个POST请求中都有 response 和 secret 参数。在第二个POST请求中,谷歌的reCAPTCHA API 总会采用其中的第一个secret参数,从而忽略掉第二个secret参数。严格来说,这不是一个reCAPTCHA API 本身存在的漏洞,而是一种误用机制,但可以被用来进行深入的攻击利用。

漏洞利用关键点

Web开发人员需要以自动化的方式测试他们的应用程序,为此Google提供了一种在临时模拟环境中“禁用”reCAPTCHA验证的简单方法。可以点击这里的Google说明文档来参阅,总之,如果要禁用reCAPTCHA验证,请使用下面所示的硬编码站点和密钥:

Site key: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI Secret key: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

测试利用PoC

现在,我们有了所有必须的测试要素,我们来看看如何利用:

如果目标访问网站可能存在HTTP参数污染,而且其URL链接是在secret参数之前通过添加response参数来构建的,那么这种情况下的 reCAPTCHA 验证方式有可能被绕过。

请注意,我要向目标访问网站发送一个经过构造的假冒响应消息,其中包括以下几个属性:

anything: 仅代表一个占位符 %26: 一个经url编码的&符号字符 secret: 我要进行“注入”的参数名称 %3d: 一个经url编码的=符号字符 6Le…JWe: 禁用 reCAPTCHA 验证响应的secret key,也是我们要用到的第一个secret参数

组合起来之后,就形成了以下由目标网站向谷歌 reCAPTCHA API 发送的一个HTTP请求:

这个请求中包含了两个secret参数,由于目标访问网站存在HTTP参数污染可能,所以其中第一个secret参数可由攻击者控制,这个参数 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe 也是谷歌官方给出的禁用 reCAPTCHA 验证方法的secret key;第二个secret参数由目标访问网站自己控制。假定谷歌的 reCAPTCHA API 采用了第一个secret参数,那么也就间接禁用了 reCAPTCHA验证,则该请求的响应总会是以下这个:

这样一来,在目标访问网站处理过这个请求响应之后, reCAPTCHA 会被禁用而绕过,而攻击者也自然会获得对网站资源的访问权限。

谷歌从顶层API上的修复措施

谷歌决定在他们的REST API中来修复这个问题,我认为这是一个非常明智操作。谷歌的修复其实也很简单:如果对 /recaptcha/API/siteverify 的HTTP请求包含两个同名的参数,则会返回一个错误消息。通过这种修复方式,可以保护易受HTTP参数污染攻击和reCAPTCHA绕过影响的Web应用,而且无需任何更新补丁,非常棒!

在野利用

要在Web应用程序中利用此漏洞,有两个必须的要求:首先,Web应用程序在创建reCAPTCHA url时存在HTTP参数污染漏洞:在Github中,我用搜索方法发现,集成有reCAPTCHA验证方式的Web开发架构中有约60%都会受到HTTP参数污染攻击。

其次,易受HTTP参数污染攻击的Web应用需要首先创建具有response参数的url,然后再创建secret参数,也就是形如这样的url参数:“response=…&secret=…”,但很奇怪的是,几乎所有采用reCAPTCHA验证的的Web应用都是使用了 “secret=…&response=…”这种参数格式,我想可能是谷歌的文档和代码示例就是这样规范的,其它框架估计只是复制了这种格式。谷歌在这里就很走运了…如果他们反过来这样做,这个漏洞会影响到更多网站。GitHub搜索显示,只有5%到10%的reCAPTCHA验证机制存在这个response参数在前且secret参数在后的构造要求。

所以,如果我想在野外利用这个漏洞,那么最后只有大约3%的使用reCAPTCHA验证的站点存在这种漏洞,与其它漏洞相比,虽说影响范围和威力较小,但多少还能构成一些安全威胁。总结来说,作为开发者,请慎用字符串连接来构建请求字符串url,尽可能使用字典方式来储存密钥和键值,然后再进行url编码;作为安全测试方来说,HTTP参数污染是个不错的渗透测试方式。

漏洞上报进程

2018-Jan-29 / 上报谷歌 2018-Jan-30 / 谷歌回复: “reCAPTCHA 机制没啥毛病啊!?“ 2018-Jan-31 / 我请求谷歌方面认真阅读我的漏洞报告 2018-Jan-31 / 谷歌要求我提供更多测试证明 2018-Feb-1 / 谷歌确认漏洞 2018-Feb-15 / 谷歌奖励我$500美金,我转手把这点钱捐赠给了慈善机构 2018-Mar-25 / 谷歌修复漏洞

*参考来源:andresriancho,FreeBuf 小编 clouds 编译,转载请注明来自 FreeBuf.COM

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
国内使用reCaptcha验证码的完整教程
reCaptcha是Google公司的验证码服务,方便快捷,改变了传统验证码需要输入n位失真字符的特点。reCaptcha在使用的时候是这样的:
宜轩
2022/12/26
38.1K0
国内使用reCaptcha验证码的完整教程
PayPal验证码质询功能(reCAPTCHA Challenge)存在的用户密码泄露漏洞
近期,安全研究者Alex Birsanl对PayPal登录界面的身份验证机制进行分析,发现了其中一个隐藏的高危漏洞,可以通过请求其验证码质询服务端(reCAPTCHA challenge),在质询响应消息中获取PayPal受害者的注册邮箱和明文密码,危害严重,漏洞最终获得了PayPal官方$15,300的奖励。
FB客服
2020/02/20
2.5K0
PayPal验证码质询功能(reCAPTCHA Challenge)存在的用户密码泄露漏洞
[PHP] 接口增加recaptcha行为验证
需要先翻墙创建一个谷歌账户和创建recaptcha验证的网站域名,获取到两个secrect https://www.google.com/recaptcha/admin
唯一Chat
2019/12/16
1.3K0
[PHP] 接口增加recaptcha行为验证
国内使用Google reCaptcha验证码
为啥我出这篇文章呢,因为我有几天用了vaptcha进行人机验证,还算好用,但是发现手机上有广告,本着原则问题,我剔除了人机验证。 又发现在邻居@kidultff发现谷歌国内验证也可以,于是探路V3版本
一朵灼灼华
2022/08/05
4.6K0
国内使用Google reCaptcha验证码
一文拿下SSRF攻击利用及绕过保护机制
断断续续地继续漏洞之旅,这次讨论一下一个常见web漏洞:SSRF,浅析一下它是如何导致攻击者进入网络,以及如何发现它并且利用。
字节脉搏实验室
2020/07/24
5.6K0
django 人机校验我是人类-使用hCaptcha或Turnstile代替simple-captcha
首先,确保你已经完成了django知识的学习, 以便不出现未经了解且不易理解的错误,本文不会叙述基础教程,如若此, 请跳转至djangoproject官网教程.
zmh-program
2023/02/06
2K0
自动识别recaptcha验证码辅助爆破
最近的项目实在有点多,小的几千块,大的几百万。有些真心不好做,有些只是写写代码。唉,我是废物。几百万的真心吃不下。
洛米唯熊
2021/10/21
3.8K2
如何绕过Captcha并使用OCR技术抓取数据
在现代的网页数据抓取中,Captcha(全自动区分计算机和人类的图灵测试)作为一种防止爬虫和恶意访问的有效措施,广泛应用于各种网站。Captcha的主要目的是区分用户是人类还是程序,因此对于爬虫技术来说,它是一种极具挑战性的障碍。为了绕过Captcha,我们可以借助OCR(Optical Character Recognition,光学字符识别)技术,从图片中识别出字符,并结合代理IP技术提高爬虫的隐蔽性,减少被封禁的风险。本文将介绍如何使用OCR技术绕过Captcha,并通过示例展示如何实现这一过程。
jackcode
2024/11/13
4900
如何绕过Captcha并使用OCR技术抓取数据
谷歌家的验证码怎么了?搞他!
很久没有做爬虫破解类相关的分享了,之前交流群里有朋友提问谷歌系的reCAPTCHA V2 验证码怎么破,因为工作的原因我是很久之后才看到的,也不知道那位朋友后来成功了没有。那今天就来跟大家分享一下 reCAPTCHA V2 的破解。
崔庆才
2020/01/02
4.6K0
谷歌最新验证系统又双叒被「破解」了,这次是强化学习
对于谷歌浏览器的用户来说,上面这幅画面想必并不陌生。这是谷歌开发的验证码系统 reCaptcha,旨在确认访问者是人还是程序,并防止恶意程序的入侵。
机器之心
2019/04/29
2.6K0
谷歌最新验证系统又双叒被「破解」了,这次是强化学习
我是人吗?关于人机验证绕过技术的一些总结
人机验证服务是突破传统验证码的人机识别产品,通过对用户的行为数据、设备特征与网络数据构建多维度数据分析,可以对风险设备使用、模拟行为、暴力重放等攻击进行综合判决,解决企业账号、活动、交易等关键业务环节存在的欺诈威胁问题。早期的验证码通常是一串非常简单的形状标准的数字,经过长期发展,形式越来越多样化,现在简单的数字英文验证码已经很容易被机器读取破解,复杂的验证码设计得愈发反人类。不过得益于机器学习,尤其是深度学习的进步,很多学者和技术大牛都这方面有了一些研究成果,本文将对已有的一些人机验证绕过技术进行总结。
绿盟科技研究通讯
2020/12/30
4.7K0
我是人吗?关于人机验证绕过技术的一些总结
原来这样 4 步就能破解,再也不用手输验证码了!
• 目标网站开放凭据(验证码的“站点密钥”,站点url,可选:代理IP)由您(客户端)复制并提交给2captcha服务。您可以使用简单的Web开发人员工具找到它们。
double
2020/04/01
4.2K0
unCaptcha:一款针对Google音频验证码系统reCaptcha的安全研究工具
 关于unCaptcha  unCaptcha是一款针对Google音频验证码系统reCaptcha的安全研究工具,在该工具的帮助下,广大研究人员可以对部署了reCaptcha的应用程序进行安全审计,当前版本的unCaptcha准确率约为85%。 在互联网上,成千上万的网站依靠谷歌的reCaptcha系统防御恶意攻击,2012年,谷歌的一个研究团队展示了文本reCaptcha的安全缺陷之后,reCaptchha系统演变为依赖音频和图像来实现验证。随着Google对其不断地迭代升级,越来越多的应用程序开始使用
FB客服
2023/02/24
1.3K0
unCaptcha:一款针对Google音频验证码系统reCaptcha的安全研究工具
2021-08-21 vue2+golang使用google的recaptcha验证
DanSnow/vue-recaptcha: Google ReCAPTCHA component for Vue.js (github.com)
无道
2021/08/23
2.2K0
了解SSRF漏洞,这一篇就足够了......
本号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如有侵权请联系小编处理。
网络安全自修室
2022/05/16
4.9K0
了解SSRF漏洞,这一篇就足够了......
Selenium+2Captcha 自动化+验证码识别实战
本文深入探讨了使用Selenium库进行网页自动化操作,并结合2Captcha服务实现ReCAPTCHA验证码的破解。内容涵盖Selenium的基础知识、验证码的分类、2Captcha服务的使用,以及通过实例进行的详细讲解,最后对实践进行总结和优化思考,为读者提供了一条完整的验证码破解实践路线图。
TechLead
2023/10/21
2.1K0
Selenium+2Captcha 自动化+验证码识别实战
验证码的处理 google recaptcha
google验证码的第三方处理 #经过批量测试,成功率高达百分之九十,1000个邮箱大概4美金,比较实惠 第一部分. 通过请求youtube简介页面,获取网红的channel_id和页面产生的ses
用户8346838
2021/03/10
1.5K0
ASP.NET Core 使用 Google 验证码(Google reCAPTCHA)
验证码在我们实际的生活场景中非常常见,可以防止恶意破解密码、刷票、论坛灌水、刷注册等等。现在的网站基本都有使用验证码来对用户的行为进行验证。从简单的文字验证码、图片验证码、滑动验证码、图片选择验证码等,验证码一直在进化,在和“黑恶势力”做斗争。Google 验证码是 Google 提供的一项免费的验证码服务,接入非常简单,推荐用它来替换传统的图片验证码。
晓晨
2019/04/23
2.9K0
ASP.NET Core  使用 Google 验证码(Google reCAPTCHA)
验证码的未来:扒一扒reCAPTCHA的那些事
reCAPTCHA的诞生及意义 CMU(卡耐基梅隆大学)设计了一个名叫reCAPTCHA的强大系统,让电脑去向人类求助。具体做法是:将OCR(光学自动识别)软件无法识别的文字扫描图传给世界各大网站,用以替换原来的验证码图片;那些网站的用户在正确识别出这些文字之后,其答案便会被传回CMU。 reCAPTCHA是利用CAPTCHA的原理(CAPTCHA的中文全称是全自动区分计算机和人类的图灵测试),借助于人类大脑对难以识别的字符的辨别能力,进行对古旧书籍中难以被OCR识别的字符进行辨别的技术。也就是说,reCA
FB客服
2018/02/05
4K0
验证码的未来:扒一扒reCAPTCHA的那些事
Kali Linux Web渗透测试手册(第二版) - 9.6 - 利用HTTP参数污染
当HTTP参数在同一请求中重复多次并且服务器以不同的方式处理每个实例时,会发生HTTP参数污染(HPP)攻击,从而导致应用程序中出现异常行为。
用户1631416
2019/09/19
9130
Kali Linux Web渗透测试手册(第二版) - 9.6 - 利用HTTP参数污染
推荐阅读
相关推荐
国内使用reCaptcha验证码的完整教程
更多 >
交个朋友
加入行业数字化趋势交流群
解读转型政策方向 参考企业落地案例
加入[腾讯云] DeepSeek开发者交流群
前沿技术深度讨论 发展开发者人脉圈
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档