subdomain-takeover 是做什么的?
子域名接管检测与利用工具。当目标存在悬空的CNAME/NS/MX记录,指向已弃用的云资源、过期第三方服务或未被认领的SaaS租户时,攻击者可注册这些服务并在受害者域名下提供内容。
核心功能
- 自动枚举目标域名的DNS记录(CNAME、NS、MX)
- 检测指向常见云平台(AWS S3、Azure、GitHub Pages、GitLab Pages、Heroku、CloudFront等)的悬空记录
- 验证服务是否可被注册:通过HTTP响应、错误页面特征或DNS解析结果判断
- 自动生成利用代码或配置模板(如S3存储桶策略、Cloudflare Worker脚本)
- 输出结构化报告,包含漏洞详情、利用步骤和修复建议
支持平台
| 平台 | 检测方法 | 利用方式 |
|---|---|---|
| AWS S3 | HTTP 404 / NoSuchBucket | 创建同名存储桶 |
| GitHub Pages | HTTP 404 / 自定义404页 | 创建同名仓库 |
| Heroku | DNS未解析 / no-such-app | 创建同名Heroku应用 |
| Azure | 错误码 / 租户不存在 | 注册同名Azure资源 |
使用示例
# 检测单个域名的子域名接管风险
yak subdomain-takeover --domain example.com
# 从文件批量检测
yak subdomain-takeover --list targets.txt
# 输出JSON格式报告
yak subdomain-takeover --domain example.com --output json
依赖
- Yaklang >= 1.3.0
- DNS解析库(内置)
- HTTP客户端(内置)
注意事项
- 仅在获得授权的情况下使用
- 某些平台可能需要API密钥才能完成注册
- 自动注册前请检查目标组织的范围和政策
- 部分平台(如Cloudflare)可能存在反自动化机制