博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTP协议头注射漏洞实例
阅读量:6549 次
发布时间:2019-06-24

本文共 1205 字,大约阅读时间需要 4 分钟。

HTTP 响应头文件中包含未经验证的数据会引发 cache-poisoning、cross-site scripting、cross-user defacement、page hijacking、cookie manipulation 或 open redirect。

HTTP协议头注射漏洞原理

以下情况中会出现 HTTP协议头注射漏洞: 1. 数据通过一个不可信赖的数据源进入 Web 应用程序,最常见的是 HTTP 请求。 2. 数据包含在一个 HTTP 响应头文件里,未经验证就发送给了 Web 用户。

其中最常见的一种 Header Manipulation 攻击是 HTTP Response Splitting。 为了成功地实施 Http Response Splitting 盗取,应用程序必须允许将那些包含 CR(回车,由 %0d 或 \r 指定)和 LF(换行,由 %0a 或 \n 指定)的字符输入到头文件中。

攻击者利用这些字符不仅可以控制应用程序要发送的响应剩余头文件和正文,还可以创建完全受其控制的其他响应。

HTTP协议头注射漏洞实例

1 

假设在请求中提交了一个由标准的字母和数字字符组成的字符串,如 "index.html",那么包含此 cookie 的 HTTP 响应可能表现为以下形式:

HTTP/1.1 200 OK...location: index.html...

然而,因为该位置的值由未经验证的用户输入组成,所以仅当提交给 some_location 的值不包含任何 CR 和 LF 字符时,响应才会保留这种形式。

如果攻击者提交的是一个恶意字符串,比如 :

"index.html\r\nHTTP/1.1 200 OK\r\n..."

那么此 HTTP 响应就会被分割成以下形式的两个响应:

HTTP/1.1 200 OKlocation: index.htmlHTTP/1.1 200 OK...

显 然,第二个响应已完全由攻击者控制,攻击者可以用所需的头文件和正文内容构建该响应。攻击者可以构建任意 HTTP 响应,从而发起多种形式的攻击。

HTTP协议头注射漏洞解决方案

如今的许多现代应用程序服务器可以防止 HTTP 头文件感染恶意字符。

例如,当新行传递到 header() 函数时,最新版本的 PHP 将生成一个警告并停止创建头文件。 如果您的 PHP 版本能够阻止设置带有换行符的头文件,则其具备对 HTTP Response Splitting 的防御能力。

代码层面常见的解决方案:

  1. 严格检查变量是否已经初始化
  2. 在设置HTTP响应头的代码中,过滤回车换行(%0d%0a、%0D%0A)字符
  3. 禁止header()函数中的参数外界可控

转载于:https://www.cnblogs.com/cyjaysun/p/4392867.html

你可能感兴趣的文章
怎样实现前端裁剪上传图片功能
查看>>
ffmpeg+SDL2实现的视频播放器「退出、暂停、播放」
查看>>
2011/7/3 第二次评审
查看>>
tar解压
查看>>
Apriori 关联算法学习
查看>>
JSLint的使用
查看>>
HTTP POST GET 本质区别详解
查看>>
MD5加密
查看>>
ant
查看>>
微信,想要说爱你,却没有那么容易!
查看>>
有关sqlite与sql
查看>>
MapXtreme 2005 学习心得 概述(一)
查看>>
php进一法取整、四舍五入取整、忽略小数等的取整数方法大全
查看>>
Hibernate的拦截器和监听器
查看>>
WSDP
查看>>
Memory Management
查看>>
JQUERY 对 表格中的数据重排序
查看>>
程序员常用借口指南
查看>>
awk 常用方法
查看>>
Android网络框架实现之【Retrofit+RxJava】
查看>>