text: 目錄遍歷是一種利用網站的安全驗證缺陷或使用者請求驗證缺陷來列出伺服器目錄的漏洞利用方式。此攻擊手段的目的是利用存在缺陷的應用程式來獲得目標檔案系統上的非授權訪問許可權。與利用程式漏洞的手段相比，這一手段缺乏安全性。目錄遍歷在英文世界裡又名codice_1 攻擊。示例.下方是一個存在安全隱患的PHP程式示例：$template = 'red.php';if (isset($_COOKIE['TEMPLATE']))$template = $_COOKIE['TEMPLATE'];include ("/home/users/phpguru/templates/" . $template);攻擊者可對此程式傳送下列HTTP請求：GET /vulnerable.php HTTP/1.0Cookie: TEMPLATE=../../../../../../../../../etc/passwd從而使伺服器產生如下的響應：HTTP/1.0 200 OKContent-Type: text/htmlServer: Apacheroot:fi3sED95ibqR6:0:1:System Operator:/:/bin/kshdaemon:*:1:1::/tmp:phpguru:f8fk3j1OIf31.:182:100:Developer:/home/users/phpguru/:/bin/cshcodice_2後重復的codice_1導致codice_4函式遍歷Root目錄，並向攻擊者返回Unix密碼檔案codice_5。Unix中的codice_5常用於展示應用程式存在目錄遍歷問題，駭客及駭客可使用此檔案來。新版Unix作業系統中，原位於passwd檔案中的經雜湊處理後的密碼被移動到了codice_7，其無法被沒有特權的使用者讀取。但攻擊者仍可使用此檔案來列出系統上的使用者賬戶。變體.下方是已知的目錄遍歷攻擊方式變體：Unix上的目錄遍歷.常見的Unix類目錄遍歷攻擊使用codice_1字元。攻擊者可使用萬用字元對Sudo程式進行攻擊。Windows上的目錄遍歷.對微軟Windows及DOS進行目錄遍歷通常使用codice_9或codice_1。在這類系統上，每個分割槽均有不同的根目錄，不同的磁碟機代號之間沒有共同的根目錄。這意味著對於大多數的目錄遍歷缺陷而言，其僅僅對單一的分割槽有效。這種攻擊手段也是此類系統上大多數安全缺陷的異派同源。URI編碼目錄遍歷.此缺陷與問題有關。部分網頁應用程式會檢查查詢字串中的危險字元，如：這種方法能避免部分目錄遍歷問題。但是，查詢字串在使用前通常經過URI解碼。因此，這些應用程式易受到百分號編碼類的目錄遍歷攻擊，如：Unicode / UTF-8編碼目錄遍歷.同樣與問題有關。布魯斯·施奈爾與傑弗裡·斯特里夫林稱UTF-8是安全缺陷與攻擊向量的根源。當微軟為其網頁伺服器新增Unicode支援時，同時添加了一種編碼codice_1的全新方式，卻繞過了防止目錄遍歷的補丁。多個百分號編碼，如：可被解碼為codice_30或codice_31 符。微軟的網頁伺服器將百分號編碼解碼為對應的8位字元。這是Windows和DOS的正確行為，因為兩者都使用基於ASCII的8位字符集的。但是，原版UTF-8並不是規範形式，多個字串經編碼後可被譯為相同的字串。微軟在未經UTF-8時即進行防遍歷檢查，從而導致在字串比較時忽略了 codice_33均為同一字元。攻擊者可使用codice_34字元進行攻擊。Zip/壓縮檔案遍歷攻擊.攻擊者可使用歸檔檔案來進行目錄遍歷攻擊：壓縮檔案中的檔案可為攻擊者精心製造，利用回溯法來覆蓋檔案系統上的檔案。用於解壓縮歸檔檔案的程式碼應對歸檔中的檔案進行檢查，避免目錄遍歷。防止目錄遍歷的方法.下方是防止目錄遍歷的幾種方法：include($_GET['file'] . '.html');使用者可使用空字元。
metadata: erhwenkuo/wikipedia-zhtw
metadata: 目錄遍歷
metadata: https://zh.wikipedia.org/wiki?curid=6651490