网站首页 > 文章精选 正文
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站点处理。
这个时候,问题就出现了。为了方便获取网站域名,开发人员一般依赖于请求包中的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标签,弹出警告框。
05修改方案:
1.nginx 修复:
2.tomcat 修复:
目标URL存在http host头攻击漏洞tomcat修复方法
报告里面的解决方案没有具体写tomcat如何操作,记录整改方法。
打开conf server.xml文件,完善<Host/>元素
<Host/>属性:name:主机域名
appBase:该主机下的所有应用所在的文件目录
比如修改name = “localhost”为 name = “www.xxx.com”
猜你喜欢
- 2025-07-24 田亮叶一茜登封面 森蝶长大LOB头美翻网友
- 2025-07-24 Skullcandy 骷髅头 RIOT 入耳式耳机开箱+简单感受
- 2025-07-24 木工刀具铣床用分度头的简介、分类、作用及详细使用方法
- 2025-07-24 儿童折纸万圣节南瓜头折纸图解教程
- 2025-07-24 权志龙顶泡面头颓废助阵派对 有颜值就是任性
- 2025-07-24 气哭研究生家长!船上75头牛34头羊,船长几岁……小学生的题太难
- 2025-07-24 头部震颤是焦虑症吗(引起头部振 颤的原因)
- 2025-07-24 山东潍坊降生一双头羊 一只眼睛两个嘴巴转圈不止
- 2025-07-24 Java开发必用神器,Hutool工具包(javatoolkit详解)
- 2025-07-24 杨幂赵丽颖都中了教导主任头的毒!红毯点名率证明,经典永不过时
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)
- fmt.println (52)