什么是host碰撞
通过对 IP 和 域名 碰撞匹配,访问到绑定host才能访问的系统,当直接访问IP回显4xx错误,直接指定HOST头为某个域名时访问该IP回显正常时,可判断可进行HOSTS碰撞。
当一些域名只允许在内网访问时,可通过这种碰撞直接突破边界限制,访问到内网系统进行下一步渗透测试。
大概了解一下DNS解析过程:
1.在浏览器内部中查看是否有缓存
2.在本机hosts文件中查看是否有映射关系
3.本地DNS缓存(ipconfig /displaydns )
4.本地DNS服务器
5.跟域服务器
当用户在浏览器中输入一个需要访问的网址时,浏览器会查看自身是否有缓存,没有系统则会检查自己的Hosts文件中是否有这个域名和IP的映射关系。如果有,则直接访问这个IP地址指定的网络位置,如果没有,再向的DNS服务器提出域名解析请求。也就是说Hosts的IP解析优先级比DNS要高。
以Nginx为例,在映射外网服务时会配置很多映射关系,Nginx将外网经过的HTTP流量代理到不同的内网服务器上,以达到1个外网地址映射N个域名目的。由于业务变更或内外网公用Nginx等原因,域名虽未映射在外网,但在Nginx配置里确实存在对应内网映射关系,这就是Hosts碰撞问题产生原理。
利用条件
1、 如Nginx、Apache中,都可通过配置文件进行域名绑定,如Nginx的default_server,Apache的httpd.conf配置中的ServerName。
2、直接访问IP是无法访问成功的,而访问其绑定的域名才可以访问成功。
3、在访问域名的时候能够直接重定向服务器相关站点的目录下,即可成功访问。
靶场测试
ngnix配置如下:
该配置讲三个站点放在一个IP下面,只是做了不同的路径处理
测试过程:
浏览器直接访问admin.vulab.io,可以直接访问内网系统