daniyalnasir-root/ClaimCheck

GitHub: daniyalnasir-root/ClaimCheck

ClaimCheck 是一个Go语言编写的探针工具,用于验证悬空DNS子域名是否可被实际接管,解决了传统工具只做表面匹配的问题。

Stars: 0 | Forks: 0

# ClaimCheck:验证悬空DNS接管目标是否可实际认领 一个轻量的Go探针工具,它接收子域名列表,识别那些CNAME指向易被接管服务的域名,并判断另一端的资源是否可实际认领。每个发现都附有实际认领所需的精确命令。 ![Go版本](https://img.shields.io/badge/go-1.24%2B-blue.svg) ![许可证](https://img.shields.io/badge/license-MIT-green.svg) ![状态](https://img.shields.io/badge/status-active-success.svg) ## 概述 大多数子域名接管工具仅止步于特征匹配:它们在 `*.azurewebsites.net` 主机上看到 `Web App not found` 就称之为发现。特征匹配是必要的但并非充分条件。现代Azure在没有匹配的CNAME或asuid TXT验证记录的情况下会拒绝绑定自定义域名。AWS S3的桶名是全局唯一的,但你仍需检查该桶名是否在全局命名空间中未被分配,而不仅仅是看前端是否显示 `NoSuchBucket`。Vercel和Cloudflare Pages的项目slug是团队范围内的,因此公开的404页面仅仅是交互的开始。 `ClaimCheck` 执行下一步操作。对于每个候选主机,它解析CNAME,针对七种支持的服务进行分类,执行特定于提供商的可用性探查,并输出以下四种结论之一:`confirmed-claimable`、`requires-provider-auth`、`not-claimable` 或 `error`。对于 `confirmed-claimable` 和 `requires-provider-auth` 的情况,它还会打印出你下一步需要运行的确切 `aws` / `heroku` / `vercel` / `az` / `wrangler` / `netlify` 命令,因此输出是工作流的起点而非终点。 该工具是单二进制文件,接受 `--url` 参数或从 `--from` 文件读取,并输出用于人工审查的箱式面板或每行一个JSON对象以便通过管道传递给下一个工具。 ## 功能特性 - 覆盖七种提供商:AWS S3、GitHub Pages、Heroku、Vercel、Netlify、Azure App Service、Cloudflare Pages - 对每个主机输出四态结论(`confirmed-claimable`、`requires-provider-auth`、`not-claimable`、`error`),并附有理由说明,而非单一的布尔值 - 每个发现都包含下一步操作的命令,即复制即用,且针对主机所指向的具体提供商 - 提供箱式面板和JSON流输出模式,颜色可通过 `--no-color` 和 `NO_COLOR` 开关控制 - 支持直接主机回退:原始 `*.herokuapp.com` / `*.vercel.app` / `*.azurewebsites.net` 候选列表无需中间CNAME跳转即可接受 ## 安装说明 ``` git clone https://github.com/daniyalnasir-root/ClaimCheck.git cd ClaimCheck go build . ``` 或者一步完成: ``` go install github.com/daniyalnasir-root/ClaimCheck@latest ``` Go 1.24 或更新版本。运行时无外部依赖,仅使用标准库。 ## 使用说明 ``` # 探测单个主机 ./claimcheck --url admin.target.com # 从文件批量探测 (每行一个子域名, '#' 用于注释) ./claimcheck --from candidates.txt # 直接管道输入 subfinder 的输出 subfinder -d target.com -silent | ./claimcheck --from - # 用于下游工具的 JSON 流 ./claimcheck --from candidates.txt --emit json | jq 'select(.verdict=="confirmed-claimable")' ``` 一个典型的带计时运行示例: ``` $ time ./claimcheck --from examples/fixtures/sample.txt --no-color ... summary 1 confirmed-claimable 2 requires-provider-auth 1 not-claimable 0 errors 2 skipped real 0m2.1s ``` ## 命令行选项 ### 必需参数(二选一) | 标志 | 参数 | 描述 | |---|---|---| | `--url` | `主机名` | 需要探测的单个子域名 | | `--from` | `文件` | 包含子域名的文件,每行一个(使用 `-` 从标准输入读取);以 `#` 开头的行和空行将被忽略 | ### 可选参数 | 标志 | 参数 | 描述 | |---|---|---| | `--threads` | `数量` | 并发探测工作线程数,默认为 `8` | | `--timeout` | `秒数` | 每次请求的超时时间,默认为 `8` 秒 | | `--emit` | `panel\|json` | 输出模式,默认为 `panel` | | `--no-color` | | 无论是否为终端,均禁用ANSI颜色 | | `--version` | | 打印版本信息并退出 | ## 输出示例 在 `panel` 模式下,每个主机渲染为一个框:包含结论、服务类型、探查所跟随的CNAME、从中提取的资源名称、理由说明以及下一步命令(如果有的话)。 ``` ╭─ claimcheck-demo-nonexistent-7f3a.herokuapp.com ───────────────────────────╮ │ verdict ● confirmed-claimable │ │ service Heroku │ │ cname va02.ingress.herokuapp.com │ │ resource claimcheck-demo-nonexistent-7f3a │ │ evidence Heroku returned 'No such app' - the app name is available in │ │ the Heroku global namespace │ │ next heroku apps:create claimcheck-demo-nonexistent-7f3a --region │ │ us │ ╰────────────────────────────────────────────────────────────────────────────╯ ``` 在 `json` 模式下,相同的发现会成为单行JSON,你可以通过管道传递给 `jq`: ``` {"host":"claimcheck-demo-nonexistent-7f3a.herokuapp.com","cname":"va02.ingress.herokuapp.com","service":"Heroku","resource":"claimcheck-demo-nonexistent-7f3a","verdict":"confirmed-claimable","evidence":"Heroku returned 'No such app' - the app name is available in the Heroku global namespace","next_step":"heroku apps:create claimcheck-demo-nonexistent-7f3a --region us"} ``` 两个完整的输出捕获文件位于 `examples/run-1.txt`(面板模式)和 `examples/run-2.txt`(JSON模式)。它们所测试的固件(`examples/fixtures/sample.txt`)是手动挑选的,因此输出涵盖了该工具可能产生的所有结论类型,无需实际悬空子域名即可进行测试。 ## 法律免责声明 此工具仅用于授权的安全测试和教育用途。 仅针对您拥有或获得明确书面许可的系统运行。 作者对任何滥用行为不承担任何责任。未经授权的使用可能违反地方、州或联邦法律。 ## 作者 Daniyal Nasir 是一名 **渗透测试员** 和 **攻击性安全专家**,为财富500强利益相关者和领先科技公司提供 **网络渗透测试**、**云渗透测试**、**云安全评估** 和 **源代码审查** 服务。项目交付范围覆盖亚洲、非洲、拉丁美洲和美洲。他撰写了 **渗透测试服务** 操作手册,并持有 **OSCP**、**CASP+**、**CISA** 和 **CISM** 认证。 https://www.linkedin.com/in/daniyalnasir · https://www.daniyalnasir.com ## 许可证 MIT,详见 LICENSE 文件。
标签:EVTX分析, 日志审计