文章目录
- host 碰撞
- 漏洞原理
- 漏洞利用步骤
- 漏洞复现
host 碰撞
直接利用ip访问显示的是403 404 400 500,但是用域名请求就会返回正常业务。当然在排除WAF作祟下(有一些WAF它会要求使用域名访问,使用IP的会出现WAF的拦截界面),我们就可以利用hosts碰撞技术来尝试一下是否能突破边界。
漏洞原理
漏洞产生的根本还是源于配置不当,一些系统配置了内网访问,但是由于配置不当的话,如Nginx、Apache中,都可通过配置文件进行域名绑定,如Nginx的default_server,Apache的httpd.conf配置中的ServerName。直接访问IP是无法访问成功的,而访问其绑定的域名才可以访问成功。在访问域名的时候能够直接重定向服务器相关站点的目录下,即可成功访问。
漏洞利用步骤
- 搜集指向目标内网IP的域名
- 搜集目标IP资产
- 进行碰撞
可以通过OneForAll等工具搜集一些子域名,挑选出指向内网IP的域名
然后搜集目标资产的IP,探测Web服务,将探测到开放WEB服务的IP资产搜集起来。
通过Hosts_scan,将搜集到的域名和IP分别放入hosts.txt和ip.txt(也可以在host中添加一些内网办公系统常用的子域名)运行,通过对比数据包大小和标题即可得到匹配成功的Host头与对应IP。
项目地址:https://github.com/fofapro/Hosts_scan
漏洞复现
搭建环境,安装nginx
[root@localhost etc]# yum install -y epel-release
[root@localhost etc]# yum -y update
[root@localhost etc]# yum install -y nginx
配置漏洞环境
1、设置反向代理
这里用apache模拟反向代理端口(实际上应该还要创建一个网卡去模拟内网端口,为了省事就模拟一下端口吧),为了防止端口与nginx冲突,我们修改为8000端口。
2、限制IP访问
配置文件位置/etc/nginx/nginx.conf
替换配置文件中的http部分如下
http {
include /etc/nginx/conf.d/*.conf;
# 限制IP访问
server {
listen 80 default;
server_name _;
return 403;
}
server {
listen 80;
server_name www.test.com;
location / {
#反向代理
proxy_pass http://192.168.178.143:8000;
index index.html index.htm index.jsp;
}
}
}
配置好访问结果如下
然后我们修改本地hosts文件,添加一条本地解析
然后使用www.test.com进行访问
即可访问到apache默认页面,假设某公司内部系统也错误配置,我们即可访问到该公司的内部系统。
3、脚本复现
把收集过来的域名和IP分别存入hosts.txt 和 ip.txt
可以看到碰撞成功的结果
参考文章