SQL 盲注大赚一笔:如何利用 GraphQL 漏洞赢得 3500 美元赏金奖励

VSole2023-04-12 10:36:39

背景介绍:

目标是一个私人邀请项目,该项目在许多白帽黑客中非常受欢迎。当收到项目邀请时,白帽小哥注意到该目标在BugCrowd上已经两年多了,到目前为止已经发现了250+个漏洞,并支付了赏金奖励。当接受邀请的那一刻,白帽小哥知道即使是P3级漏洞可能也不太容易找到,更别说P1或P2了,但白帽小哥告诉自己,必须让自己具有创造力,尝试寻找其他白帽还未发现的东西!

GraphQL查询中的SQL注入:

目标范围很大,但子域不在范围内。目标域类似target.*,因为它涵盖了广泛的 ccTLD(如:target.co.uk、target.it、target.ae、target.co.in、target.com 等)。

由于目标存在于全球各个国家,使用证书透明度 ( certificate transparency) 服务很容易找到 TLD,因此从打开主网站 target.com,然后在 SSL 中找到组织名称,如下图:

值得注意的是,大多数企业都在组织名称下注册了 SSL 证书,例如“Twitter, Inc”。因此,在搜索子域或 ccTLD 域时,应确保使用组织名称进行搜索。

接下来,使用 netlas.io crt.sh 查找该组织下所有可能的 ccTLD 域,结合这两个结果,得到了超过 7k+ 的结果(包含子域),经过过滤后,大约只有 64 个目标。

HTTP 探测和参数发现:

接下来将这些目标列表复制到 Kali VM 并通过 httpx 探测,在探测之后,还有 57 个可用目标。

然后使用以下命令通过 ParamSpider -subs False 参数以排除子域:

cat targets | xargs -n 1 -I {} python3 ~/ParamSpider/paramspider.py --subs False --domain {} --level high | urldedupe >> all-param.txt

ParamSpider返回了大约20k行的URL,删除垃圾数据,大概得到了12k个'好的‘URL的最终列表。

白帽小哥开始检查参数和 URL,但遗憾的是它们中的大多数都是指向其产品页面的类似链接:

https://www.target.co.xx/en/xxxx/category2/men/t-shirts.xxx?n=xx&s=xx&ww=xxx 

那些对我没有用,因为相同的参数存在于超过 10k 的 url 中,过滤了这些产品网址后,大概还有 1.6k 个网址。

Nuclei 登场:

通过 Nuclei 的默认扫描,几秒钟后在众多结果中,以下结果引起了白帽小哥的注意,其中一个国家的 TLD 使用了 GraphQL,但 GraphQL 貌似做了错误配置:

Burp Suite 登场:


