bowligth/subtake
GitHub: bowligth/subtake
SubTake 是一款子域名接管漏洞检测扫描器,通过 DNS CNAME 解析与服务指纹匹配来发现存在接管风险的悬空子域名。
Stars: 0 | Forks: 0
```
███████╗██╗ ██╗██████╗ ████████╗ █████╗ ██╗ ██╗███████╗
██╔════╝██║ ██║██╔══██╗╚══██╔══╝██╔══██╗██║ ██╔╝██╔════╝
███████╗██║ ██║██████╔╝ ██║ ███████║█████╔╝ █████╗
╚════██║██║ ██║██╔══██╗ ██║ ██╔══██║██╔═██╗ ██╔══╝
███████║╚██████╔╝██████╔╝ ██║ ██║ ██║██║ ██╗███████╗
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝
```
**子域名接管扫描器**
*作者:pdietzel*


## 功能简介
`subtake` 用于查找可能存在**子域名接管** 漏洞的子域名。
当 DNS 记录(通常是 `CNAME`)仍然指向一个已被释放或从未声明过的外部服务(如 GitHub Pages、AWS S3、Heroku、Azure、Vercel 等)时,就可能发生接管。此时,任何能够注册该资源的人都可以控制受害者子域名上提供的服务内容(例如网络钓鱼、Cookie 窃取、OAuth 滥用等)。
对于每个主机,`subtake` 会执行以下操作:
1. 解析 **DNS CNAME** 链,并检查目标是否仍然可以解析。
2. 通过 **HTTPS/HTTP** 获取主机信息。
3. 将响应与 **服务指纹** 数据库(即各个服务商返回的“未声明资源”页面)进行匹配。
4. 报告判定结果:`VULNERABLE`(存在漏洞)、`POTENTIAL`(潜在漏洞)或安全。
## 功能特性
- DNS CNAME 及悬空记录(`NXDOMAIN`)检测
- 针对 20 多种常见服务的 HTTP 正文指纹识别
- 支持可配置线程池的并发扫描
- 支持单个主机、文件输入或通过管道传输 `stdin`
- 简洁且带颜色的终端输出,并提供扫描摘要
- 可选的 JSON 导出功能,方便用于生成报告 / 集成到 pipeline
- 纯标准工具链 —— 仅需三个小型依赖
## 安装
```
git clone https://github.com/bowligth/subtake.git
cd subtake
pip install -r requirements.txt
```
## 用法
```
# 单个 subdomain
python subtake.py -d shop.example.com
# subdomain 列表,40 个线程,保存 JSON
python subtake.py -l examples/subdomains.txt -t 40 -o results.json
# 从其他工具(subfinder、amass、...)通过 pipe 传入
subfinder -d example.com -silent | python subtake.py
```
### 选项
| Flag | Description |
|------|-------------|
| `-d, --domain` | 扫描单个子域名 |
| `-l, --list` | 包含子域名的文件(每行一个) |
| `-t, --threads` | 并发工作线程数(默认为 `20`) |
| `--timeout` | HTTP 超时时间(秒,默认为 `10`) |
| `-o, --output` | 将结果写入 JSON 文件 |
| `--no-color` | 禁用彩色输出 |
| `-v, --verbose` | 同时打印看起来安全的主机 |
## 输出示例
```
[VULNERABLE] shop.example.com
service : GitHub Pages
cname : someuser.github.io
reason : service fingerprint matched in HTTP body
[POTENTIAL] cdn.example.com
service : Microsoft Azure
cname : foo.azurewebsites.net
reason : CNAME to known service is dangling (NXDOMAIN)
```
- **VULNERABLE** — 匹配到了已知的接管指纹。高置信度。
- **POTENTIAL** — 存在悬空的 CNAME,或匹配到了需要手动验证的服务。
在报告之前,请务必手动验证扫描结果。`POTENTIAL` 结果只是一个线索,而非确凿的证据。
## 扩展指纹库
指纹数据库位于 `subtake.py` 的 `FINGERPRINTS` 列表中。
每个条目都将 CNAME 模式和响应字符串映射到一个服务。你可以按照相同的结构添加自己的规则。关于签名的一个优质社区参考资源是
[EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz)。
## 负责任的使用
仅对你**拥有**或被**明确授权**测试的域名(例如范围内的漏洞赏金项目或已签约的委托)使用 `subtake`。检测或尝试接管你不控制的资产可能是违法的。你需要对自己的使用方式负责。
## 许可证
MIT — 查看 [LICENSE](LICENSE)。标签:C2日志可视化, Python, 子域名接管, 指纹识别, 无后门, 逆向工具