“缓存欺骗第二章第四节”攻击开始前不能忽略的内容–静态扩展缓存规则

admin 2025-12-22 04:21:01 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文阐述了缓存欺骗攻击中利用静态扩展缓存规则的原理。攻击者通过在动态资源URL后添加静态扩展名如.css,使CDN缓存服务器误将其识别为静态资源并缓存,而源服务器可能忽略该扩展名并返回动态内容。这导致敏感的动态响应被缓存,当其他用户访问同一URL时,会收到攻击者的缓存数据,造成信息泄露。文章强调了攻击前理解此类规则差异的重要性。 综合评分: 86 文章分类: WEB安全,漏洞分析


cover_image

“缓存欺骗第二章第四节”攻击开始前不能忽略的内容–静态扩展缓存规则

原创

升斗安全XiuXiu

升斗安全

2025年12月15日 19:24 广东

【文章说明】

  • 目的:本文内容仅为网络安全技术研究与教育目的而创作。
  • 红线:严禁将本文知识用于任何未授权的非法活动。使用者必须遵守《网络安全法》等相关法律。
  • 责任:任何对本文技术的滥用所引发的后果自负,与本公众号及作者无关。
  • 免责:内容仅供参考,作者不对其准确性、完整性作任何担保。

阅读即代表您同意以上条款。

缓存规则通常通过匹配常见的文件扩展名(如.css或.js)来针对静态资源进行缓存,这是大多数内容分发网络(CDN)的默认行为。

如果缓存服务器和源服务器在将URL路径映射到资源的方式或使用的分隔符上存在差异,攻击者可能能够构造一个针对动态资源的请求,该请求携带静态扩展名。这种扩展名可能被源服务器忽略,但会被缓存服务器视为静态资源进行处理。

以上内容不是很好理解?那我们拿下面这个例子来进一步理解下

想象一个快递分拣中心(CDN缓存)和一个手工定制作坊(源服务器)。

分拣中心规则:看到包裹单上写着“玩具”(.css, .js),就直接从仓库里拿现成的标准玩具发出去,不再问作坊。这是它的“静态扩展缓存规则”。

手工作坊规则:它不看“玩具”这个标签,它只看包裹单上的“定制编号”。即使用户在“玩具”标签后面写了一个定制编号,作坊也忽略“玩具”标签,只根据编号来制作一个独一无二的、可能包含用户隐私的定制物品。

攻击者是怎么做的?

构造一个奇怪的请求:攻击者发送一个请求,URL看起来像:https://example.com/user/profile.css?userId=攻击者的ID。

在分拣中心看来:profile.css → 以 .css 结尾 → 这是个“玩具”(静态资源)!我应该缓存它,并把缓存结果给所有要同样“玩具”的人。

在手工作坊看来:它收到请求后,可能因为其框架的配置,完全忽略 .css 这个扩展名。它只解析路径 /user/profile 和查询参数 userId=攻击者的ID。于是,它生成了攻击者的个人资料页面(动态资源),并返回。

污染缓存:分拣中心收到了作坊返回的“攻击者的个人资料页面”,但它认为这是一个名叫 profile.css 的“玩具”。它把这个包含敏感信息的页面当作静态CSS文件缓存起来。

后果:当其他正常用户(比如受害者)访问 https://example.com/user/profile.css(也许他的浏览器在请求一个真正的CSS文件)时,分拣中心会直接把缓存的、属于攻击者的个人资料页面 返回给受害者。受害者就看到了攻击者的私人信息。

合集《缓存欺骗漏洞的原理及相关利用手法》系列内容持续更新中,感兴趣的小伙伴们,别忘了收藏、点赞、分享、关注哦~


查看原文:《“缓存欺骗第二章第四节”攻击开始前不能忽略的内容–静态扩展缓存规则》

评论:0   参与:  2