子域名枚举

介绍:

        正常的渗透测试中前期的信息收集很重要,当多发现一个资产暴漏面就可能多一个攻击点,就更有可能拿下目标系统,正常对子域名的收集大部分都是通过子域名爆破,或者域传送漏洞等,这里对子域名枚举进行一个整理总结,以便更好的了解子域名收集的原理和手段;

另外有些基础知识还是要了解,常见DNS记录类型如下,另外默认使用的TCP/UDP端口号是53:

A       IP地址记录,记录一个域名对应的IP地址
AAAA    IPv6 地址记录,记录一个域名对应的IPv6地址
CNAME   别名记录,记录一个主机的别名
MX      电子邮件交换记录,记录一个邮件域名对应的IP地址,如[email protected]
NS      域名服务器记录 ,记录该域名由哪台域名服务器解析
PTR     反向记录,也即从IP地址到域名的一条记录
TXT     记录域名的相关文本信息

正常我们可以使用NS获取网址的dns服务器,可以自己指定DNS服务器:

nslookup -qt=NS baidu.com 8.8.8.8  

 

子域名爆破:

        这个就很简单,主要就是使用工具加字典对子域名进行爆破枚举,这样枚举的数量取决于我们字典的质量,工具的好坏,当我们大量枚举且线程较高的情况下流量过大可能会触发报警,进而导致我们发现的子域名并不全面,但是作为最常见好用的手段,还是很重要:

        子域名爆破重要的三点工具+字典+dns服务器:

        首先是字典,这个网上有很多的地址可以下载字典,可以自行去下载,但是大部分字典里面有很多垃圾数据且不全面,这个需要手动对字典进行更新,字典不要太大,太大时间成本太高,而且如果线程设置较高会有丢包现象,最常见的就是每次爆破出来结果都不一样;

        dns服务器的选择要看你爆破的域名服务的是国内的还是国外的,确定了这个就可以对dns服务器进行选择,这里推荐几个:

        公共dns:114.114.114.114 和 114.114.115.115

        阿里DNS: 223.5.5.5 和 223.6.6.6

        OpenDNS:208.67.222.222 和 208.67.220.220

        Google DNS: 8.8.8.8 和 8.8.4.4

        工具选择,这里我常用的是Layer和ksubdomain,

ksubdomain地址:

https://github.com/knownsec/ksubdomain

除非要自己修改代码编译的,不然直接下周release的可执行文件,命令如下:

ksubdomain -d baidu.com -f subdomain.txt -ttl -b 1k -o /home/dnsscan/out.txt

结果可以使用awk分割:awk '{print $1,$3,$3,$7}' out.txt

虽然使用-b降低了速度,但是还是存在丢包问题,虽然很快,但是丢包可能导致扫描的不完全。

Layer地址:

https://github.com/euphrat1ca/LayerDomainFinder

Layer在windows下使用,方便小白操作,可以自己设置dns服务器,速度没有 ksubdomain快,但是还可以:

 另外网上也有很多爆破工具这里就不列举了,可以自己去下载测试

搜索引擎:

另外可以配合使用搜索引擎进行查找:

google:  site:target.com

bing:   site:target.com

钟馗之眼:site=target.com

证书透明度:

证书透明度(Certificate Transparency)是证书授权机构的一个项目,证书授权机构会将每个SSL/TLS证书发布到公共日志中。一个SSL/TLS证书通常包含域名、子域名和邮件地址。查找某个域名所属证书的最简单的方法就是使用搜索引擎搜索一些公开的CT日志。

Google Chrome 网络浏览器的一项强制要求生效,要求所有新颁发的 TLS 证书颁发机构均遵守 Chromium 证书透明度 (CT) 政策。根据此强制规定,网站必须确保由证书颁发机构 (CA) 颁发的公开信任的证书出现在 CT 日志中。否则,Chrome 将向访问者显示一条错误消息,警告他们该网站不符合 CT 标准,并将阻止通过 HTTPS 连接提供的子资源正确加载。

https://crt.sh/
https://search.censys.io/certificates
https://ui.ctsearch.entrust.com/ui/ctsearchui

或者使用工具ctrf:

https://github.com/UnaPibaGeek/ctfr

使用命令: python3 ctfr.py -d test.com

 

SAN(Subject Alternate Name)主题备用名称:

SAN(Subject Alternate Name)主题备用名称,主题备用名称证书简单来说,在需要多个域名,将其用于各项服务时,可使用SAN证书。允许在安全证书中使用subjectAltName字段将多种值与证书关联,这些值被称为主题备用名称。名称可包括:IP地址、DNS名称等。

工具:the-art-of-subdomain-enumeration

https://github.com/appsecco/the-art-of-subdomain-enumeration

 python3 san_subdomain_enum.py www.baidu.com

信息泄露:

GitHub:

github可以直接搜索,但是内容很多,最好配合工具,可以使用工具github-subdomains:

https://github.com/gwen001/github-subdomains

crossdomain.xml:

访问跨域策略文件crossdomain.xml文件:

robots.txt 

robots.txt导致目录或子域名泄露: 

 

CSP(Content-Security-Policy):

如果设置了csp,其中可能存在子域名:

可以使用工具csprecon批量获取:

https://github.com/edoardottt/csprecon
apt install gccgo-go 
apt install golang-go
go install github.com/edoardottt/csprecon/cmd/csprecon@latest

sitemap.xml

网站地址文件sitemap.xml导致信息泄露:

页面存在泄露:

在js或者html中的跳转等可能隐藏一些子域名,这里可以使用爬虫工具爬取,这里推荐使用gospider:

https://github.com/jaeles-project/gospider

DNS域传输漏洞:

所谓域传送漏洞,就是任何机器都可以冒充备用服务器向主服务器发送域传送请求。主要通过AXFR 和 IXFR 区域传输:

AXFR:完全区域传输,完全传送整个区域数据库
IXFR:增量区域传输,这时可使用任选的查询类型,允许辅助服务器仅找出一些区域的变化用于区域副本与源区域(可以是另一DNS服务器维护的主要或辅助区域副本)之间的同步

 可以使用nslookup,这里随便使用freebuf测试,当存在漏洞的时候使用ls可以打印出网址:

也可以使用dig,首先使用nslookup获取服务器地址:

nslookup -qt=NS baidu.com

 

 dig @110.242.68.134 baidu.com

dig @110.242.68.134 -t axfr baidu.com 

这里仅作测试,当存在域传输漏洞时,可以使用axfr同步主域服务器网址

 

当然也可以使用nmap测试

nmap --script dns-zone-transfer.nse --script-args "dns-zone-transfer.domain=vulhub.org" -Pn -p 53 192.168.101.152

工具集合:

上述这些功能集合比较好的项目OneForAll:

https://github.com/shmilylty/OneForAll

OneForAll基本涵盖了上述的方法,用起来也很简单实用,推荐使用:

python3 oneforall.py --target dxy.cn --dns False run

会生成csv文件,打开可以看到扫描结果还是比较全面的:

结尾:

基本上对子域名的获取大概就是上面这些了,工具的使用能加快我们对资产的了解,但是工具的原理还是要有一点的了解,这样方便我们在日常操作中可以更灵活的进行测试工作。

猜你喜欢

转载自blog.csdn.net/GalaxySpaceX/article/details/132599035