7.5 KiB
HTTP连接污染
☁️ HackTricks云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 你在一家网络安全公司工作吗?你想在HackTricks中看到你的公司广告吗?或者你想获得PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFTs收藏品- The PEASS Family
- 获取官方PEASS和HackTricks周边产品
- 加入💬 Discord群组或电报群组,或在Twitter上关注我🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享你的黑客技巧。
本文内容摘自 https://portswigger.net/research/http-3-connection-contamination****
Web浏览器使用HTTP连接合并,允许它们为发送到不同网站的请求重用一个HTTP/2+连接,前提是这些网站解析到相同的IP地址并使用适用于两个主机名的TLS证书。
首次请求路由是一种危险的反向代理行为,代理分析连接上的第一个请求以确定将其路由到哪个后端,然后将该连接上的所有后续请求发送到同一个后端。
连接合并和首次请求路由不兼容。例如,假设secure.example.com和wordpress.example.com都位于一个反向代理后面,使用一个对*.example.com有效的证书:
$ nslookup wordpress.example.com
52.16.179.7 // reverse proxy that supports HTTP/2 and does first-request routing
$ nslookup secure.example.com
52.16.179.7 // same reverse proxy
$ openssl s_client -connect x.portswigger-labs.net:443
subject=/CN=*.example.com // wildcard TLS certificate
如果浏览器尝试发送一个请求到wordpress.example.com
,然后是secure.example.com
,浏览器连接合并将强制将这两个请求通过单个连接发送到前端。首次请求路由将导致将请求发送到secure.example.com
的错误路由到WordPress后端。这意味着,如果你在wordpress.example.com
上发现了XSS,你可以利用它来危害secure.example.com
!
// create HTTP/2+ connection
fetch('https://wordpress.example.com/', {credentials: 'include'})
// connection coalescing will force this down the same connection...
// ...leading to the front-end misrouting it to WordPress
// the browser thinks our injected JS is coming from secure.example.com
// exposing saved passwords, cookies, etc.
location='https://secure.example.com/plugin/x?q=<script>stealPasswords()'
你可以使用Chrome开发者工具中的网络选项卡下的时间图(或者如果你是个受虐狂,可以使用Wireshark)来探索连接合并。使用fetch()发出请求对,并观察图表是否显示第二个请求的“初始连接”所花费的时间,并且连接ID列是否匹配:
{% code overflow="wrap" %}
fetch('//sub1.hackxor.net/', {mode: 'no-cors', credentials: 'include'}).then(()=>{ fetch('//sub2.hackxor.net/', {mode: 'no-cors', credentials: 'include'}) })
{% endcode %}
我还没有投入足够的时间来深入探索这个威胁或在野外进行扫描,因为我认为它目前是罕见的,有两个原因。首先,第一次请求路由相对较少见,而HTTP/2的实现复杂性意味着相对于HTTP/1.1,唯一的HTTP/2服务器数量很少。其次,连接合并意味着执行第一次请求路由的HTTP/2服务器可能会间断性地对真实访问者产生影响,因此所有者可能会在没有攻击者鼓励的情况下修复漏洞。
尽管如此,对于攻击者来说并非全是坏消息。HTTP/3提议删除IP地址匹配的要求,这将暴露所有使用第一次请求路由并具有适用于多个主机的证书的前端的人。
这也带来了第二个风险,与第一次请求路由无关 - 这意味着一个被入侵的具有通配符证书的服务器不再需要中间人攻击来利用。实际上,这极大地增加了可能从中获利的恶意行为者的数量。
为了在这些风险成为现实之前避免它们,确保您的反向代理不执行第一次请求路由。您可以在Repeater中手动测试此功能,方法是启用HTTP/1和HTTP/2连接重用,并使用HTTP Request Smuggler中的'Connection-State'攻击进行扫描。此外,请注意,尽管通配符TLS证书从来都不是理想的选择,但HTTP/3意味着一个被入侵的具有通配符证书的服务器现在可以用于攻击没有主动中间人攻击的同级域。
这些新的威胁延续了网络基础设施日益混乱的趋势,其中任何一个网站的弱点都会对整个系统的安全性产生许多非明显的连锁效应。有趣的是,我们将看到这些风险在实践中如何发挥作用。
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- 您在网络安全公司工作吗?您想在HackTricks中看到您的公司广告吗?或者您想获得PEASS的最新版本或下载PDF格式的HackTricks吗?请查看订阅计划!
- 发现我们的独家NFT收藏品The PEASS Family
- 获得官方PEASS和HackTricks周边产品
- 加入💬 Discord群组或电报群组,或在Twitter上关注我🐦@carlospolopm。
- 通过向hacktricks repo 和hacktricks-cloud repo 提交PR来分享您的黑客技巧。