【缺陷周话】第14期:HTTP 响应截断

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:HTTP响应截断是由于应用程序未对用户提交的数据进行严格过滤,当用户恶意提交包含 CR(回车,即URL编码%0d或r)和 LF(换行符,即URL编码%0a或n)的HTTP请求,服务器可能会创建两个 HTTP 响应,攻击者可以控制第二个响应并加载攻击。攻击者可控制响应的内容构造 XSS 攻击,其中响应中包含恶意的 JavaScript 或其它代码在用户的浏览器中执行,也有可能让用户重定向到攻击者控制的Web内容或在用户的主机上执行恶意操作。本篇文章以JAVA语言源代码为例,分析HTTP响应截断漏洞产生的原因

1、HTTP 响应截断

HTTP响应截断是由于应用程序未对用户提交的数据进行严格过滤,当用户恶意提交包含 CR(回车,即URL编码%0d或r)和 LF(换行符,即URL编码%0a或n)的HTTP请求,服务器可能会创建两个 HTTP 响应,攻击者可以控制第二个响应并加载攻击。攻击者可控制响应的内容构造 XSS 攻击,其中响应中包含恶意的 JavaScript 或其它代码在用户的浏览器中执行,也有可能让用户重定向到攻击者控制的Web内容或在用户的主机上执行恶意操作。本篇文章以 JAVA 语言源代码为例,分析HTTP响应截断漏洞产生的原因以及修复方法。 详细请参见 CWE ID 113: Improper Neutralization of CRLF Sequences inHTTP Headers (‘HTTP Response Splitting’) (http://cwe.mitre.org/data/definitions/113.html)。

2、 释放后使用的危害

HTTP响应截断一旦被攻击者利用,并不直接造成安全问题,而是由攻击者控制的HTTP响应内容造成间接攻击。例如,攻击者可控制HTTP响应体内容,在web页面中插入恶意的 javaScript 或 html 代码,而浏览器正常解析,导致正在请求页面的结构被破坏、用户信息泄露、拒绝服务等。同样,攻击者还可利用 HTTP 响应再次发起对其他目标服务器的请求,造成页面内容被篡改。甚至在同一代理服务器下,单个用户被攻击后,多个用户共享web缓存,共享用户将继续收到恶意内容,直到缓存条目被清除。

从2018年1月至12月,CVE中共有11条漏洞信息与其相关。部分漏洞如下:

CVE 概述
CVE-2018-1474 IBM BigFix Platform 9.2.0 到 9.2.14 和 9.5 到 9.5.9 容易受到 HTTP 响应截断攻击,这是由用户提供的输入验证不当引起的。远程攻击者可以利用此漏洞注入任意 HTTP 请求头,并在单击URL后使服务器返回拆分响应。这将允许攻击者执行进一步的攻击,例如 Web 缓存中毒或跨站点脚本,并可能获取敏感信息。
CVE-2018-11347 YunoHost 2.7.2 到 2.7.14 Web 应用程序受一个 HTTP 响应头注入的影响。此漏洞允许攻击者将来自服务器的响应注入一个或多个 HTTP 请求头。它需要与用户进行交互才能向他发送恶意链接。它可用于执行其他攻击,例如用户重定向到恶意网站,HTTP响应截断或 HTTP 缓存中毒。
CVE-2018-7830 HTTP 请求头中 HTTP 响应截断漏洞存在于 Modicon M340、Premium、Quantum PLC 和 BMXNOR0200 的嵌入式 Web 服务器中,通过发送特定 HTTP 请求头,会导致拒绝服务。
CVE-2018-1319 在 1.8.1 之前的 Apache Allura 中,攻击者可能会制作导致 HTTP 响应截断 URL。如果受害者访问恶意制作的 URL,可能会发生不需要的结果,包括受害者浏览会话的 XSS 或拒绝服务。

3、示例代码

示例源于 Samate Juliet Test Suite for Java v1.3 (https://samate.nist.gov/SARD/testsuite.php),源文件名:CWE113_HTTP_Response_Splitting__Environment_addHeaderServlet_01.java。

3.1缺陷代码

【缺陷周话】第14期:HTTP 响应截断

上述示例代码操作是获取环境变量的 ADD,在38行将该值设置到相应头的 Location 字段中,这样浏览器读到 Location 字段时就会进行资源跳转。当环境变量值为: add r n nHTTP/1.1200OK r n 时,在程序中未对环境变量值做校验,那么HTTP响应将会被拆分成两个响应,第二个响应完全由攻击者控制,并构造出攻击者期望的头部内容和主体内容,由此可产生包括跨站脚本,页面劫持,浏览器缓存中毒等间接攻击。

使用360代码卫士对上述示例代码进行检测,可以检出“HTTP响应截断”缺陷,显示等级为中。从跟踪路径中可以分析出数据的污染源以及数据流向,在代码行第38行报出缺陷,如图1所示:

【缺陷周话】第14期:HTTP 响应截断

图1:HTTP 响应截断检测示例

3.2 修复代码

【缺陷周话】第14期:HTTP 响应截断

在上述修复代码中,第38行使用 Refenence 类对环境变量值进行 decode,剔除特殊字符。

使用360代码卫士对修复后的代码进行检测,可以看到已不存在“HTTP响应截断”缺陷。如图2:

【缺陷周话】第14期:HTTP 响应截断

图2:修复后检测结果

4 、如何避免 HTTP 响应截断

要避免HTTP响应截断,需要注意以下几点:

(1)对用户的输入进行合理验证,对特殊字符(如<、>、’、”等)等进行编码。

(2)创建一份安全字符白名单,只接受完全由这些受认可的字符组成的输入出现在 HTTP 响应头文件中。

(3)使用源代码静态分析工具,进行自动化的检测,可以有效的发现源代码中的 HTTP 响应截断问题。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

从零开始学微信公众号运营推广

从零开始学微信公众号运营推广

叶龙 / 清华大学出版社 / 2017-6-1 / 39.80

本书是丛书的第2本,具体内容如下。 第1章 运营者入门——选择、注册和认证 第2章 变现和赚钱——如何从0到100万 第3章 决定打开率——标题的取名和优化 第4章 决定美观度——图片的选取和优化 第5章 决定停留率——正文的编辑和优化 第6章 决定欣赏率——版式的编辑和优化 第7章 数据的分析——用户内容的精准营销 书中从微信运营入门开始,以商业变......一起来看看 《从零开始学微信公众号运营推广》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器