内容简介: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缺陷代码
上述示例代码操作是获取环境变量的 ADD,在38行将该值设置到相应头的 Location 字段中,这样浏览器读到 Location 字段时就会进行资源跳转。当环境变量值为: add r n nHTTP/1.1200OK r n 时,在程序中未对环境变量值做校验,那么HTTP响应将会被拆分成两个响应,第二个响应完全由攻击者控制,并构造出攻击者期望的头部内容和主体内容,由此可产生包括跨站脚本,页面劫持,浏览器缓存中毒等间接攻击。
使用360代码卫士对上述示例代码进行检测,可以检出“HTTP响应截断”缺陷,显示等级为中。从跟踪路径中可以分析出数据的污染源以及数据流向,在代码行第38行报出缺陷,如图1所示:
图1:HTTP 响应截断检测示例
3.2 修复代码
在上述修复代码中,第38行使用 Refenence 类对环境变量值进行 decode,剔除特殊字符。
使用360代码卫士对修复后的代码进行检测,可以看到已不存在“HTTP响应截断”缺陷。如图2:
图2:修复后检测结果
4 、如何避免 HTTP 响应截断
要避免HTTP响应截断,需要注意以下几点:
(1)对用户的输入进行合理验证,对特殊字符(如<、>、’、”等)等进行编码。
(2)创建一份安全字符白名单,只接受完全由这些受认可的字符组成的输入出现在 HTTP 响应头文件中。
(3)使用源代码静态分析工具,进行自动化的检测,可以有效的发现源代码中的 HTTP 响应截断问题。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- CSS 来实现多行文字截断
- perl – 截断stdin行长度?
- 00截断之追本溯源
- 技术问题分析-报文截断(11.20)
- 技术问题分析-报文截断02(11.21)
- 技术问题分析-报文截断03(11.22)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
从零开始学微信公众号运营推广
叶龙 / 清华大学出版社 / 2017-6-1 / 39.80
本书是丛书的第2本,具体内容如下。 第1章 运营者入门——选择、注册和认证 第2章 变现和赚钱——如何从0到100万 第3章 决定打开率——标题的取名和优化 第4章 决定美观度——图片的选取和优化 第5章 决定停留率——正文的编辑和优化 第6章 决定欣赏率——版式的编辑和优化 第7章 数据的分析——用户内容的精准营销 书中从微信运营入门开始,以商业变......一起来看看 《从零开始学微信公众号运营推广》 这本书的介绍吧!