当有以上信息后,白帽小哥通常会通过 Burp Scanner 来确认,将 URL 发送到 Burp 并开始主动扫描,几分钟后,Bingoo,当在请求正文中提交单引号 (') 时,Burp 发现查询可能存在 SQL 注入。服务器响应“500 Internal Server Error”:

然而,对于Burp Suite来说,这个问题可能会是误报,所以白帽小哥还无法确定是否真的存在SQL注入漏洞。

Sqlmap 与 Ghauri 登场:

将这些疑似漏洞发送至 SQLMAP 和 Ghauri,结果都无法找不到任何注入。

于是白帽小哥决定进行手动测试,因为他相信 Burp Suites 有能力找到这样的漏洞,它不太可能会是误报。

寻找正确的 GraphQL 查询:

白帽小哥在另一个屏幕上打开了 Burp ,并向易受攻击的 URL 发送请求然后开始捕获请求进行分析。

花了一个小时后,白帽小哥终于捕获了用于获取 POST 用户“性别”数据的完整查询,该查询接受 3 个关键字“M、F、NA”,关键字是 Male、Female 和 Not Applicable 的缩写。

查询示例如下:


{  "query":  "query ($_key***_0:String!, $_***_0:Int!) {*****  (keyword:$_key***_0, ****:$_***_0){ key***_text, number_of_result,   number_of_uses, ***_id, gender_cd, url }}",  "variables":{    "_key***_0":"M",    "_***_0":"1"  }}

寻找盲注:

一旦有了正确的查询,白帽小哥开始使用它并尝试发送不同的Payloads。

从 Nuclei 扫描中可以知道该应用程序使用 PHP 并且在 Apache 上运行,于是白帽小哥开始发送 MySQL Sleep的Payload。YES!服务器延迟响应 10.121 秒!


XOR(if(now()=sysdate(),sleep(9),0))XOR\"Z

看到服务器的延迟响应后,白帽小哥感到十分欣慰。当挖洞不是很顺利时,大家经常会因为沮丧而想停止继续挖掘,但事实证明专注、决心和努力最终会让你得到了回报。

接下来就是提交漏洞报告,白帽小哥最终获得了$3500的赏金奖励以及40积分点。

感谢你的阅读,如果觉得本文还不错的话,欢迎分享给更多喜爱的朋友们~

====正文结束====

sql注入graphql
本作品采用《CC 协议》,转载必须注明作者和本文链接
当收到项目邀请时,白帽小哥注意到该目标在BugCrowd上已经两年多了,到目前为止已经发现了250+个漏洞,并支付了赏金奖励。GraphQL查询中的SQL注入:目标范围很大,但子域不在范围内。目标域类似target.*,因为它涵盖了广泛的 ccTLD。因此,在搜索子域或 ccTLD 域时,应确保使用组织名称进行搜索。的结果,经过过滤后,大约只有 64 个目标。
自2020年6月以来,Acunetix支持日益流行的API查询语言– GraphQL。为此,您将首先创建一个故意易受攻击的API及其GraphQL定义,然后使用Acunetix对其进行扫描,消除使用Acunetix发现的严重漏洞,并确认已消除了这些漏洞。阶段1:设置测试环境 为了能够进行此练习,在测试之前必须准备一个测试环境。在本练习中,我们将Windows操作系统与开源软件一起使用。
01 时间轴 2021-01-23 蚂蚁安全非攻实验室 @fatansyC4t 向Apache官方报告了Apache Skywalking远程代码执行漏洞 2021-02-04 2021-02-07 阿里云安全发布漏洞风险提示。经过源码分析,发现两次sql注入漏洞修复并不完善,仍存在一处sql注入漏洞。 Skywalking默认配置下使用的数据库为h2,且使用sa权限启动。进一步分析LINK_SCHEMA底层源码,发现代码中存在一处类加载过程,而这个类就是sql函数的第二个参数,用户可控。03 漏洞证明 04 修复建议 1、升级Apache Skywalking 到最新的 版本。
有研究人员在安全测试时,绕过了 Cloudflare WAF 的 SQLi 过滤器,这意味着Cloudflare 安装没有正确配置,但Cloudflare目前还不认为这是个漏洞。虽如此,安全人员在为其应用程序部署安全保护时需要注意有关问题。对于试图绕过 WAF 的人来说,发现的些许漏洞也可能会派上用场。攻击者可以利用一种或多种技术(具体取决于最终应用程序)绕过某些 WAF 并通过滥用 SQLi 漏
Arsenal是一个功能强大且使用简单的Shell脚本,该工具专为漏洞赏金猎人设计,在该工具的帮助下,我们可以轻松在自己环境中安装并部署目前社区中功能最为强大的网络侦查工具、漏洞扫描工具和其他安全研究工具。
F-vuln(全称:Find-Vulnerability)是为了自己工作方便专门编写的一款自动化工具,主要适用于日常安全服务、渗透测试人员和RedTeam红队人员,它集合的功能包括:存活IP探测、开放端口探测、web服务探测、web漏洞扫描、smb爆破、ssh爆破、ftp爆破、mssql爆破等其他数据库爆破工作以及大量web漏洞检测模块。
九大热门API安全工具
2023-01-31 11:36:02
本文介绍了全球市场九个热门安全工具(包含免费和开源工具)的点评。
应用程序接口(Application Programming Interface,API)是一些预先被定义的接口或协议,用来实现和其他软件组件的交互。
到2025年,欧盟将会安装超过100万个充电桩,以遏制温室气体排放。EVSE漏洞目前,业界已经有多个关于EV/EVSE连接窃取账户凭证或影响充电的网络攻击案例。爱达荷国家实验室 指出,EV 存在将病毒传播到 EVSE 的风险,EVSE 会进一步传播恶意软件。INL 评估后发现,EVSE 管理应用程序缺乏适当的身份验证
VSole
网络安全专家