“缓存欺骗第二章第三节”攻击开始前的必备要素-检测缓存响应

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

文章总结: 本文介绍了缓存欺骗攻击前必备的检测缓存响应技巧,主要通过观察X-Cache和Cache-Control响应头以及响应时间差异来判断响应是否来自缓存。X-Cache响应头可明确显示响应来源(hit表示来自缓存,miss表示未命中缓存),而Cache-Control响应头仅指示资源可缓存性但不保证实际来自缓存。文章用餐厅出菜类比解释了这些概念,强调在测试时必须使用随机参数绕过缓存以确保请求真正到达后端服务器,避免被中间缓存层干扰测试结果。 综合评分: 75 文章分类: WEB安全,漏洞分析,渗透测试,红队,缓存欺骗


cover_image

“缓存欺骗第二章第三节”攻击开始前的必备要素-检测缓存响应

原创

升斗安全XiuXiu

升斗安全

2025年12月14日 15:15 广东

【文章说明】

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

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

在测试过程中,准确识别缓存响应至关重要。可通过观察响应头与响应时间来判断。

多种响应头可能暗示响应来自缓存,例如:

X-Cache响应头可提供响应是否来自缓存的信息,典型取值包括:

  • X-Cache: hit—— 响应来自缓存。

  • X-Cache: miss—— 缓存中未存储该请求键对应的响应,因此从源服务器获取。通常此类响应随后会被缓存。为验证此情况,可重新发送请求并观察该值是否变为hit。

  • X-Cache: dynamic—— 内容由源服务器动态生成,通常意味着该响应不适合缓存。

  • X-Cache: refresh—— 缓存内容已过期,需要刷新或重新验证。

Cache-Control响应头可能包含指示缓存的指令,例如public且max-age大于0。需注意此标头仅表明资源可缓存,并不一定代表响应实际来自缓存,因为缓存服务器有时会覆盖此标头。

如果观察到同一请求的响应时间存在显著差异,较快的响应往往也表明其来自缓存。

上面的内容不好理解?那可以看看下面用餐厅出菜的方式类比举例,一定能够帮助你更深刻理解上述流程:

想象一下,你去一个生意火爆的餐馆吃饭。厨房是源服务器,前台就是缓存。

你点菜(发请求),菜单号(URL + 参数)就是 缓存键。

  1. 为什么测试时要“换菜单号”(用缓存破坏器)?

你第一次点“宫保鸡丁”,厨房现做(服务器处理),很慢。然后前台把这个做好的菜(响应)存了一份。

如果你第二次还点一模一样的“宫保鸡丁”,前台看菜单号一样,就会直接把存的菜端给你,又快又不用惊动厨房。这就会让你误以为:“哦?好像没漏洞?”

所以,你要每次都在菜单后面加个随机小要求,比如“宫保鸡丁,备注:筷子要新的123”,下次改成“筷子要新的456”。这样前台每次看到的是新菜单,就只能去后厨问,你才能测出真实的反应。

在“缓存欺骗第二章第二节”攻击开始前的必备要素-破坏缓存介绍的自动化工具(Param Miner)就是帮你自动加这个“随机备注”的。

  1. 怎么判断你吃的菜是“新做的”还是“之前存的”(检测缓存响应)?
  • 看“小票”(响应头):

X-Cache: hit:这就是之前存的那份,直接从冰箱(缓存)里拿出来的。

X-Cache: miss:新做的。因为冰箱里没有,所以去厨房现做(回源)了。

Cache-Control: public, max-age=3600:这是写在食谱上的规定,说“这道菜做好后,可以放冰箱保存1小时”。但不代表你拿到的这份就是冰箱里的。

  • 感觉“上菜速度”(响应时间):

第一次点,等了5分钟。第二次立刻(比如0.1秒)就上菜了?这太可疑了,绝对是冰箱里的存货。

所以,总结成最实际的一句话就是:

在测试缓存相关的漏洞时,你必须确保你的每次“试探”(请求)都真的“打疼”了服务器(命中了后端),而不是被中间商(缓存)给挡住了。用随机参数绕过缓存,然后看响应头和时间,判断你打到的到底是谁。

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


查看原文:《“缓存欺骗第二章第三节”攻击开始前的必备要素-检测缓存响应》

评论:0   参与:  2