freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

host碰撞
进击的HACK 2022-08-15 10:51:41 407651
所属地 上海

0x00 hosts碰撞

在渗透测试中,搜集了很多IP资产,端口也开放了WEB服务,但打开总是403 404 400错误,扫目录也扫不到东西。这时候可以尝试利用HOSTS碰撞技术突破其边界对其内网系统进行攻击。

什么是HOSTS碰撞,当直接访问IP回显4xx错误,直接指定HOST头为某个域名时访问该IP回显正常时,可判断可进行HOSTS碰撞。

当一些域名只允许在内网访问时,可通过这种碰撞直接突破边界限制,访问到内网系统进行下一步渗透测试。

HOST头攻击

从HTTP / 1.1开始,HTTP Host标头是必需的请求标头。它指定客户端要访问的域名。例如,当用户访问https://example.net/web-security时,其浏览器将组成一个包含Host标头的请求,如下所示:

GET /web-security HTTP/1.1
Host: example.net

在某些情况下,例如当请求由代理转发时,Host值可能会在到达预期的后端组件之前进行更改。也就发生了Host头攻击。

0x01 出现的原因

如Nginx、Apache中,都可通过配置文件进行域名绑定,如Nginx的default_server,Apache的httpd.conf配置中的ServerName。直接访问IP是无法访问成功的,而访问其绑定的域名才可以访问成功。在访问域名的时候能够直接重定向服务器相关站点的目录下,即可成功访问。

0x02 利用

  • 搜集指向目标内网IP的域名

  • 搜集目标IP资产

  • 进行碰撞

最主要的是搜集指向内网IP的域名,可以通过OneForAll等工具搜集一些子域名,挑选出指向内网IP的域名,把这些内网IP对应的域名进行搜集。

https://github.com/shmilylty/OneForAll

然后搜集目标资产的IP,探测Web服务。探测web服务可以使用goby。

将探测到开放WEB服务的IP资产搜集起来。

然后通过Hosts_scan,将搜集到的域名和IP分别放入hosts.txt和ip.txt(也可以在host中添加一些内网办公系统常用的子域名)运行,通过对比数据包大小和标题即可得到匹配成功的Host头与对应IP。

https://github.com/fofapro/Hosts_scan

也可对某个IP的Host头的值进行Fuzz

然后在Burp Proxy中的Options选项中设置好Host头的Replace规则

配置好并启用后通过浏览器设置Burp代理访问该IP后即可访问设置的内网系统。

可对内网系统进一步进行渗透测试。

0x03 环境搭建

作为演示,nginx反代服务器和隐藏的业务在一起

docker pull vultarget/host_collision
docker run -it -p 3333:8080 --rm vultarget/host_collision

配置详解

  1. nginx配置文件 -- 反代服务器


server {
    listen  8080  default_server;
    server_name _;
    return 400;
}
server {
    listen  8080;
    server_name test.com;


    location / {
        proxy_pass http://127.0.0.1:80;
        proxy_redirect off;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
            root    html;
        index   index.html  index.htm;
    }
    access_log logs/test.com.log;
}

第一个server表示 host为空时,会返回400

第二个server表示 nginx会根据传入的host进行服务转发,访问test.com访问的业务为 127.0.0.1:80 上的服务。

  1. nginx配置文件 -- 业务

server {
    listen       80;
    server_name  localhost;


    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }


    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

简单的nginx初始页面。

0x04 复现

  1. 不带host访问

image
返回400
2. host == "test.com"
image

成功访问到隐藏的业务。

0x05 修复建议

不把服务IP暴露在公网上,只能使用VPN进行访问。

参考链接

https://mp.weixin.qq.com/s/IJhAAXyFpU72j1yQ420L0g

https://www.freebuf.com/articles/web/202764.html

http://www.hackdig.com/10/hack-513892.htm

# 渗透测试 # 网络安全 # web安全 # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 进击的HACK 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
进击的HACK LV.6
欢迎关注公众号:进击的HACK 坚持每日更新,一起变得更强。
  • 36 文章数
  • 49 关注者
nuclei介绍与持续更新的poc集合
2023-04-24
钓鱼前邮件收集
2023-04-10
红队实战 | cobaltstrike钉钉群上线提醒
2023-04-06
文章目录