Client-Side Path Traversal 漏洞学习笔记
近年来,随着Web前端技术的飞速发展,越来越多的数据请求和处理逻辑被转移到客户端(浏览器)执行。这大大提升了用户体验,但也带来了新的安全威胁。其中,Client-Side Path Traversal(客户端路径穿越,CSPT)作为一种新兴的漏洞类型,逐渐受到安全研究者和攻击者的关注。本文将系统介绍CSPT的原理、检测方法、绕过WAF的技巧,并提出防护建议,帮助读者深入理解该漏洞并提升防御能力。
一、CSPT漏洞原理详解
1.1 什么是Client-Side Path Traversal?
路径穿越(Path Traversal)原本是指攻击者利用Web服务器未正确处理路径参数,从而访问本不应该开放的服务器文件。而Client-Side Path Traversal(CSPT)则是指发生在客户端(通常是浏览器端JS代码)对路径参数未做严格校验时,导致攻击者可以通过构造诸如../
等特殊字符串,影响客户端发起的请求路径,实现跨目录甚至跨站点的数据访问、CSRF或XSS等攻击。
CSPT也常被称为“On-site Request Forgery”(站内请求伪造),本质上是攻击者控制了前端代码执行的请求路径,通过路径穿越让浏览器自动携带认证信息,发起敏感操作。
通俗理解
- 服务器端路径穿越:攻击者通过
../../
访问如/etc/passwd
等本地敏感文件。 - 客户端路径穿越:攻击者通过
../
等方式控制前端JS发起的请求路径,间接访问敏感资源或触发漏洞。
1.2 CSPT的典型利用链
CSPT漏洞的典型流程如下:
- 攻击者向目标页面注入特定参数(如
newsitemid=../pricing/default.js?cb=alert(1)//
)。 - 前端JS代码未对该参数做路径校验,直接拼接到请求路径上。
- 浏览器自动发起请求(如fetch、XMLHttpRequest),并自动携带Cookies、Token等身份凭证。
- 请求被路由到本不应由用户控制的文件或API端点,触发CSRF、XSS、信息泄露等后果。
实例分析
假设有这样一段前端JS代码:
fetch(`/newsitems/