文章目录
⚠️本博文所涉安全渗透测试技术、方法及案例,仅用于网络安全技术研究与合规性交流,旨在提升读者的安全防护意识与技术能力。任何个人或组织在使用相关内容前,必须获得目标网络 / 系统所有者的明确且书面授权,严禁用于未经授权的网络探测、漏洞利用、数据获取等非法行为。
简介
今天给大家介绍一款针对Web缓存漏洞的强大工具------Web Cache Vulnerability Scanner(WCVS),它专门用于自动化检测Web缓存欺骗、缓存投毒等缓存相关漏洞。
可以先浏览之前的文章了解基础:
【Web安全】一文读懂Web缓存欺骗漏洞:原理、危害与防御
WCVS工具简介与安装
WCVS能够高效地扫描Web应用,揪出可能存在的缓存漏洞。其官方地址为:https://github.com/Hackmanit/Web-Cache-Vulnerability-Scanner 。在Kali环境下,安装步骤如下:
shell
# 更新软件源
sudo apt update
# 安装工具
sudo apt install web-cache-vulnerability-scanner -y
# 验证安装并查看帮助
wcvs -h

缓存漏洞原理
Web缓存机制本是为了提升网站性能,它会存储经常访问的数据,下次请求相同内容时可直接从缓存读取。但如果配置不当,就可能被攻击者利用。比如Web缓存欺骗,攻击者通过构造特殊URL,让服务器把敏感数据缓存下来,其他用户访问该URL就能获取这些敏感信息,造成数据泄露。核心要点就是利用缓存规则的不严谨,诱导服务器缓存不该缓存的内容。
实战1:利用路径映射实现缓存欺骗
本次实验地址为:https://portswigger.net/web-security/web-cache-deception/lab-wcd-exploiting-path-mapping 。登录 My Account 后,页面地址为 https://xxx.net/my-account ,此页面会显示当前账户的 key,这是敏感信息。

抓包查看请求与响应,响应里有敏感信息 key,而且响应头没明显的缓存相关头信息。

使用wcvs工具只针对缓存欺骗测试,命令如下:
shell
wcvs -u 0ad9005a0386a2db8023084d004f004e.web-security-academy.net/my-account -sc "session=KqIxR989apdR3EeWASHim6QfryLGYT9x" -ot deception -v 2
运行后,工具提示 No x-cache (or other cache hit/miss header) header was found,不过还是成功探测出隐藏的缓存行为。第一个有效 payload 是:https://0ad9005a0386a2db8023084d004f004e.web-security-academy.net/my-account/.css ,标 [+] 的都是成功利用的 payload。

在 BurpSuite 用这个 payload 发起请求:
-
第一次请求,响应头显示
X-Cache: miss,这是缓存注入过程。

-
再请求,响应头显示
X-Cache: hit,缓存命中,响应体还有敏感信息 key,说明缓存欺骗成功。


用浏览器无痕模式访问该地址,能直接拿到被缓存的敏感页面内容。

也能按官方实验提示:https://portswigger.net/web-security/web-cache-deception/lab-wcd-exploiting-path-mapping 做手工练习。
实战2:利用路径分隔符实现缓存欺骗
实验地址:https://portswigger.net/web-security/web-cache-deception/lab-wcd-exploiting-path-delimiters 。注意,检测命令里URL末尾别带斜杠 /。
shell
wcvs -u https://0aca00c20340f4c080fb21b800f1002c.web-security-academy.net/my-account -sc "session=tqoTJ6SqQLACSvwR9aA2TOEjq5a0xDov" -ot deception -v 2
运行结果显示,实战1里直接追加 .css 的方法不行了。工具自动试了路径分隔符类型 payload,像 /my-account;nonexistent11.css ,后缀名能随便构造,关键是用分号 ; 当路径分隔符触发缓存机制。人工测分隔符效率低,工具能大大提高检测速度。

在 BurpSuite 用这个 payload 发起请求,两次请求后就能成功命中缓存,实现缓存欺骗。

实战3:绕过精确匹配缓存规则
实验地址:https://portswigger.net/web-security/web-cache-deception/lab-wcd-exploiting-exact-match-cache-rules 。这次是缓存欺骗结合CSRF的场景,这里只演示对CSRF令牌的缓存利用。登录后页面如下:

抓包看响应内容,页面里有用户相关的CSRF token。

用同样命令扫描:
shell
wcvs -u https://0a3e0059049731f280bf0355005a00f1.web-security-academy.net/my-account -sc "session=JzVNkdyVwLr0C6mvAXAn9TDzCRSI0qev" -ot deception -v 2
扫描结果提示 [!] No x-cache (or other cache hit/miss header) header was found,没直接找到可利用点。这说明自动化工具不是万能的,复杂场景还得结合手工分析。
官方给的利用 payload 示例:/my-account;%2f%2e%2e%2frobots.txt?wcd 。结构解释:
;是路径分隔符;%2f%2e%2e%2f是/../的URL编码;- 拼接站点真实存在文件
robots.txt; - 末尾加随机字符串绕过缓存。
