http host头攻击漏洞
原文地址: https://www.zhuyilong.fun/tech/handel_httphost_attack.html
漏洞描述
为了方便的获得网站域名,开发人员一般依赖于HTTP Host header。例如,在php里用_SERVER["HTTP_HOST"]。但是这个header是不可信赖的,如果应用程序没有对host header值进行处理,就有可能造成恶意代码的传入。
解决办法
web应用程序应该使用SERVER_NAME而不是host header。
在Apache和Nginx里可以通过设置一个虚拟机来记录所有的非法host header。在Nginx里还可以通过指定一个SERVER_NAME名单,Apache也可以通过指定一个SERVER_NAME名单并开启UseCanonicalName选项。
具体步骤
项目代码
程序编写中避免使用HTTP_HOST,如有需要使用SERVER_NAME替代
nginx配置
- 配置文件中server_name上设置具体域名.eg:
server_name example.com;
- 在nginx上设置一个default_server处理其他域名来处理默认的请求.即,非设置域名返回一个http status code 4xx 的代码
server{
listen 80 default_server;
server_name _;
return 400;
}
Apache配置
- 方法一: 修改\conf\httpd.conf配置文件中server_name,设置具体域名.eg:
ServerName example.com:80 # 指定域名和端口号
添加下列行
UseCanonicalName On # 使用指定的域名和端口号
- 方法二: 修改\conf\httpd.conf文件,参考以下配置添加:
NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1>
ServerName 127.0.0.1
<Location />
Order Allow,Deny
Deny from all # 拒绝直接通过IP地址的任何访问
</Location>
</VirtualHost>
<VirtualHost 127.0.0.1>
DocumentRoot "C:\www\example"
ServerName example.com # 仅允许通过域名访问
</VirtualHost>
- 方法三: 修改\conf\httpd.conf文件,找到"#LoadModule rewrite_module modules/mod_rewrite.so"去除前面的"#"号,添加类似以下配置:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^127.0.0.1$ [NC]
RewriteRule ^(.*)$ /error.html
配置修改后都需要重启nginx/apache
http host头攻击漏洞的更多相关文章
- Java Web项目漏洞:检测到目标URL存在http host头攻击漏洞解决办法
检测到目标URL存在http host头攻击漏洞 详细描述 为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HTTP_HOST ...
- 目标URL存在跨站漏洞和目标URL存在http host头攻击漏洞处理方案
若需要学习技术文档共享(请关注群公告的内容)/讨论问题 请入QQ群:668345923 :若无法入群,请在您浏览文章下方留言,至于答复,这个看情况了 目录 HTTP协议详解 引言 一.HTTP协议详解 ...
- 检测到目标URL存在http host头攻击漏洞
检测到目标URL存在http host头攻击漏洞 1.引发安全问题的原因 为了方便的获得网站域名,开发人员一般依赖于HTTP Host header.例如,在php里用_SERVER["HT ...
- URL存在http host头攻击漏洞-修复方案
URL存在http host头攻击漏洞-修复方案 spring boot使用注解的方式 -- 第一步:在自定义filter类上添加如下注释 package com.cmcc.hy.mobile.con ...
- 【漏洞一】检测到目标URL存在http host头攻击漏洞
[漏洞] 检测到目标URL存在http host头攻击漏洞 [原因] 在项目中使用了 request.getServerName 导致漏洞的出现 不要使用request中的serverName,也就是 ...
- URL存在跨站漏洞http host头攻击漏洞解决方案
最近项目部署的时候客户使用的绿盟扫描出一些漏洞,老大让我处理,经过看大神的博客等方式,分享一些简单的解决方法. 一 跨网站脚本 跨网站脚本(Cross-site scripting,通常简称为XSS或 ...
- 【漏洞学习】HOST 头攻击漏洞
日期:2018-03-06 14:32:51 作者:Bay0net 0x01. 前言 在一般情况下,几个网站可能会放在同一个服务器上,或者几个 web 系统共享一个服务器,host 头来指定应该由哪个 ...
- (三)Host头攻击
01 漏洞描述 为了方便获取网站域名,开发人员一般依赖于请求包中的Host首部字段.例如,在php里用_SERVER["HTTP_HOST"].但是这个Host字段值是不可信赖的( ...
- 【由浅入深_打牢基础】HOST头攻击
[由浅入深_打牢基础]HOST头攻击 前几天一直准备别的事情,然后用了2/3天时间去挖了补天某厂的SRC,还是太菜了,最后提交了一个低危(还没出结果,还有点敏感信息泄露,感觉略鸡肋也没交),不过偶然发 ...
随机推荐
- redis client原理分析
代码库地址:https://github.com/garyburd/redigo 1:连接池 2:发送命令 3:解析结果 1:连接池 连接池结构体如下: type Pool struct { // D ...
- MVC框架的代码审计小教程
介绍 YxtCMF在线学习系统是一个以thinkphp+bootstrap为框架进行开发的网络学习平台系统. 在线学习系统,为现代学习型组织提供了卓有成效的学习与培训方案, 能够通过在线学习和在线评估 ...
- ORB-SLAM3 Initializer.cpp函数解读
作者: Liam 点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 构造函数 Initializer::Initializer(const Frame ...
- MySql基础(常用)
MySQL常用语句 1.查看当前所有数据库 show databases; 2.打开指定的库 use 库名; 3.查看当前库中的所有表 show tables; 4.查看其他库的表 show tabl ...
- ES6--数组部分基础知识
数组Array的相关方法 1.Array.from()方法 Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象 ...
- KVM简介,安装及常见使用详解
KVM简介 KVM(名称来自英语:Kernel-basedVirtual Machine的缩写,即基于内核的虚拟机),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hype ...
- pyspark计算最大值、最小值、平均值
需求:使用pyspark计算相同key的最大值.最小值.平均值 说明: 最大值和最小值好计算,直接reduceByKey后使用python内置的max.min方法 平均值计算提供两种计算方法,直接先上 ...
- php curl 请求封装
/** * curl 封装函数 * @param string $url 请求地址 * @param string $data 请求数据 * @param string $type 请求方式 默认为G ...
- nginx&http 第三章 ngx http ngx_http_process_request_headers
HTTP 请求行正确处理完成后,针对 HTTP/1.0 及以上版本紧接着要做的就是请求 HEADER 的处理与解析了 /** * 用于处理http的header数据 * 请求头: * Host: lo ...
- IP 层收发报文简要剖析4--ip 报文发送
无论是从本地输出的数据还是转发的数据报文,经过路由后都要输出到网络设备,而输出到网络设备的接口就是dst_output(output)函数 路由的时候,dst_output函数设置为ip_output ...