1. beplay体育能用吗网络安全学院
  2. 要求走私

HTTP请求走私

在本节中,我们将解释HTTP请求走私攻击,并描述如何出现共同的要求走私漏洞。

HTTP请求走私

什么是http请求走私?

HTTP请求走私是一种干预网站处理从一个或多个用户接收到的HTTP请求序列的方法。beplay体育能用吗请求走私漏洞通常本质上至关重要,允许攻击者绕过安全控制,获得未经授权的访问敏感数据,并直接损害其他应用程序用户。

笔记

HTTP请求走私于2005年首次记录,最近由beplay官网可以赌Portswigger的研究关于主题。

HTTP请求走私攻击会发生什么?

当今的Web应用beplay体育能用吗程序经常在用户和最终应用程序逻辑之间采用HTTP服务器的链条。用户将请求发送到前端服务器(有时称为负载平衡器或反向代理),该服务器将请求转发到一个或多个后端服务器。这种类型的体系结构越来越普遍,在某些情况下,在现代基于云的应用程序中不可避免。

当前端服务器将HTTP请求转发到后端服务器时,它通常会通过同一后端网络连接发送多个请求,因为这更有效和性能。该协议非常简单:HTTP请求接一个地发送,并且接收服务器解析HTTP请求标头以确定一个请求结束的位置,下一个请求开始:

将HTTP请求转发到后端服务器

在这种情况下,至关重要的是,前端和后端系统就请求之间的界限一致。否则,攻击者可能能够发送一个模棱两可的请求,该请求被前端和后端系统不同地解释:

将HTTP请求偷运到后端服务器

在这里,攻击者导致其前端请求的一部分被后端服务器解释为下一个请求的开始。它有效地添加到下一个请求中,因此可以干扰申请处理的方式。这是一个要求走私攻击的请求,它可能会带来毁灭性的结果。

HTTP请求如何出现走私漏洞?

大多数HTTP请求走私漏洞都会出现,因为HTTP规范提供了两种不同的方式来指定请求结束的位置:内容长度标题和转移编码标题。

内容长度标题很简单:它指定字节中消息主体的长度。例如:

发布/搜索http/1.1主机:normal-website.com beplay体育能用吗content-type:application/x-www-form-urlencoded内容长度:11 q =走私

转移编码标题可用于指定消息主体使用块编码的消息。这意味着消息主体包含一个或多个数据。每个块由字节中的块大小组成(以十六进制表示),其次是纽文,然后是块内容。该消息的大小为零。例如:

发布/搜索http/1.1主机:normal-website.com beplay体育能用吗content-type:application/x-www-form-urlencoded传输编码:块b q =走私0

笔记

许多安全测试人员不知道可以在HTTP请求中使用块的编码,这有两个原因:

  • Burp Suite会自动解开编码的块,以使消息更易于查看和编辑。
  • 浏览器通常不会在请求中使用块编码,并且通常仅在服务器响应中看到。

由于HTTP规范提供了指定HTTP消息长度的两种不同的方法,因此单个消息可以一次使用两种方法,以便它们相互冲突。HTTP规范试图通过指出两个内容长度转移编码标题在场,然后内容长度标题应忽略。这可能足以避免在只有一台服务器进行游戏时避免歧义,但是当两个或多个服务器链接在一起时,这可能不足以避免。在这种情况下,问题可能有两个原因:

  • 一些服务器不支持转移编码请求中的标题。
  • 一些确实支持的服务器转移编码如果标头以某种方式掩盖,则可以引起标头不处理。

如果前端和后端服务器相对于(可能混淆)的行为不同转移编码标题,他们可能会不同意连续请求之间的界限,从而导致请求走私漏洞。

如何执行HTTP请求走私攻击

请求走私攻击涉及将两者放置内容长度标题和转移编码标题为单个HTTP请求并操纵这些请求,以使前端和后端服务器以不同的方式处理请求。完成此操作的确切方法取决于两个服务器的行为:

  • Cl.TE:前端服务器使用内容长度标题和后端服务器使用转移编码标题。
  • TE.CL:前端服务器使用转移编码标题和后端服务器使用内容长度标题。
  • TE.TE:前端和后端服务器都支持转移编码标题,但可以引起其中一台服务器通过以某种方式混淆标头来处理它。

Cl.TE漏洞

在这里,前端服务器使用内容长度标题和后端服务器使用转移编码标题。我们可以执行简单的HTTP请求走私攻击,如下所示:

帖子 / http / 1.1主机:脆弱的website.com内beplay体育能用吗容长度:13转移编码:块0走私

