在挖掘某SRC的过程中,我发现了一种适用于该SRC的通用挖掘思路。随笔记录下来,希望能为师傅们带来一些收获和灵感。

背景

在对某SRC进行挖掘时,发现其域名为 aaa.bbb.com。通过工具 findsomething 进行被动信息收集,发现了类似 aaa.test.bbb.com 的域名。相信挖过SRC的师傅们都知道,许多企业会将测试环境的域名开放到公网。虽然这些测试域名在实际的安全运营场景中通常是不允许公开的,但业务的不规范以及特殊需求(如联合调试、Bug测试等)往往导致这些测试域名暴露在外。

测试环境通常是企业安全体系中最薄弱的环节。因为测试应用往往缺乏严格的安全审核,导致其成为攻击者的重点目标。找到这些测试资产,通常能带来意想不到的收获,甚至挖掘出高危漏洞!


思路解析

基于这种特殊的业务场景,我挖到了大量漏洞,虽然多数是中低危,但也偶尔发现高危漏洞。积累起来后,也是一笔相对客观的收入。下面是我开发这款工具的核心思路,希望能给师傅们带来收获、灵感!


测试域名的常见特征

经过日常测试经验总结,发现测试域名通常具有以下特征:

  1. 域名格式
    测试域名通常包含类似 stagetestdev 等关键字。例如:

    • 原域名:www.baidu.com

    • 测试域名:www.stage.baidu.comwww.test.baidu.comwww.dev.baidu.com

  2. DNS解析结果
    测试域名解析出的 IP 地址通常为外网地址,而非内网地址(内网 IP 无法直接访问)。

  3. 响应状态码
    测试域名的 API 或目录访问状态码通常不为 403。如果状态码为 403,则可能是运维对该路径从外网做了访问限制。


自动化挖掘流程

基于上述特征,可以通过以下步骤进行自动化挖掘:

  1. 生成测试域名
    根据已知域名,添加自定义测试关键字(如 qatestdev 等),生成可能的测试域名。

  2. DNS解析验证
    对生成的测试域名进行 DNS 解析,判断解析出的 IP 是否为外网地址。若解析超时或失败,说明域名指向内网。

  3. 请求测试目录
    在满足外网 IP 条件的情况下,使用与原域名相同的目录路径进行请求,判断响应状态码是否不为 403

  4. 联动漏洞扫描工具
    若测试域名存在且响应状态码符合条件,则联动其他工具(如 OnescanApikit 等)对其进行漏洞扫描。例如:

    • 扫描未授权访问(如 Swagger 文档、Spring Boot 环境配置等)。

    • 挖掘测试域名中潜在漏洞,逻辑漏洞为主。


工具实战:QaFuzz

为了满足上述漏洞挖掘场景的需求,我开发这款自动化工具——QaFuzz,专门用于测试域名的挖掘。以下是工具的使用流程:

1. 配置测试关键字

首先,根据目标 SRC 的域名习惯,配置测试关键字(如 qatestdev 等)。例如:

  • 原域名:www.baidu.com

  • 自动生成测试域名:www.qa.baidu.comwww.test.baidu.com 等。

2. 被动信息收集

通过 site:xxx.com 检索隐藏资产。例如,发现某登录系统,流量如下:

alt text

右键发送流量到 QaFuzz 模块:

alt text

3. 测试结果

工具会自动解析域名、判断是否符合外网条件,并进行目录请求测试。如下图所示:

alt text

4. 联动漏洞扫描工具

将工具发现的外网测试资产请求发送至其他工具(如 OnescanApikit),进行进一步的漏洞扫描:
alt text

OneScan成功发现漏洞如下:

alt text

例如,通过 Swagger 文档挖掘接口信息,从而发现更多潜在漏洞,这里笔者也是通过swagger进一步探测,发现了包括但不限于全回显ssrf、批量用户信息泄漏等,后面再跟大家分享吧!


总结

测试域名的挖掘只是测试资产的一部分,其背后可能隐藏着更多暴露点。例如:

  • 测试环境的默认账号密码

  • 内部调试工具的公开访问

  • 未授权的接口或敏感信息泄露

希望这篇文章能启发大家,在挖掘 SRC 时放开思维,深入探索这些测试资产。让漏洞无处遁形!


如果你有类似的经验或工具开发思路,欢迎分享交流,共同提升挖掘效率!

项目地址:

QaFuzz:https://github.com/darkfiv/QaFuzz

OneScan:https://github.com/vaycore/OneScan

APIKit:https://github.com/API-Security/APIKit