目标是一个私人邀请项目,该项目在许多白帽黑客中非常受欢迎。当收到项目邀请时,白帽小哥注意到该目标在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 的默认扫描,几秒钟后在众多结果中,以下结果引起了白帽小哥的注意,其中一个国家的 TLD 使用了 GraphQL,但 GraphQL 貌似做了错误配置:
当有以上信息后,白帽小哥通常会通过 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积分点。
感谢你的阅读,如果觉得本文还不错的话,欢迎分享给更多喜爱的朋友们~
====正文结束====