什么是HTTP头注入

安全资讯 小布 1319浏览 0评论

HTTP头注入漏洞是一个Web应用程序安全性的术语,指这样一种情况,当攻击者诱骗web应用到插入额外的HTTP头到合法的HTTP响应。HTTP 标头注入是一种可用于促进恶意攻击的技术,例如跨站点脚本、Web 缓存中毒等。反过来,这些可能会导致信息泄露、您的应用程序被用于网络钓鱼攻击以及其他严重后果。

HTTP 标头注入是一种更通用的攻击类别的特定案例:CRLF 注入。如果攻击者能够在响应中注入 CRLF 序列(回车和换行),他们就能够添加各种虚假条目或更改现有数据:不仅是标题,甚至是整个响应正文。

 

什么导致 HTTP 标头注入漏洞?

就像大多数 Web 应用程序安全漏洞一样,HTTP 标头注入漏洞(以及一般的 CRLF 注入漏洞)是过度信任用户输入的结果。如果 Web 应用程序的开发人员直接在 HTTP 响应中使用外部数据,则通常可以执行 HTTP 标头注入攻击。

例如,假设您的业务转移到一个新域,并且为了方便起见,您希望用户书签仍然有效。原始域是example.com但现在您的站点可以在example.info 上找到。如果您的普通用户访问过时的 URL,例如http://www.example.com/page1,您希望 Web 服务器自动将用户重定向到相应的新 URL:http://www.example.info/page1

为了实现上述目标,您可以在example.com构建一个简单的 Web 应用程序,该应用程序从 HTTP 请求中获取路径并将其附加到http://www.example.info/。如果该应用程序的开发人员在将输入数据附加到新的基本 URL 之前没有从输入数据中消除 CR 和 LF 特殊字符,则攻击者可能会使用该应用程序执行 HTTP 标头注入攻击。

HTTP 标头注入攻击剖析

HTTP 标头注入攻击在许多方面类似于跨站点脚本 (XSS) 攻击。因此,存在反射 HTTP 标头注入攻击和(不太常见的)存储 HTTP 标头注入攻击。

反射 HTTP 标头注入

假设您是example.com域的所有者,并且攻击者想要利用上述 HTTP 标头注入漏洞。他们准备网络钓鱼活动并发送以下 URL:

http://example.com/page1%0d%0aLocation:vulnweb.com

作为 HTTP 标头注入的结果,CRLF 字符被插入到响应中,然后是一个新的Location:标头。Web 浏览器(取决于浏览器类型和配置)会将用户重定向到攻击者的站点(此处:vulnweb.com)。

存储的 HTTP 标头注入

存储 HTTP 标头注入漏洞和相关攻击非常罕见。在这种情况下,恶意用户输入由 Web 应用程序存储,例如存储在数据库中,然后直接用于发送给其他用户的 HTTP 响应。

就像存储跨站点脚本漏洞一样,存储 HTTP 标头注入更危险,因为它可能会影响访问您的网站或使用您的 Web 应用程序的所有用户。

HTTP 标头注入攻击的后果

我们在上面描述了 HTTP 标头注入攻击的最简单案例 – 攻击者可能会直接利用 HTTP 标头注入漏洞将您的域作为网络钓鱼攻击的基础。

但是,HTTP 标头注入还有更多潜在的后果。例如,攻击者可能会使用 HTTP 标头注入来注入新的标头,从而放松同源策略安全限制,从而可以执行其他原本不可能进行的攻击,例如CSRF。

HTTP 标头注入攻击的另一个潜在用途是 HTTP 响应拆分。在这种情况下,攻击者不仅会注入新的 HTTP 响应标头,还会注入整个响应主体。使用Content-Length标头,他们能够让受害者的浏览器完全忽略响应的合法主体(以及剩余的合法标头)。

如何检测和避免HTTP头注入漏洞

检测 HTTP 标头注入漏洞的最佳方法是使用著名的 Web 漏洞扫描程序,例如有针对 CRLF 注入的测试和针对 HTTP 标头注入的特定测试。由于 CRLF 注入的影响通常可能很严重(类似于跨站点脚本的影响),尽管OWASP Top 10 中没有特别提到这些漏洞,但不应掉以轻心。

由于 HTTP 标头注入是 CRLF 序列不正确中和的结果,避免此类漏洞的最佳方法是在 HTTP 响应中使用之前对来自用户输入的 CRLF 序列进行编码。这还可以防止其他利用 CRLF 注入的攻击的后果,这甚至可能导致敏感信息泄露、日志文件损坏或代码执行。

转载请注明:布尔云安的博客 » 什么是HTTP头注入

头像
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址