声明:
请遵守《中华人民共和国网络安全法》,禁止进行未经授权的渗透测试行为!
本人不提供任何攻击教程及工具,本文仅作研究和学习用途,请勿利用文中的技术资料进行未经授权的测试行为。利用文中所提供的信息对未授权的计算机系统造成的直接或间接后果和损失,由使用者承担。

子域名枚举是一种挖掘有效子域名的过程,来拓展我们可攻击的范围并且探索更多潜在的漏洞点
子域名枚举有三种方法:

  • 爆破
  • OSINT(公开来源情报)
  • 虚拟主机

OSINT-SSL/TLS Certificates

当一个CA(证书颁发机构)为一个域名创建SSL/TLS证书时,会留下一个证书公开记录,所有域名的SSL/TLS证书在此公开以保证真实性,我们可以从https://crt.shhttps://ui.ctsearch.entrust.com/ui/ctsearchui 查询实时或历史证书记录

OSINT-Search Engines

搜索引擎包含了很多网站,可以用高级搜索的筛选器来查询,例如-site:www.domain.com site:*.domain.com将只会显示除www以外的子域名

DNS爆破

DNS爆破枚举使用字典实现,指令如下:

1
dnsrecon -t brt -d domain.com

OSINT-Sublist3r

为了加快子域名挖掘,可以使用自动化工具sublist3r,指令如下:

1
./sublist3r.py -d domain.com

虚拟主机

一些子域名不会总是托管在公开可访问的DNS结果中,例如一个网络应用程序的开发版本,这个DNS记录会保持在私有的DNS服务器或开发者的电脑hosts文件里/etc/hosts file (Windows为:\windows\system32\drivers\etc\hosts) ,映射域名和IP

因为服务器可以同时主持多个网站,服务器从客户端的Host头得知要访问的网站,我们可以改变host头来发现新网站,指令如下:

1
ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt -H "Host: FUZZ.domain.com" -u http://......

以上的指令使用-w去指定使用的词典,-H去添加或修改一个头(Host Header),用FUZZ关键词来代替子域名(字典)

因为上述会出现很多可能的结果,所以我们用-fs来筛选响应时间内的结果(ms)指令如下:

1
ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt -H "Host: FUZZ.domain.com" -u http://...... -fs {size}