(三)Host头攻击
01 漏洞描述
为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段。例如,在php里用_SERVER["HTTP_HOST"]。但是这个Host字段值是不可信赖的(可通过HTTP代理工具篡改),如果应用程序没有对Host字段值进行处理,就有可能造成恶意代码的传入。
02 漏洞知识拓展
Host首部字段是HTTP/1.1新增的,旨在告诉服务器,客户端请求的主机名和端口号,主要用来实现虚拟主机技术。
运用虚拟主机技术,单个主机可以运行多个站点。以下图为例,hacker和usagidesign两个站点都运行在同一服务器A上,不管我们请求哪个域名,最终都会被解析成服务器A的IP地址,这个时候服务器就不知道该将请求交给哪个站点处理,因此需要Host字段指定请求的主机名。
我们访问hacker域名,经DNS解析,变成了服务器A的IP,请求传达到服务器A,A接收到请求后,发现请求报文中的Host字段值为hacker,进而将请求交给hacker站点处理。(这里又涉及到计算机网络知识了,是不是觉得要学的真多?没关系,我后面都会一一介绍的)
这个时候,问题就出现了。为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段。例如,在php里用_SERVER["HTTP_HOST"]。但是这个Host字段值是不可信赖的(可通过HTTP代理工具篡改),如果应用程序没有对Host字段值进行处理,就有可能造成恶意代码的传入。
03 漏洞检测
Host头攻击漏洞的检测比较简单,只需要抓包,修改Host字段值,提交,查看响应中是否包含修改后的Host字段值即可。
下面我分三个场景,介绍一下Host头攻击漏洞存在的表现。
跳转
场景一:正常请求,响应302,Location首部字段指明跳转的地址,其中Location字段值为Host字段指定的地址。
将请求包的Host字段值修改为www.baidu.com提交,响应包中的Location地址也被更改为www.baidu.com。
拼接
场景二:正常请求,正常响应,将Host字段值拼接到标签属性值中。

将请求包的Host字段值修改为www.baidu.com提交,发现服务器将www.baidu.com拼接到了script标签的src属性值中。
代码注入
场景三:这其实也属于拼接,只不过在场景二的基础上写入了恶意代码。

利用Host字段写入script标签,弹出警告框。
04 漏洞修复
对Host字段进行检测。
Nginx,修改ngnix.conf文件,在server中指定一个server_name名单,并添加检测。
Apache,修改httpd.conf文件,指定ServerName,并开启UseCanonicalName选项。
Tomcat,修改server.xml文件,配置Host的name属性。
作者:安全小白团
链接:https://www.jianshu.com/p/690acbf9f321
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
posted on 2019-05-17 10:55 uestc2007 阅读(10068) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)