HTTP响应拆分漏洞

一、什么是HTTP响应拆分?

HTTP响应拆分是由于应用程序未对用户提交的数据进行严格过滤,如果用户输入的值中注入了CRLF字符,有可能改变HTTP报头结构。

HTTP响应拆分漏洞,也叫CRLF注入攻击。CR、LF分别对应回车(即URL编码%0d或\r)、换行(即URL编码%0a或\n)字符。HTTP头由很多被CRLF组合分离的行构成,每行的结构都是“键:值”。

攻击者可以在HTTP标头中包含攻击的报文数据,从而让浏览器按照攻击者想要达到的目的进行HTTP响应。 当HTTP请求中包含CR和LF字符时,服务器可能会响应输出流,该输出流被解释为两个不同 HTTP响应(而不是一个)。攻击者可以实现对第二个响应报文的控制并发起攻击。例如跨站点脚本和缓存中毒攻击。

二、HTTP响应拆分漏洞构成条件有哪些?

满足以下条件,就构成了一个该类型的安全漏洞:

1、数据通过不受信任的源(最常见的是HTTP请求)进入web应用程序;

2、数据包含在发送给web用户的HTTP响应头中,而不会验证是否存在恶意字符。

三、HTTP响应拆分漏洞会造成哪些后果?

关键词:修改应用程序数据;获取特权或假定身份;

HTTP报头中的CR和LF字符可能会让攻击者控制应用程序打算发送的其余报头和响应主体,并允许他们创建完全在其控制下的附加响应。

四、HTTP响应拆分漏洞的防范和修补方法有哪些?

1、限制用户输入的CR和LF,或者对CR和LF字符正确编码后再输出,以防止注入自定义HTTP头;

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

五、HTTP响应拆分漏洞样例:

1-1.jpg

悟空 静态代码检测工具分析 上述程序代码,则可以发现代码中存在着“HTTP响应拆分” 导致的 代码缺陷,如下图:

2-1.jpg

HTTP响应拆分在CWE中被编号为CWE-113: Improper Neutralization of CRLF Sequences in HTTP Headers('HTTP Response Splitting')


本文作者:中科天齐软件安全

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/170098.html

Tags:
评论  (0)
快来写下你的想法吧!

中科天齐软件安全

文章数:95 积分: 45

WuKong软件源代码静态检测工具,为客户在软件开发过程中查找、识别、追踪绝大部分主流编码中的技术漏洞与逻辑漏洞,帮助用户提升抵御网络攻击。

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号