把 HTTP 头注入升级成严重漏洞:一条 prompt 搞定
你现在可以将HTTP头注入升级到CRLF驱动的Desync,并利用它在一个提示中向随机用户提供一个重定向到你的协作者。我们刚刚引入了新的 HTTP 请求头注入扫描检查,以及精炼的 CRLF 驱动的不同步攻击:将 HTTP Stream 的利用方法论斩首进 Burp AT。下面请观看实际操作:
HTTP 请求走私攻击极具破坏性。更糟糕的是,这些研究如此广泛且复杂,我们发布了六份关于它们的BlackHat USA研究报告。如果你不想错过关键漏洞,这可是大量新的黑客技术。
为了帮助测试人员发现更多前沿的关键漏洞,我们正在将PortSwigger研究团队的知识浓缩到Burp AT技能中。这使它能够在后台自主执行我们的研究级方法论,同时你继续进行自己的手动测试。
我们的CRLF驱动的非同步方法论
为了说明我们的意思,以下是Burp AT在背景中为您采取的步骤。该技能预期 Burp 会有 HTTP 请求头注入的问题,并用它运行多个阶段,每个阶段都是我们研究中使用的方法论中的一步:
第一阶段 - 确定上游注入位置
仅仅因为你的插入点是路径,并不意味着你注入的头部最终会进入上游路径。我们遇到过几次路径被重写为上游自定义头的情况,这意味着为了实现请求拆分,我们需要识别自定义头部是在现有主机头部之前还是之后。
例如,如果以下条件生成正常状态码:
GET /%0d%0a%0d%0a HTTP/1.1
但添加主机头部,比如这样会触发400:
GET /%0d%0aHost:%20x%0d%0a%0d%0a HTTP/1.1
上游请求:
GET / HTTP/1.1 Host: example.com X-Original-path: / Host: x
这样我们就可以相当确定注入发生在一个自定义的头部内,该头部出现在上游请求的主机头部之后。
注意:技能检查和扫描检查都支持任何插入点,而不仅仅是路径
第二阶段 - 通过请求拆分验证不同步
接下来,我们需要构建请求拆分负载,并证明我们能够实现不同步。为此,我们利用第一阶段提供的结构构建请求拆分有效载荷,前缀如下:
GET /%0d%0a%0d%0aGET%20/%20HTTP/13.37%0d%0aHost:%20example.com %0d%0aContent-Length:%20150%0d%0a%0d%0a HTTP/1.1 GET /%0d%0a%0d%0aTRACE%20/%20HTTP/1.1%0d%0aHost:%20example.com %0d%0aContent-Length:%20150%0d%0a%0d%0a HTTP/1.1
该技能会模糊多个不同的前缀有效载荷,以尝试生成唯一的状态代码。一旦收集了2到3个请求,我们就知道前缀在上游修改了我们的请求,它会进入利用程序。
第三阶段——找到一个漏洞小工具
此阶段将对目标域名发起迷你爬行,试图通过Host头、X转发Host头或绝对URL诱导的开放重定向。
第四阶段——利用目标
假设我们在第三阶段找到了某个小工具,现在可以通过将第二阶段请求结构和第三阶段小工具结合来构建漏洞利用。例如,如果第三阶段识别出一个向向请求重定向到并使用主机头部确定该重定向的位置,第四阶段尝试以下利用方法:/assets/assets/
GET /%0d%0a%0d%0aGET%20/assets%20HTTP/1.1%0d%0aHost:%20collaborator.net%0d%0a Content-Length:%20150%0d%0a%0d%0a HTTP/1.1
如果通过不同连接反复发送请求,结果如预期的重定向响应攻击者域,技能报告所有证据中存在问题。
如果你和我一样,可能会好奇为什么我们选择了如此安全的利用方式,而不是我们在研究论文中发表的攻击。我们也考虑过其他利用途径,即响应队列中毒,但测试中发现这极其危险,因此我们选择了谨慎起见,选择了如果影响到真实用户会更不灾难性的利用方式。话虽如此,如果你想要更大的影响力,报告的漏洞利用是通过缓存中毒串联实现全站接管的基础。
PortSwigger研究技能
PortSwigger Research 正在开发的技能,旨在让我们发现和使用的技术尽可能实用,并尽快实现。通过将我们的方法导入Burp AT,测试人员可以在技术发布后立即识别出来自新攻击向量的关键漏洞。
我们的技能优雅地失效,并设有多个缓冲点,将测试人员重新纳入流程进行后续跟踪。例如,如果小工具阶段失败,你仍然会得到经过验证的不同步发现,但没有漏洞利用的证据。如果第二阶段未能获得足够明显的状态代码,它将报告一个暂定性问题。
我们的技能还涵盖了研究中遇到的每一个边缘案例。一旦Burp AT完成,你要么会报告端到端的漏洞,要么得到经过验证的发现,你可以凭借自己的知识轻松进行进一步研究。
例如,一个特别棘手的边缘情况是盲请求隧道(blind request tunneling),当不同步攻击失败时常被忽略。为了解决这个问题,我们将发布一个额外技能,如果CRLF驱动的“Desync”技能在第二阶段证明无法完全脱离时,它将退回该技能。运气好的话,CRLF驱动的隧道技能能找到门禁绕过漏洞,但如果失败,你会发现一个预填的入侵者会话,方便你与自己的词汇列表搭配使用。
这些技能默认是启用的,所以下次Burp Scanner报告报头注入时,可以试着让Burp AT利用它。你可能只会因为一个提示而获得致命漏洞。