起因是在Cloudflare
和DNSPod
添加域名时系统会扫描待添加域名的子域解析记录,感觉很神奇。
方法一:穷举/使用字典
通过穷举N位数的子域,例如从000到zzz,找到部分子域。
通过常用子域字典,例如www、server、mail、wap、dl,找到部分子域。
不管是穷举还是跑字典,都需要一条条的向DNS服务器请求来获得解析情况。
这个操作除了用软件爆破外还可以通过在线网站完成,百度就能找到不少这类网站,例如:在线子域名扫描-YoungxjTools (yum6.cn)。
缺点:如果子域字数多且不在字典里就没法查到了。
方法二:通过查询HTTPS/SSL的证书数据
证书授权机构有一个叫证书透明度(Certificate Transparency)的项目,会把每个SSL/TLS证书发布到公共日志中。
通过一些在线工具,即可查出域名子域。
例如这个网站:crt.sh | Certificate Search
缺点:如果子域名没有申请SSL证书,就没法查到了。
ps. 我在腾讯云免费申请的TrustAsia
SSL证书通过上面那个crt.sh
网站都能查到,但是其他证书机构/付费证书能不能查到就不清楚了。
其他方法
上面只列举了两个最方便使用的方法,除此之外还有很多别的方法,例如DNS区域传送、DNS缓存探测(DNS Cache Snooping)、DNS聚合器(DNS aggregators),但比较麻烦不方便使用就不列出了。