作者:
腾讯蓝军实习生
jax、yhy、A1oe
前言
在历次HW、红蓝对抗、渗透测试项目中,外网的信息收集是至关重要的一个环节,外网打点信息收集全面了,可能会有四两拨千斤效果,直接突破外网边界进入内网。
最近我们三人加入腾讯蓝军学习渗透技巧,导师让我们对域名资产收集方式做一次全面梳理研究。子域名是域名信息收集的一个重要部分,在防御措施严密情况下我们无法直接拿下主域名,那么就可以采用迂回战术拿下子域名,然后无限靠近主域名。
方法原理介绍
1. 利用证书透明度收集子域
原理
引用谷歌的项目介绍:“要向用户提供加密流量,网站必须先向可信的证书授权中心 (CA) 申请证书。然后,当用户尝试访问相应网站时,此证书即会被提供给浏览器以验证该网站。近年来,由于 HTTPS 证书系统存在结构性缺陷,证书以及签发证书的 CA 很容易遭到入侵和操纵。Google 的证书透明度项目(https://www.certificate-transparency.org/)旨在通过提供一个用于监测和审核 HTTPS 证书的开放式框架,来保障证书签发流程安全无虞。”
那么,通过这样的证书透明度项目,我们就可以在其中获取一些有价值的域名。
实现方法:
访问以下链接搜索需要查询的域名如:tencent.com
(1) crtsh:
https://crt.sh/
(2) facebook:https://developers.facebook.com/tools/ct
(3) entrust:
https://www.entrust.com/ct-search/
(4) certspotter:https://sslmate.com/certspotter/api/
(5) spyse:
https://spyse.com/search/certificate
(6) censys:
https://censys.io/certificates
(7) google:
https://google.com/transparencyreport/https/ct/
2. 常规检查收集子域
2.1 域传送
原理
域传送操作是指备用服务器向主服务器查询来刷新自己的Zone数据库,保证数据一致性。此操作的目的是为了防止主域名服务器因意外故障变得不可用时影响到全局。正常情况下,只有在网络里存在备用域名 DNS 服务器时,DNS区域传送操作才有必要执行。一旦DNS服务器被错误地配置成任何人发出请求,都向其提供Zone数据库的拷贝,就会被攻击者利用。
实现方法
1. dig命令
如dig @ns2.xxx.com xxx.com axfr
ns2.xxx.com为提供数据的服务器,xxx.com为要传输的关键字,axfr为区域传输选项。
2. python中dns库
xfr = dns.query.xfr(where=server, zone=self.domain, timeout=5.0, lifetime=10.0)
zone = dns.zone.from_xfr(xfr)
存在问题
一般情况下,DNS服务器都配置正确,关闭了dns传输或设置了白名单,漏洞利用成功的概率较低。
2.2 站点配置文件
原理
信息泄露问题主要就是某域名下的一些文件会存储与其相关的一些域名,如子域名。此类文件包括跨域策略文件crossdomain.xml, sitemap文件。
实现方法
建立文件列表,拼接域名后直接访问,判断改文件是否存在。若存在则提取数据,若不存在则跳过。
1. crossdomain.xml文件
直接访问crossdomain.xml路径
2. sitemap文件
直接访问sitemap.xml、sitemap.txt、sitemap.html、sitemapindex.xml、sitemapindex.xml路径
存在问题
文件往往不存在,即使存在,域名信息也不够多不够完全。
2.3 检查内容安全策略
原理
内容安全策略(CSP,Content Security Policy)是一种声明的安全机制,可以让网站运营者能够控制遵循CSP的用户代理(通常是浏览器)的行为。通过控制要启用哪些功能,