Host碰撞环境搭建原理及复现

在渗透信息收集时,可能会搜集到很多ip但可能返回的是错误的状态码400、403、404等等,可能是因为采用了nginx反向代理禁用了ip直接访问。这种情况就可以使用Host碰撞找到隐藏业务。需要根据已知的信息配置响应的域名字典进行Host碰撞。

复现过程

因为本机之前已经存在nginx,tomcat,为了方便在windows的系统下进行演示,Linux同理。

首先找到我们的tomcat目录,在其bin目录下点击startup.bat启动,如果启动闪退可能端口被占用,需要修改conf目录的server.xml文件。

本机ip:192.168.3.17 端口:8003

访问地址:http://localhost:8003 或者 http://192.168.3.17:8003会跳到以下界面

 nginx下载好后在windows直接点击exe启动,会发现nginx存在了两个进程

 直接访问http://localhost ,成功进入以下界面

 

测试成功后,杀掉这两个nginx进程,如果一个删不掉先删另一个,然后修改conf目录下的nginx.conf配置文件。将之前默认的server删掉,新增两个server

说一下这两个server的意思,

第一个server:

使用了显示的default_server,如果没加default_server第一个定义的server会自动作为default_server,用来处理没有匹配到server_name的请求,这种方式直接禁止了ip的直接访问

第二个server:

使用www.tpaertest.com域名进行访问,会将请求转发到92.168.3.17的8003端口,也就是我们的tomcat。

server {
    listen 80 default_server;
    server_name _;
    return 400;
}
server {
    listen 80;
    server_name www.tpaertest.com;
        
    location / {
        proxy_pass http://192.168.3.17:8003;
        proxy_redirect off;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        root html;
        index index.html index.html;
    }
     access_log  logs/test.com.log;
}

 

启动nginx(之前一定杀掉进程)

尝试直接访问ip http://192.168.3.17/  

 

 尝试www.tpaertest.com域名访问,首先这个域名是不存在的,需要进行配置。

 当用户在浏览器中输入一个需要访问的网址时,浏览器会查看自身是否有缓存,没有系统则会检查自己的Hosts文件中是否有这个域名和IP的映射关系。如果有,则直接访问这个IP地址指定的网络位置,如果没有,再向的DNS服务器提出域名解析请求。也就是说Hosts的IP解析优先级比DNS要高。

 hosts文件在C:\Windows\system32\drivers\etc\hosts路径下,需要进行添加域名。也可以在github git下来SwitchHosts进行域名的设置,原理是一样的。

 配置后使用域名可以成功访问

 

 

我们现在使用ip是访问不了的,使用域名是可以访问的。接下来使用ip通过host碰撞成功访问到tomcat页面,首先用burp拦截到访问http://192.168.3.17的请求包,发送到Repeater重发器可以看见返回的结果是之前设置好的400

 

更改host为www.tpaertest.com ,重新发送请求成功访问到tomcat页面

 

www.tpaertest.com 是内网本地hosts设置的域名,那么我们在配置中更改为一个外网真实域名www.tpaer.com会怎么样呢。是会访问到tomcat这个页面,还是会访问真实域名的页面。

修改第二个server,重新启动nginx

server {
		listen 80;
		server_name www.tpaer.com;
        
		location / {
			proxy_pass http://192.168.3.17:8003;
			proxy_redirect off;
			proxy_set_header Host $host:$server_port;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			root html;
			index index.html index.html;
		}
		access_log  logs/test.com.log;
	}

还是用刚才的包,把host改为www.tpaer.com ,返回的是tomcat页面也就是我们在nginx中设置好的。这次响应的时间明显有了1秒左右的停顿,多出来的时间应该就是DNS服务器解析域名的时间。

 

在我们收集到ip地址后,访问ip返回404,403,400等错误的状态码,就可以尝试使用host碰撞搜集到隐藏的业务。

我们可以直接对Host进行fuzz爆破,或者使用脚本。

这里找到了大佬写好的python脚本地址:
https://github.com/fofapro/Hosts_scan
 

host.txt,ip.txt可以写入字典,最后会输出成功的hosts_ok.txt

host.txt

www.tpaer.com
blog.tpaer.com
admin.tpertest.com
www.tpaertest.com

ip.txt

127.0.0.1
192.168.3.17

运行脚本,和预期一样成功host碰撞2条数据

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值