白帽故事 · 2024年3月15日

200小时挑战,最终收获$20,300赏金的故事

背景介绍

今天来分享2位国外白帽子在去年7月份,通过200小时(每天花上4-6小时)黑客挑战赛,最终收获$20,300美元赏金的故事。

选择目标

他们选择的目标是一家著名的大公司,因为该公司在赏金网站上是公共项目,因此许多赏金猎手都曾参与其中,也许很多新手初学者看到该项目可能会选择跳过,但对于这支小队来说,他们一开始并没有将赏金视为唯一目的,而是觉得这是一个学习和进步的过程。因此,他们设定的目标是挑战时限–200小时,而非赏金金额。

侦察

侦察阶段,他们使用各种技术来识别尽可能多的资产,因为拥有越多的资产则表示发现漏洞的机会越多,简单总结如下:

  • 证书查询
  • 利用IP进行资产发现
  • 使用CSP Header
  • 利用Google Dork
  • 使用Google Analytics
  • 动态和静态的DNS爆破
  • OSINT 开源情报

证书查询

常见的证书搜索是在 Common Name 上搜索,然而,证书有不同的部分,例如 Organization 字段等,有一些网站可以搜索网络并保存证书,比如Shodan或Censys,以苹果公司为例:

img

可以使用以下命令来枚举苹果公司的根域:

curl -s "https://crt.sh/?O=Apple%20Inc.&output=json" | jq -r ".[].common_name" | tr A-Z a-z | unfurl format %r.%t | sort -u | tee apple.cert.txt

img

利用IP进行资产发现

每个公司可能拥有一些CIDR,有时由于所有者名称比较模糊而几乎无法找到这些CIDR,但是,CIDR 往往会带有公司标志(ASN 名称中的 Apple)。要查找 IP、CIDR 和 ASN,有很多方法,其中最常用方法之一就是使用 ipip.net:

img

可以扫描到属于该公司的所有 CIDR、ASN 和 IP,并提取证书信息,在这里可以发现一些域,通过以下命令可以找到 alternative namescommon names

echo AS714 | tlsx -san -cn -silent -resp-only

开源情报

作为一名白帽子或赏金猎人,你应该不断地跳出框框来思考,在这个阶段,有时候可以转向开源情报,比如通过公司的新闻博客,在某篇博文中发现championscompany.com这样一个域名,随后通过批量检查5000篇博文文章,发现了60个有趣的域名,而这些域名在之前的侦察中都未被发现。

漏洞

通过Swagger泄露所有用户数据(PII)

通过静态 DNS 爆破,发现一处 test.target.tld 子域,从而发现一个无需身份验证的 Swagger UI 服务(端口5000),大约有 100 个 API 似乎受到身份验证的保护,然而,他们会单独测试每一个API(无聊但必要)。

令人惊讶的是,居然发现了整整 10 个开放 API,其中 2 个正在泄露用户数据(PII),如下所示:

img

二次SQL注入

渗透测试最有效的阶段之一是威胁建模,一旦了解目标,就可以准备测试用例和攻击场景,威胁建模非常游泳,你不能盲目地进行测试或Fuzz,因为考虑到所花费的时间,你可能不会得到任何有用的结果。

如果应用程序比较‘老’并且具有来自数据库的加载字段(本案例中,选择国家/地区),他们会在这些字段上测试基于时间的注入测试。他们发现了 2 个带有 1'XOR(SELECT CASE WHEN(1234=1234) THEN SLEEP(7) ELSE 0 END)XOR'Z 的 SQL注入:

img

泄露所有用户信息(PII)

与许多白帽子的做法差不多,他们也会尝试通过更改请求中的数字 ID 来获取用户信息,但都遇到了 403 错误,然后他们将请求方法切换为 PATCH ,这也是一些白帽子会使用的策略,但同样没能起作用。然而,他们的关键策略是添加特定的标头,通过包含 Accept: application/json ,成功收到了 200 OK 响应:

GET /users/58158 HTTP/2
Host: www.target.com
Cookie: x
Content-Length: 0
Sec-Ch-Ua:

更改了ID 收到 403 错误,为了绕过,将方法更改为 PATCH 并添加 Accept: application/json,成功:

img

存储型XSS

编辑器使用文本的任何地方都是测试 XSS 的有趣场景,然而,在大多数情况下,它会使用正则表达式来过滤掉危险标签,当他们浏览应用程序时,发现了 posts 字段,在posts字段中,可以像 Twitter 一样编写posts注释,但必须绕过CSP保护,于是他们使用下面的Payload实现了CSP绕过:

xss<script/src="https://www&#x2e;google&#x2e;com/complete/search?client=chrome&q=hello&callback=alert#1"> "></script>

img

访问员工域名导致所有交易信息泄露

在侦察过程中,他们还发现了一个特别有趣的域,其名称中包含单词 demo ,例如 companydemonew.com ,该域仅提供登录或注册选项,要注册,需要提供公司电子邮件地址,例如 mamad@company.com

img

他们注册了 mamad@company.com.burpcollaborator.com ,成功绕过注册并收到激活邮件!由于该域不可公开访问,因此他们猜测身份验证后会出现更多漏洞,不久后通过简单地将数字 ID 从 35 更改为 36,他们便发现了一个重要的 IDOR:

img

漏洞审核结果:

**

漏洞审核结果:

img

WPEngine 配置文件

使用公共字典,你可以发现一些漏洞,但自定义的字典可以发现更多漏洞,通过他们的私有字典,他们成功找到了 WPEngine 配置文件:

https://target.com/_wpeprivate/config.json

img

其它漏洞

  • X2数据库凭证泄露
  • X1账户接管漏洞
  • X10反射型XSS
  • X2信息泄露
  • X2业务逻辑漏洞
  • X2子域接管漏洞

花费时间

通过使用 toggl track 应用程序来跟踪他们的渗透时间,从而评估结束时的进度,结果如图所示:

img

他们在本次狩猎上花费了约 200 小时(每人大概 100 小时)。

赏金总额

在一起狩猎了 200 小时后,他们暂停了该工作,然后等待漏洞报告的处理,他们花了近 5 个月的时间才收到所有漏洞的赏金,最终他们从这次‘旅程’中赚到了 20,300 美元的奖励。

英文原文:https://blog.voorivex.team/20300-bounties-from-a-200-hour-hacking-challenge

以上内容由骨哥翻译并整理,希望对你有所帮助,欢迎一键三连~