0x01 hosts碰撞
在某些时候我们用IP访问时,目标资产响应多为: 401、403、404、500,但是用域名请求却能返回正常的业务系统,这是因为大多数系统都会需要绑定域名才能访问,而且这种情况默认是在内网访问。
举个例子就懂了,网站对外主域名为www.test.com,而内网中存在多个业务系统,皆有绑定内网域名,比如manage.test.com,这是内网自定义的域名,无法在公网DNS解析到,即不是备案过的子域名,无法直接访问到,因为公网无法解析其IP。
系统管理员其实是这样配置的,利用apache或nginx进行配置配置,使无法直接通过IP去访问系统,有因为公网DNS无法解析自定义子域名,因此访问系统有两个条件,即知道系统的内网域名和对应的IP,利用本地DNS解析即可访问。
0x02 DNS缓存
简单说明下DNS解析机制。当我们访问某个域名时,会解析到对应的IP去访问业务系统,顺序如下:
- 浏览器缓存,先检查自身缓存中有没有被解析过的这个域名对应的ip地址。
- 本地缓存hosts文件,在C盘系统文件下有个hosts文件,记录域名和对应的IP地址(此步就是hosts碰撞的修改点)
- 本区域域名服务器(LDNS),即你所在或附近城市的域名服务器,大约80%的域名解析到这里就完成了。
- 再高一级域名服务器,如果还是解析不到就继续往上一级查,此处就不赘述了。
0x03 批量检测
hosts碰撞原理如下图。此处的本地DNS解析可以在hosts文件配置。知道了原理,我们就可以收集内网系统的域名和目标资产的IP段,将两者进行组合遍历,便可发现一些暴露在公网的内网资产了。
这里是推荐一个批量发现工具,针对hosts碰撞批量发现。
https://github.com/fofapro/Hosts_scan
把IP列表放在ip.txt,把某系统的可能的子域名或是内网域名放在host.txt,工具截图如下:
关注公众号:白帽学子,回复 0724,获得工具包。