一、什么是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响应拆分漏洞样例:
用悟空 静态代码检测工具分析 上述程序代码,则可以发现代码中存在着“HTTP响应拆分” 导致的 代码缺陷,如下图:
HTTP响应拆分在CWE中被编号为CWE-113: Improper Neutralization of CRLF Sequences in HTTP Headers('HTTP Response Splitting')
本文作者:中科天齐软件安全
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/170098.html