用于设置 nuxt3 >=3.0.0 <3.16.0 中发生的缓存投毒漏洞环境的仓库
当 Nuxt 服务器前面有 CDN 时,如果 CDN 仅将除 URL 查询之外的路径作为缓存键,那么对 /?/_payload.json 的请求仅缓存为 / 的键,导致其他用户请求 / 时,会从缓存中返回 _payload.json 的响应,而不是正常页面。
攻击者可以在缓存过期期间每隔一段时间请求 /?/_payload.json,导致其他用户无法获取正常页面,从而引发 DoS 漏洞。
https://preo123.tistory.com/19
git clone https://github.com/jiseoung/CVE-2025-27415-PoC.git
cd CVE-2025-27415-PoC
docker-compose up --build
'/' :用于诱导缓存投毒的页面
实际上,如果向 http://localhost/?/_payload.json 发送请求,为 '/' 路径创建缓存,那么当访问 http://localhost/ 时,不会返回 '/' 页面的响应,而是返回缓存中存储的 _payload.json 的 JSON 内容。
'/ex' :自动执行缓存投毒攻击的页面
Target Origin :执行缓存投毒攻击的路径
在这个环境中,必须使用主机上的 nginx 容器 nuxt-nginx。因为攻击自动化服务器是在另一个容器中使用 Flask 构建的,如果发送到 localhost,会被识别为那个容器的 localhost。
Cache Interval :发送请求的周期(秒)。设置为略短于 CDN 缓存消失的周期。
在这个环境中,请求会被缓存 60 秒。