Host碰撞漏洞及检测工具

457 篇文章 24 订阅
303 篇文章 11 订阅

一、漏洞介绍

1.1 基本介绍

Host碰撞漏洞的特征是当直接访问IP地址时,会收到4xx错误提示,但当我们在访问时指定正确的域名作为Host头部字段时,却可以正常获取页面内容。这种情况可能会被攻击者利用来绕过访问控制,例如通过公网访问一些未经授权的资源等。

1.2 漏洞原理

Host碰撞漏洞的原理在于,当多个域名共享同一个IP地址时,服务器会根据接收到的HTTP请求中的"Host"头部字段来确定要访问的网站。如果服务器没有正确验证"Host"头部字段的值,攻击者可以通过修改该字段来访问其他虚拟主机上的资源。例如在服务器软件如Nginx、Apache等的配置中,可以通过配置文件进行域名绑定,像Nginx的default_server,或者Apache的httpd.conf配置中的ServerName。有时候直接访问IP地址是无法成功访问资源的,必须通过绑定的域名才能成功获取页面内容。

1.3 常见场景

  • 域名服务下线或者转内网以后,只对域名进行了解绑,没有对nginx的配置做清理

  • 某个Nginx同时绑定了内网和外网域名

1.4 快速验证

方式一:

 `curl --resolve www.test.com:80:8.200.131.57 http://www.test.com`

这段 curl 命令的意思是,在访问 http://www.test.com 的时候,将该域名的解析地址指定为 8.200.131.57,端口为 80。这个命令的作用是在进行 HTTP 请求时,显式地指定了域名解析地址,而不是依赖于系统的 DNS 解析。

方式二:

直接编写/etc/hosts文件,强制指定host域名对应的解析IP地址,浏览器访问该域名

方式三:

import requests      url = 'http://8.200.131.57'   headers = {'Host': 'www.test.com'}   response = requests.get(url, headers=headers)   print(response.text)   

在 Python 中模拟该命令,使用 requests 库,并在请求头中指定 Host 字段

二、实际案例

2.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 上的服务

2.2 访问效果

  1. 不带host访问,返回400

  1. 添加host: test.com:3333 访问,可正常查看

三、检测工具

3.1 工具介绍

项目地址开发语言Star数
https://github.com/cckuailong/hostscanGo523
https://github.com/pmiaowu/HostCollisionJava549
https://github.com/fofapro/Hosts_scanPython1100

3.2 代码分析

Github上类似的检测工具非常之多,Go、Python、Java各语言开发的也都覆盖了,基本上也都支持多线程检测,检测原理基本上也都一致。以下用Star数最高的,Python语言开发的进行分析。其检测代码只有20来行,主要是提前子啊host.txt 配置相应的域名, ip.txt 填写相应的IP数据,使用requests发送HTTP请求,请求地址是IP资产,请求headers中,添加Host,填写对应的域名

#!/usr/bin/python   # -*- coding: UTF-8 -*-   #Author:R3start   #这是一个用于IP和域名碰撞匹配访问的小工具      import requests   import re         lists=[]   files = open('hosts_ok.txt','w+')   #读取IP地址   print("====================================开 始 匹 配====================================")   for iplist in open("ip.txt"):       ip = iplist.strip('\n')       #读取host地址       http_s = ['http://','https://']       for h in http_s :           for hostlist in open("host.txt",'r'):               host = hostlist.strip('\n')               headers = {'Host':host,'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'}               try:                   r = requests.session()                   requests.packages.urllib3.disable_warnings()                   rhost = r.get(h + ip,verify=False,headers=headers,timeout=5)                   rhost.encoding='utf-8'                   title = re.search('<title>(.*)</title>', rhost.text).group(1) #获取标题                   info = '%s -- %s 协议:%s 数据包大小:%d 标题:%s' % (ip,host,h,len(rhost.text),title)                   lists.append(info)                   files.write(info + "\n")                   print(info)               except Exception :                   error = ip + " --- " + host + " --- 访问失败!~"                   print(error)   print("====================================匹 配 成 功 的 列 表====================================")   for i in lists:       print(i)   


黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
检测到目标URL存在http host头攻击漏洞是指在访问网站时,攻击者可以通过篡改HTTP请求的Host头字段来进行攻击。为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段。然而,这个Host字段值是不可信赖的,因为攻击者可以通过HTTP代理工具篡改该字段,从而传入恶意代码。当服务器没有对Host字段值进行处理时,就可能造成http host头攻击漏洞。对于这个漏洞,修复方案有多种。比如,对于Nginx服务器,可以通过重定向到错误页面来防止http host头攻击;而对于Apache服务器,可以采取不同的修复方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [检测到目标URL存在http host头攻击漏洞,修复方案:在Web服务器防止Host头攻击](https://blog.csdn.net/doulicau/article/details/106685476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [检测到目标URL存在HTTP host头攻击漏洞](https://blog.csdn.net/weixin_43263019/article/details/121532072)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值