Web缓存欺骗攻击:路径混淆与CDN静态缓存滥用"

admin 2026-10-16 03:42:39 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

Web 缓存欺骗攻击:路径混淆与 CDN 静态缓存滥用

原创

Red Hunter
Red Hunter

黑白之道

2026年10月8日 09:00
韩国

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

  • 评论区/XSS 注入里嵌 <img src=\"http://target.example/myprofile/x.css\">——浏览器会自动请求
  • 任何能控制受害者浏览器发请求的地方都行
  • Step 4:受害者点击访问 受害者已登录态下访问 http://target.example/myprofile/x.css,后端路由命中 myprofile 视图,渲染出受害者个人信息;CDN 看到 .css 后缀 + 响应头允许缓存,把它存到边缘节点。

    Step 5:攻击者未登录拉取 攻击者开一个完全无登录态的浏览器(或用 curl 不带 Cookie),访问同一 URL:

    curl http://target.example/myprofile/x.css
    # 返回受害者的个人信息 HTML
    

    五、检测与识别

    自动化检测可以借 Burp Suite 的扩展和现成 PoC:

    • Burp Cache Deception Scanner — 自动遍历带 Cookie 的页面,挨个加 .css、.jpg 测试缓存行为
    • Web Cache Deception Burp 插件 — Smuggler 风格
    • 手工检测流程:登录后访问 /myprofile/x.css → 看响应是否有 Cache-Control: no-store、Vary: Cookie、响应码是否是 200 → 看 CDN 是否返回 Age 头(说明被缓存了)

    判定标准:

    • 受害者访问后,CDN 响应里出现 Age、X-Cache: HIT、CF-Cache-Status: HIT 等字段 → 已缓存
    • 未登录访问同一 URL 能拿到登录态下的内容 → WCD 成立

    六、防御方案

    按层级给:

    应用层:

    • 敏感路径响应头强制Cache-Control: private, no-store
    • 关键响应加 Vary: Cookie 或 Vary: Authorization
    • 视图层校验完整路径,不接受 myprofile/x.css 这种后缀混搭

    框架层:

    • Django 用更精确的正则:url(r'^myprofile/?$', ...),锚定结尾
    • Express.js 不混用 app.use 静态托管和动态路由
    • Nginx location 块用精确匹配(= /myprofile)或正则(~ ^/myprofile$)

    CDN 层:

    • 默认开启\"区分 Cookie 的缓存键\"(Cloudflare 高级规则可配)
    • 敏感路径走\"绕过缓存\"规则
    • 监控 X-Cache: HIT 在敏感路径上的出现频次

    HTTP 层补充:

    • 加 X-Content-Type-Options: nosniff,避免响应被当成 CSS/JS 解析
    • CSP(内容安全策略)限制内联脚本,即便攻击者拿到 HTML 也难以触发脚本执行

    七、思考题

    1. 某应用 /api/me 强制 Cache-Control: no-store,但 /api/me.json(带后缀)没有——攻击者能不能改 Path 让 JSON 后缀也路由到 /api/me 视图?
    2. CDN 开启了\"按 Cookie 区分缓存键\",但应用只用 Cookie 做语言偏好(lang=en / lang=zh)——攻击者能不能伪造 Cookie 让 CDN 命中受害者那条缓存?
    3. WCD 和 CSRF(跨站请求伪造)都能诱导受害者访问特定 URL,两者诱导的方式有什么本质区别?

    下一篇 day17 会拆解 Session Puzzling——多应用复用同一 session 时的逻辑混淆攻击。


    八、素材出处

    • Learn365 Day 16 原文:https://github.com/harsh-bothra/learn365/blob/main/days/day16.md
    • Web Cache Deception Attack(Omer Gil 原文):https://omergil.blogspot.com/2017/02/web-cache-deception-attack.html
    • PortSwigger Web Cache Deception 实验:https://portswigger.net/web-security/web-cache-deception
    • GitHub 2017 WCD 案例:https://github.blog/security/web-cache-deception-attack/

    👇 点击阅读原文,访问我的网站



    Web缓存欺骗攻击:路径混淆与CDN静态缓存滥用" 网络安全文章

    Web缓存欺骗攻击:路径混淆与CDN静态缓存滥用"

    本文系统解析Web缓存欺骗攻击原理,核心是利用URL路径混淆让CDN误缓存用户私有动态页面,攻击者未登录即可读取受害者敏感信息。文章详述攻击链五步骤、检测方法及分层防御方案,强调应用层强制Cache-Control:no-store、框架层精确路由匹配、CDN层区分Cookie缓存键等可操作建议。
    SessionPuzzling攻击:会话变量滥用与认证绕过" 网络安全文章

    SessionPuzzling攻击:会话变量滥用与认证绕过"

    本文系统解析SessionPuzzling攻击原理,指出应用将同一session变量复用于多用途导致逻辑流可被打乱,攻击者可先访问未鉴权入口写入变量,再借以绕过鉴权。文章列举OWASP定义的五大危害,详述忘记密码页经典攻击场景,给出入口点与出口点枚举测试方法论,并介绍BoomerangEffect研究、检测自动化手段及分层修复方案,强调变量单一用途与流程标记等加固建议。
    【已复现】CVE-2026-21589AtlassianJira任意文件读取漏洞" 网络安全文章

    【已复现】CVE-2026-21589AtlassianJira任意文件读取漏洞"

    CVE-2026-21589影响Atlassian全线产品共享库atlassian-plugins-webresource,官方2026年10月5日发布带外公告修复。漏洞源于URL转义顺序颠倒导致路径穿越,可读取webapp内任意文件如web.xml、crowd.properties等敏感配置,实测可整包拖走JAR文件。攻击者还可利用泄露的crowd.properties创建管理员账号接管系统。建议立即升级至修复版本并排查日志。
    【已复现】CVE-2026-102489Zammad会话劫持到远程代码执行" 网络安全文章

    【已复现】CVE-2026-102489Zammad会话劫持到远程代码执行"

    本文详细分析了Zammad系统CVE-2026-102489漏洞,该漏洞源于WebSocket事件分发机制中四个缺陷叠加,攻击者可通过一条匿名消息获取所有在线用户会话Cookie,进而劫持管理员会话,通过恶意扩展包实现任意文件写,最终覆盖密码重置邮件模板执行远程代码。影响7.1.x及更早版本,官方修复随7.2.0发布。文章提供了完整攻击链复现过程,建议用户尽快升级至7.2.0版本。
    评论:0   参与:  0