java web 检测到目标url存在http host头攻击漏洞_每日漏洞 | Host头攻击

本文介绍了HTTP Host头攻击的概念、危害及如何检测。Host头攻击源于HTTP请求中Host字段值的可篡改性,可能导致恶意代码注入。文章提供了针对Nginx、Apache和Tomcat的修复建议,包括修改配置文件来限制Host字段的值。
摘要由CSDN通过智能技术生成
e5ff09577af29ec581ca87d4b3dd790a.png
0c7b1dc3dd586fb44d6a1a4bd6534037.png

0x00 概述

漏洞名称:Host头攻击

风险等级:低

问题类型:管理员设置问题

0x01 漏洞描述

很多场景下,开发者都相信HTTP Host header传递的参数值用来更新链接导出脚本或者一些敏感操作。但该参数是可控的,若没有对其进行处理,就有可能造成恶意代码的传入。

0x02 漏洞危害

如果应用程序没有对Host字段值进行处理,就有可能造成恶意代码的传入。

0x03 修复建议

对Host字段进行检测

Nginx,修改ngnix.conf文件,在server中指定一个server_name名单,并添加检测。

Apache,修改httpd.conf文件,指定ServerName,并开启UseCanonicalName选项。

Tomcat,修改server.xml文件,配置Host的name属性。

01 漏洞描述

《HTTP | HTTP报文》最后一节,简单的介绍了一下首部字段,其中就包含了Host首部字段。

为了方便获取网站域名,开发人员一般依赖于请求包中的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站点处理。

a1cb198923b41bbbd6ab16715ab06310.png

这个时候,问题就出现了。为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段。例如,在php里用_SERVER["HTTP_HOST"]。但是这个Host字段值是不可信赖的(可通过HTTP代理工具篡改),如果应用程序没有对Host字段值进行处理,就有可能造成恶意代码的传入。

03 漏洞检测

Host头攻击漏洞的检测比较简单,只需要抓包,修改Host字段值,提交,查看响应中是否包含修改后的Host字段值即可。

下面分三个场景,介绍一下Host头攻击漏洞存在的表现。

跳转

场景一:正常请求,响应302,Location首部字段指明跳转的地址,其中Location字段值为Host字段指定的地址。

9f6ca301fad08d1245e6a95d872566b0.png

将请求包的Host字段值修改为www.baidu.com提交,响应包中的Location地址也被更改为www.baidu.com。

拼接

场景二:正常请求,正常响应,将Host字段值拼接到标签属性值中。

85af879707c3e6ccc9869e4590846796.png

将请求包的Host字段值修改为www.baidu.com提交,发现服务器将www.baidu.com拼接到了script标签的src属性值中。

代码注入

场景三:这其实也属于拼接,只不过在场景二的基础上写入了恶意代码。

06f2c1331b987814c0b7792894febaa8.png

利用Host字段写入script标签,弹出警告框。

05修改方案:

1.nginx 修复:

633edae81210618ff470ffef95248592.png

2.tomcat 修复:

目标URL存在http host头攻击漏洞tomcat修复方法

报告里面的解决方案没有具体写tomcat如何操作,记录整改方法。

打开conf server.xml文件,完善元素

属性:name:主机域名

appBase:该主机下的所有应用所在的文件目录

2034fad6aac958a9163ece663ec4a21d.png

比如修改name = “localhost”为 name = “www.xxx.com”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值