近年來,隨著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/