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

http请求走私

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

什么是HTTP请求走私?

HTTP请求走私是一种干扰网络站点处理从一个或多个用户接收的HTTP请求的序列的方式。beplay体育能用吗请求走私漏洞通常在其自然界中往往是至关重要的,允许攻击者绕过安全控件,增益未经授权访问敏感数据,并直接危及其他应用程序用户。

http请求走私

笔记

HTTP请求走私最早记录于2005年,最近在beplay官网可以赌PortSwigger的研究在这个话题。

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

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

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

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

在这种情况下,前端和后端系统对请求之间的边界一致至关重要。否则,攻击者可能能够通过前端和后端系统发送不同地解释的模糊请求:

向后端服务器发送HTTP请求

在这里,攻击者使其前端请求的一部分被后端服务器解释为下一个请求的开始。它实际上是下一个请求的前置,因此可能会干扰应用程序处理该请求的方式。这是一种请求走私攻击,它可以产生毁灭性的结果。

HTTP请求走私漏洞是如何产生的?

由于HTTP规范提供了两种不同的方式来指定请求结束的位置,所以出现了大多数HTTP请求偷袭漏洞内容长度头和转移编码头。

内容长度标题很简单:它指定了消息正文的长度以字节为单位。例如:

POST HTTP / 1.1 /搜索
host:promal-wbeplay体育能用吗ebsite.com.
内容类型:应用程序/ x-www-form-urlencoded
内容长度:11

q =走私

转移编码头可用于指定消息体使用分块编码。这意味着消息体包含一个或多个数据块。每个块由字节表示的块大小(以十六进制表示)、换行符和块内容组成。消息以大小为0的块结束。例如:

POST HTTP / 1.1 /搜索
host:promal-wbeplay体育能用吗ebsite.com.
内容类型:应用程序/ x-www-form-urlencoded
传输编码:分块

B.
q =走私
0.

笔记

许多安全测试仪未知,可以在HTTP请求中使用Chunked编码,有两个原因:

  • Burp Suite自动解包分组编码,使消息更容易查看和编辑。
  • 浏览器通常不会在请求中使用分块编码,它通常只在服务器响应中出现。

由于HTTP规范提供了两种不同的方法来指定HTTP消息的长度,因此单个消息可以一次使用两种方法,使得它们彼此冲突。HTTP规范试图通过说明如果两个内容长度转移编码header存在,然后内容长度Header应该被忽略。当只有一个服务器在使用时,这可能足以避免歧义,但当两个或多个服务器被链接在一起时,就不能这样做了。在这种情况下,出现问题有两个原因:

  • 部分服务器不支持转移编码在请求头。
  • 一些支持的服务器转移编码如果头文件以某种方式被混淆,则可以诱导头文件不处理它。

如果前端和后端服务器与(可能会困扰)不同的方式不同转移编码头,那么他们可能不同意连续请求之间的边界,导致请求偷运漏洞。

如何执行HTTP请求走私攻击

请求偷运攻击涉及放置两者内容长度头和转移编码标题为单个HTTP请求并操纵这些,以便前端和后端服务器以不同方式处理请求。这样做的确切方式取决于两个服务器的行为:

  • CL。TE:前端服务器使用内容长度Header和后端服务器使用转移编码头。
  • te.cl:前端服务器使用转移编码Header和后端服务器使用内容长度头。
  • te.te:前端和后端服务器都支持转移编码标题,但可以通过以某种方式混淆标题来诱导其中一个服务器。

CL。TE的漏洞

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

POST / HTTP / 1.1
主持人:vulnerable-webeplay体育能用吗bsite.com
内容长度:13
传输编码:分块

0.

走私

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

后端服务器处理转移编码Header,因此将消息体视为使用分块编码。它处理第一个块,该块声明为零长度,因此被视为终止请求。第二个字节,走私,留下未处理,后端服务器将这些服务器将其视为序列中下一个请求的开始。

te.cl漏洞

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

POST / HTTP / 1.1
主持人:vulnerable-webeplay体育能用吗bsite.com
内容长度:3
传输编码:分块

8.
走私
0.

笔记

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

您需要包含尾随序列\ r \ n \ r \ n后,最终0.

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

后端服务器处理内容长度头,并确定请求正文为3字节长,直到下面一行的开始8.。以下字节,以走私,留下未处理,后端服务器将这些服务器将其视为序列中下一个请求的开始。

TE。TE行为:混淆TE报头

在这里,前端和后端服务器都支持转移编码标题,但可以通过以某种方式混淆标题来诱导其中一个服务器。

可能有无穷无尽的方法来混淆转移编码头。例如:

传输编码:xchunked

传输编码:分块

传输编码:分块
传输编码:x

传输编码:[tab]进行分块

(空间)传输编码:分块

X: [\ n]传输编码:分块

转移编码
:分块

每一种技术都与HTTP规范有细微的不同。实现协议规范的真实代码很少会绝对精确地遵循协议规范,不同的实现通常会容忍规范的不同变化。发现TE。TE漏洞,有必要找出一些变异转移编码头,只有一个前端或后端服务器处理它,而另一个服务器忽略它。

取决于它是前端服务器还是后端服务器,可以诱导不处理模糊转移编码头,其余的攻击将采取相同的形式为CL。TE或TE。已经描述了CL漏洞。

如何防止HTTP请求走私漏洞

HTTP请求走私漏洞在前端服务器在相同的网络连接上向后端服务器转发到后端服务器的情况下出现,并且用于后端连接的协议带来两个服务器对边界之间的风险要求。防止HTTP请求走私漏洞产生的一些通用方法如下:

  • 禁用后端连接的重用,以便每个后端请求都通过单独的网络连接发送。
  • 使用HTTP/2作为后端连接,因为该协议可以防止请求之间边界的歧义。
  • 为前端和后端服务器使用完全相同的Web服务beplay体育能用吗器软件,以便他们一致意见请求之间的边界。

在某些情况下,可以通过使前端服务器正常化不明确的请求或使后端服务器拒绝不明确的请求并关闭网络连接来避免漏洞。然而,这些方法可能比上面确定的通用缓解更容易出错。

使用Burp Suite查找请求走私漏洞

通过Portswigge的Web安全学院工作的好处beplay官网可以赌beplay体育能用吗

开始使用Web安全学院,您可以在那里练习在beplay体育能用吗现实目标上利用漏洞..它是免费的!

已经有账户了?登录这里