IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 目标URL存在http_host头攻击漏洞复现及修复 -> 正文阅读

[网络协议]目标URL存在http_host头攻击漏洞复现及修复

目标URL存在http_host头攻击漏洞复现及修复

漏洞说明

漏洞描述

为了方便的获得网站域名,开发人员一般依赖于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 选项。

下图为绿盟扫描器的报告截图:
image-20220218104357708

漏洞复现

可以使用 curl 或 BurpSuite 工具修改 Host 请求头,复现测试

curl测试方法

curl -h

 -I, --head          Show document info only
 -H, --header <header/@file> Pass custom header(s) to server
 -v, --verbose       Make the operation more talkative
curl -v -H "Host: www.baidu.com" http://192.168.64.149

测试结果:任意修改 Host 请求头,服务器都能返回 302 Found
image-20220221204539094

BurpSuite测试方法

BurpSuite 下载链接:
https://portswigger.net/burp/releases/professional-community-2022-1-1?requestededition=community

开启代理抓包后,Send to Repeater
image-20220221205725799
点击 Send 重复发送当前包,下面是未修改的正确 Host 请求头,及其返回状态码:200 OK
image-20220221210328160
任意修改 Host 请求头,再发送数据包,观察返回状态码。可以看到都能返回:200 OK,即正常请求到 web 页面
image-20220221210651911

漏洞修复

漏洞修复方案

修改 nginx.conf 配置,设置 server_name,添加正则表达式匹配 host 请求头的值,不匹配情况返回403。

#       server_name             localhost;

#### http_Host fix
        server_name             127.0.0.1 192.168.64.149;
        if ($http_Host !~* ^127.0.0.1$|^192.168.64.149$) {
                return          403;
        }
                
##  语义解析:
##  ! 非
##  ~ 匹配正则
##  * 任意
##  ^ 匹配开头字符
##  & 匹配末尾字符
##  | 或
##  首先指定server_name字段值;
##  如果变量$http_Host不是(127.0.0.1或192.168.64.149),if判断成立,执行后面的内容,即返回403跳转页面;
##  如果变量$http_Host是(127.0.0.1或192.168.64.149),if判断不成立,则不执行后面的内容。
##  建议查阅nginx官方文档:https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name

image-20220222100802203
重启 nginx

nginx -s reload

image-20220221212140472

漏洞修复验证

当 Host 请求头正确匹配 server_name(127.0.0.1或者192.168.64.149)时,服务器返回了 302 Found;
其他任意 Host 请求头未匹配 server_name 的情况下,服务器都返回 403 Forbidden。

  • curl 测试结果

image-20220221212737864

  • BurpSuite 测试结果

image-20220221213811289
image-20220221213904723
以上,如有错误之处,敬请指正。

参考文章

https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name
https://www.freesion.com/article/18441013466/
https://www.cnblogs.com/huiy/p/13427401.html

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 12:07:35  更:2022-02-26 12:11:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 13:22:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码