用途:该技能是一份 Web 缓存欺骗与缓存投毒的安全测试手册,用于在 CDN、反向代理或应用层缓存可能把已认证的敏感内容返回给其他用户时进行评估与验证。
主要能力:内容涵盖路径混淆攻击、CDN 缓存行为利用、缓存键操纵,并区分缓存欺骗(窃取数据)与缓存投毒(投递恶意内容)。可加载 CACHE_POISONING_TECHNIQUES.md 获取更多内容,包括未入键头部投毒(X-Forwarded-Host、X-Forwarded-Scheme、X-Original-URL、多 Host 头)、未入键参数投毒(utm_content、fbclid、callback 等被反射但不在缓存键中)、Fat GET 缓存投毒、通过分号与重复参数解析差异实现的参数隐藏、CDN 特定行为(Cloudflare、CloudFront、Akamai、Varnish、Fastly 的缓存键构成、调试头、ESI)、Vary 头操纵、缓存分区攻击与 Vary 缺失漏洞。
使用方式:缓存欺骗流程为先识别可缓存路径模式(常见按扩展名缓存 .css、.js、.jpg、.png 等),再测试路径混淆,如 https://target.com/api/me/info.css、https://target.com/account/profile/x.js,或用 /account/profile/..%2fstatic/app.css。验证时以受害者身份请求并观察 X-Cache: MISS 与 Age: 0,再以未认证身份请求确认 X-Cache: HIT 且返回受害者已认证内容,最后将构造 URL 投递给受害者。缓存投毒则先发现未入键输入,用 curl -H "X-Forwarded-Host: evil.com" https://target.com/page 判断反射是否被缓存,再通过 Host 头注入或 Open Graph、canonical 标签注入影响缓存响应。
适用场景:CDN 或反向代理与应用对路径规范化不一致的环境;已认证端点被按扩展名缓存的情况;反射未入键头部的动态页面。
限制:文档为攻击方法论参考,未提供具体目标、版本或工具要求;实际测试需获得授权,且效果取决于目标缓存配置。
防御要点:只缓存显式静态路径,不按扩展名单独判定缓存,认证端点设置 Cache-Control: no-store, private,使用 Vary: Cookie,将反射头部纳入缓存键,校验 X-Forwarded-* 头,动态内容用 no-cache,在 CDN 边缘剥离未知头。测试清单包括识别缓存层、追加静态扩展名、检查 X-Cache 与 Cache-Control、Vary,及带与不带认证的对比。