“缓存欺骗第五章第三节”缓存与源服务器的路径解析“错位攻击”:如何让静态链接吐出动态数据?

admin 2025-12-29 01:16:24 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文深入探讨利用缓存与源服务器对路径编码及分隔符解析差异的缓存欺骗攻击。通过构造含特定分隔符的载荷,使源站处理动态请求但缓存将其映射为静态路径,从而将敏感动态数据存储在静态链接下。文章详细解析了攻击原理、载荷构造逻辑及实施步骤,强调了识别有效分隔符并利用解析错位污染缓存的关键性。 综合评分: 88 文章分类: WEB安全,漏洞分析,渗透测试


cover_image

“缓存欺骗第五章第三节”缓存与源服务器的路径解析“错位攻击”:如何让静态链接吐出动态数据?

原创

升斗安全XiuXiu

升斗安全

2025年12月26日 18:15 广东

【文章说明】

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

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

在上一章节《“缓存欺骗第五章第二节”漏洞挖掘实战:利用路径规范化差异,实现缓存欺骗漏洞的精准打击》中,我们针对源服务器对路径编码的规范化,实施了缓存欺骗的攻击演示。今天,我们反过来,开始了解下缓存服务器对路径编码的规范化,看看又会有什么一种情况。

如果缓存服务器解析编码的点分段(dot-segments)而源服务器不解析,您可以尝试通过以下结构构造载荷来利用这种差异:

/<动态路径>%2f%2e%2e%2f<静态目录前缀>

注意:

在利用缓存服务器的规范化时,请对路径遍历序列中的所有字符进行编码。使用编码字符有助于避免在使用分隔符时出现意外行为,并且由于缓存服务器会处理解码,无需在静态目录前缀后添加未编码的斜杠。

在这种情况下,仅凭路径遍历本身不足以实现利用。

例如,考虑缓存服务器和源服务器如何解释载荷/profile%2f%2e%2e%2fstatic:

缓存服务器将路径解释为:/static 【缓存服务器解析了路径编码,所有直接忽略了/profile】

源服务器将路径解释为:/profile%2f%2e%2e%2fstatic【源服务器不进行任何解析,所以直接返回原路径】

源服务器很可能返回错误信息,而非个人资料信息。

关键点总结:

该技术利用缓存与源服务器对编码路径解析不一致的漏洞,但这次是缓存服务器解析了,源服务器不解析。

  • %2f 是斜杠 / 的URL编码,%2e 是点 . 的URL编码。

  • 攻击目标是通过缓存服务器访问本应受限的静态资源目录。

  • 实际利用需结合具体应用场景(如存在静态资源目录且缓存策略可被绕过)。

利用该差异进行攻击时,您还需要识别一个在源服务器中使用但缓存服务器不使用的分隔符。 通过将分隔符添加到动态路径后的载荷中进行测试:

  • 如果源服务器使用该分隔符,它将截断URL路径并返回动态信息。
  • 如果缓存服务器不使用该分隔符,它将解析完整路径并缓存响应。

例如,考虑载荷 /profile;%2f%2e%2e%2fstatic。源服务器使用 ; 作为分隔符:

缓存服务器将路径解释为:/static 【缓存服务器不使用分隔符,但会解析路径编码,所以直接忽略了/profile】

源服务器将路径解释为:/profile 【源服务器使用分隔符,就不解析后面的路径编码了】

源服务器返回动态个人资料信息,该响应被存储在缓存中。因此,您可以使用此载荷进行攻击利用。

攻击原理示意图:

用户请求 →&nbsp;`/profile;%2f%2e%2e%2fstatic`&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;↓缓存服务器 → 解码后视为&nbsp;`/static`&nbsp;→ 若缓存未命中则转发请求&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;↓源服务器 &nbsp; → 将&nbsp;`;`&nbsp;视为参数分隔符 → 实际处理&nbsp;`/profile`&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;↓源服务器响应 → 返回&nbsp;`/profile`&nbsp;的动态内容&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;↓缓存服务器 → 将响应关联到&nbsp;`/static`&nbsp;并缓存&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;↓后续请求&nbsp;`/static`&nbsp;的用户 → 获得本应属于&nbsp;`/profile`&nbsp;的敏感数据

以上内容的关键步骤:

  • 识别有效分隔符:常见分隔符包括 ;、?、# 等,需通过测试确认哪些被源服务器解析但被缓存忽略。
  • 构造混淆路径:利用分隔符使两服务器解析出不同路径。
  • 污染缓存:使敏感动态内容被缓存到静态资源路径下。
  • 获取数据:通过请求静态路径访问被缓存的信息。

关于缓存欺骗,合集《缓存欺骗漏洞的原理及相关利用手法》持续更新中,想要系统学习、深入了解这块的小伙伴,欢迎关注、收藏、分享~


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:升斗安全 升斗安全XiuXiu《“缓存欺骗第五章第三节”缓存与源服务器的路径解析“错位攻击”:如何让静态链接吐出动态数据?》

评论:0   参与:  0