http/2-排定向量
由于HTTP/2是二进制协议而不是基于文本的事实,因此由于其语法的局限性,有许多潜在的向量无法在HTTP/1中构造。
我们已经看到了你怎么能将CRLF序列注入标题值。在本节中,我们将为您提供一些其他HTTP/2划分的向量,您可以用来注入有效载荷。尽管HTTP/2规范正式禁止此类请求,但一些服务器无法有效验证和阻止它们。
笔记
只能使用专业的HTTP/2功能在Burp的检查员面板中。
通过标题名称注射
在http/1中,标题名称不可能包含一个结肠,因为此字符用于将名称的末端指示给解析器。在HTTP/2中不是这种情况。
通过将结肠与\ r \ n
角色,您也许可以使用HTTP/2标头的名称字段来偷走前端过滤器的其他标题。然后,一旦使用http/1语法重写请求后,这些内容将被解释为后端的单独标头:
前端(HTTP/2)
foo:酒吧\ r \ n转移编码:分块\ r \ nX: |
忽视 |
后端(HTTP/1)
foo:酒吧\ r \ n转移编码:分块\ r \ nX:忽略\ r \ n
通过伪头注射
HTTP/2不使用请求行或状态行。取而代之的是,该数据通过请求正面的一系列“伪标头”传递。在HTTP/2消息的基于文本的表示中,通常将它们带有结肠,以帮助它们与普通标头区分开。总共有五个伪头:
:方法
- 请求方法。:小路
- 请求路径。请注意,这包括查询字符串。:权威
- 大致等同于HTTP/1主持人
标题。:方案
- 请求方案,通常http
或者https
。:地位
- 响应状态代码(未在请求中使用)。
当网站将请beplay体育能用吗求降级到HTTP/1时,他们使用其中一些伪标头的值来动态构建请求行。这使一些有趣的新方法构建攻击。
提供模棱两可的主人
虽然http/1主持人
标头有效地取代了:权威
http/2中的伪标头,您仍然允许您发送主持人
请求中的标题。
在某些情况下,这可能导致两个主持人
重写HTTP/1请求中发生的标题,该请求打开了绕过前端的另一种可能性主持人
标题“过滤器。主持人
标题攻击否则它可能是免疫的。
提供模棱两可的道路
由于如何解析请求行,因此在HTTP/1中不可能尝试以模棱两可的路径发送请求。但是,由于使用伪标头指定了HTTP/2中的路径,因此现在可以发送带有两个不同路径的请求,如下所示:
:方法 | 邮政 |
:小路 | /任何事物 |
:小路 | /行政 |
:权威 | 脆弱的website.beplay体育能用吗com |
如果网站验证的路径之间存在差异beplay体育能用吗访问控件以及用于路由请求的路径,这可能使您能够访问原本不受限制的端点。
注入完整的请求行
在降级期间,:方法
伪标头将写入最终的HTTP/1请求的开始。如果服务器允许您在:方法
值,您可能能够注入完全不同的请求行,如下所示:
前端(HTTP/2)
:方法 | 获取 /管理员http /1.1 |
:小路 | /任何事物 |
:权威 | 脆弱的website.beplay体育能用吗com |
后端(HTTP/1)
get /admin http /1.1 /任何东西http /1.1主机:脆弱的website.combeplay体育能用吗
只要服务器还可以容忍请求行中的任意尾随字符,这提供了另一种用模棱两可的路径创建请求的方法。
注入URL前缀
HTTP/2的另一个有趣功能是能够使用该请求本身中明确指定方案:方案
伪头。虽然这通常只包含http
或者https
,您可能可以包括任意值。
当服务器使用服务器时,这可能很有用:方案
例如,标题动态生成URL。在这种情况下,您可以在URL中添加一个前缀,甚至可以通过将真实URL推入查询字符串来完全覆盖它:
要求
:方法 | 得到 |
:小路 | /任何事物 |
:权威 | 脆弱的website.beplay体育能用吗com |
:方案 | https://evil-user.net/poison? |
回复
:地位 | 301 |
地点 | https://evil-user.net/poison?://vulnerable-beplay体育能用吗website.com/anything/ |
将新线注射到伪头上
注射到:小路
或者:方法
伪标头,您需要确保生成的HTTP/1请求仍然具有有效的请求行。
作为\ r \ n
终止http/1中的请求行,只需添加\ r \ n
一部分通过,只会打破请求。降级后,重写的请求必须在第一个之前包含以下序列\ r \ n
您注射:
+空间 + <路径> +空间 + http/1.1
只需想象一下您的注射范围内的位置,并相应地包含所有其余部分即可。例如,注射到:小路
,您需要添加一个空间,http/1.1
之前\ r \ n
如下:
前端(HTTP/2)
:方法 | 得到 |
:小路 | /示例http/1.1\ r \ n转移编码:分块\ r \ nX:X |
:权威 | 脆弱的website.beplay体育能用吗com |
后端(HTTP/1)
获取 /示例http /1.1\ r \ n转移编码:分块\ r \ nX:X HTTP/1.1\ r \ n主持人:脆弱的website.cobeplay体育能用吗m\ r \ n\ r \ n
请注意,在这种情况下,我们还添加了一个任意的尾随标头,以捕获在重写期间自动添加的空间和协议。