一款用于检测缺失托管 DNS 区域(可能导致子域名接管)的快速工具。
DNS 接管漏洞发生在子域名(subdomain.example.com)或域名的权威名称服务器设置为某个提供商(例如 AWS Route 53、Akamai、Microsoft Azure 等),但托管区域已被移除或删除时。因此,当请求 DNS 记录时,服务器会返回 SERVFAIL 错误。这使得攻击者能够在原本使用的服务上创建缺失的托管区域,从而控制该(子)域名的所有 DNS 记录。¹
简单方法!你可以从发布页面下载预编译的二进制文件,解压后即可运行!
| 注意:需要安装并配置好 Go 1.16+ 编译器! |
非常快速且干净!
▶ go install github.com/pwnesia/dnstake/cmd/dnstake@latest
手动从源码构建可执行文件:
▶ git clone https://github.com/pwnesia/dnstake
▶ cd dnstake/cmd/dnstake
▶ go build .
▶ (sudo) mv dnstake /usr/local/bin
$ dnstake -h
·▄▄▄▄ ▐ ▄ .▄▄ ·▄▄▄▄▄ ▄▄▄· ▄ •▄ ▄▄▄ .
██▪ ██ •█▌▐█▐█ ▀.•██ ▐█ ▀█ █▌▄▌▪▀▄.▀·
▐█· ▐█▌▐█▐▐▌▄▀▀▀█▄▐█.▪▄█▀▀█ ▐▀▀▄·▐▀▀▪▄
██. ██ ██▐█▌▐█▄▪▐█▐█▌·▐█ ▪▐▌▐█.█▌▐█▄▄▌
▀▀▀▀▀• ▀▀ █▪ ▀▀▀▀ ▀▀▀ ▀ ▀ ·▀ ▀ ▀▀▀
(c) pwnesia.org — v0.0.1
用法:
[stdin] | dnstake [选项]
dnstake -t 主机名 [选项]
选项:
-t, --target <主机/文件> 指定要检测的单个目标主机或列表
-c, --concurrent <i> 设置并发级别(默认:25)
-s, --silent 抑制错误和/或精简输出
-o, --output <文件> 将存在漏洞的主机保存到文件
-h, --help 显示帮助信息
示例:
dnstake -t (子.)域名.tld
dnstake -t hosts.txt
dnstake -t hosts.txt -o ./dnstake.out
cat hosts.txt | dnstake
subfinder -silent -d 域名.tld | dnstake
DNSTake 使用 RetryableDNS 客户端库发送 DNS 查询。初始阶段使用 Google 和 Cloudflare 的 DNS 作为解析器,然后检测目标主机的名称服务器并进行指纹识别——如果存在名称服务器,则再次使用其 IP 作为解析器解析目标主机;如果返回异常的 DNS 状态响应(即非 NOERROR/NXDOMAIN),则该目标存在被接管的风险。其流程大致如下示意图所示。
当前支持的 DNS 提供商,请参阅此处。
DNSTake 使用 MIT 许可协议发布。详见 LICENSE。