首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >技巧 | web 缓存中毒是怎么一回事儿

技巧 | web 缓存中毒是怎么一回事儿

作者头像
信安之路
发布2025-10-21 13:07:49
发布2025-10-21 13:07:49
960
举报
文章被收录于专栏:信安之路信安之路

今天我们来聊聊 web 缓存中毒漏洞是怎么一回事儿,先来看个图:

img
img

当目标网站接入 CDN 时,第一个用户请求资源,首先请求的是 CDN 节点,此时,CDN 节点未缓存目标网站的资源,就会去目标服务器请求,也就是常说的回源,然后 CDN 节点会根据用户的配置,缓存对应的资源。

后续的用户,在访问相同资源时,如果配置未发生改变且缓存时间在配置的有效期内,CDN 直接给用户返回内容,而无需再次回源获取数据,这样做的好处,一方面可以加快响应时间,根据不同用户的地理位置,就近原则响应数据,可以大大提升用户体验,另一方面,可以减少目标服务器的压力,当请求过多时,只有首次请求时才会与目标服务器交互。

web 缓存中毒漏洞与 CDN 的实现原理息息相关,在 CDN 中为了区分不同请求接口,会提取请求中的多个关键词作为 key,从而区别不同资源,比如下图中橙色部分内容:

img
img

如果两个请求中关键部分一致,而 cookie 中的某个参数不同,但是响应也会是相同的内容,如图中的两个请求:

img
img

明显标识语言的参数不同,但是首次缓存了 pl 类型的语言内容,而第二次请求 en 类型语言时,响应的内容还是 pl 类型的内容,但是这并非目标系统所期望的响应。

这就给了攻击者机会,当某个资源,首次请求是由攻击者构造并缓存时,后续用户访问类似资源时,就会响应已经被恶意篡改的缓存,从而造成危害,比如某个接口存在反射型 XSS 漏洞,通过 web 缓存中毒可以扩大影响范围,从反射型提升为存储型,影响更多的用户。比如,某个接口的 X-Forwarded-Host 标头展示在页面中:

img
img

尝试使用 xss 的 payload,发现存在 xss 漏洞:

img
img

这个时候,该接口被 CDN 缓存,当正常用户访问这个接口时,并没有在请求中增加 xss 的 payload,但是也触发了 XSS 的 payload:

img
img

在利用时,需要让 CDN 缓存存在恶意 payload 的请求,可能不是一次两次就能实现,可能需要长期刷新,直到缓存正好过期,然后恰好缓存到恶意的请求,从而完成利用。

这个漏洞的危害,取决于系统本身的漏洞,可以将自身漏洞的危害扩大,防御上,还是要确保自身系统无可利用漏洞,那么就能大大降低该漏洞的危害。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 信安之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档