前端服务器处理内容长度标题并确定请求主体长13个字节,直到末尾走私。此请求已转发到后端服务器。

后端服务器处理转移编码标题,因此将消息主体视为使用块编码。它处理第一个块,据说为零长度,因此被视为终止请求。以下字节,走私,未经处理,后端服务器将其视为序列中下一个请求的开始。

te.cl漏洞

在这里,前端服务器使用转移编码标题和后端服务器使用内容长度标题。我们可以执行简单的HTTP请求走私攻击,如下所示:

帖子 / http / 1.1主机:脆弱的website.com内beplay体育能用吗容长度:3转移编码:块8走私0

笔记

要使用Burp Repeater发送此请求,您将首先需要转到中继器菜单,并确保未选中“更新内容长度”选项。

您需要包括尾声\ r \ n \ r \ n在决赛之后0

前端服务器处理转移编码标题,因此将消息主体视为使用块编码。它处理第一个块,据说为8个字节长,直到线的开始走私。它处理第二个块,该块被认为为零长度,因此被视为终止请求。此请求已转发到后端服务器。

后端服务器处理内容长度标题并确定请求主体长3个字节,直到线的开始8。以下字节,从走私,未经处理,后端服务器将其视为序列中下一个请求的开始。

TE.TE行为:使TE标题倍加困扰

在这里,前端和后端服务器都支持转移编码标题,但可以引起其中一台服务器通过以某种方式混淆标头来处理它。

有可能无限的方法来混淆转移编码标题。例如:

转移编码:Xchunked Transver-编码:块转移编码:块转移编码:X传输编码:[TAB]块块[Space]转移编码:块状X:X:X [\ n]转移 - 编码:块转移 - 转移 - 转移 -编码:块

这些技术中的每一个都涉及与HTTP规范的微妙不同。实现协议规范的现实世界代码很少以绝对的精度粘附,并且不同的实现通常可以忍受规范的不同变化。要揭示te.te脆弱性,有必要找到一些变化转移编码标题使得只有前端或后端服务器之一对其进行处理,而另一个服务器则忽略了它。

取决于可以引起不处理混淆的前端还是后端服务器转移编码标题,其余的攻击将采用与已经描述的CL.TE或TE.CL漏洞相同的形式。

如何识别HTTP请求走私漏洞

请查看以下部分,以获取有关如何确定HTTP请求走私漏洞的一些提示。我们还提供了一些互动性实验室,因此您可以在实践中看到这是如何工作的。

如何利用HTTP请求走私漏洞

现在您已经熟悉了基本概念,让我们看一下如何使用http请求走私来制作许多高级攻击。像往常一样,有很多完全互动实验室,因此您可以尝试攻击现实目标。

高级HTTP请求走私

如果您已经完成了我们的其余要求走私实验室,则可以学习一些更高级的技术。我们创建了许多交互式实验室基于Portswigger研究人员发现的现实世界漏洞。beplay官网可以赌您甚至有机会尝试Burp的基于HTTP/2的测试的独一无二功能。

如何防止HTTP请求走私漏洞

在前端服务器和后端服务器使用不同的机制来确定请求之间的边界的情况下,HTTP请求走私漏洞会出现。这可能是由于HTTP/1服务器使用的差异内容长度标题或块的传输编码以确定每个请求结束的位置。在HTTP/2环境中,降级HTTP/2的后端请求的常见做法也充满了问题,并启用或简化了许多其他攻击。

为了防止HTTP请求走私漏洞,我们建议采取以下一般步骤:

  • 使用HTTP/2端到头,并在可能的情况下禁用HTTP降级。http/2使用强大的机制来确定请求的长度,并且在用来结束时,它固有地保护了请求侵犯。如果您无法避免HTTP降级,请确保根据HTTP/1.1规范验证重写的请求。例如,拒绝在标题中包含新线的请求,标题名称的结肠和请求方法中的空格。

  • 使前端服务器正常于模棱两可的请求,并使后端服务器拒绝任何仍然模棱两可的内容,从而在此过程中关闭TCP连接。

正如我们在学习材料中所证明的那样,禁用后端连接的重复使用将有助于减轻某些攻击,但这仍然不能保护您免受请求隧道攻击。

免费注册以跟踪您的学习进度

通过Portswigger的网络安全学院工作的好处beplay官网可以赌beplay体育能用吗
  • 练习在现实目标上利用漏洞。

  • 记录您从学徒到专家的发展。

  • 看看您在我们的名人堂中排名。

已经有一个帐户?在此登录