什麼是目錄遍歷?
目錄遍歷是一種HTTP漏洞,駭客利用Web伺服器上的軟體訪問伺服器根目錄以外的目錄中的資料。如果嘗試成功,威脅參與者可以檢視受限制的檔案或在伺服器上執行命令。
這種型別的攻擊通常使用web瀏覽器進行。任何無法驗證web瀏覽器輸入資料的伺服器都容易受到目錄遍歷攻擊。
目錄遍歷也被稱為目錄爬升、回溯和檔案路徑遍歷漏洞。目錄遍歷類似於結構化查詢語言注入和跨站點指令碼,因為都涉及程式碼注入。
以下技術有助於降低目錄遍歷風險:
Web 伺服器程式設計仔細;
安裝軟體更新和補丁;
過濾來自瀏覽器的輸入;
使用漏洞掃描程式。
目錄遍歷是如何工作的?
網路攻擊者透過猜測來找到Web伺服器上受限制檔案的路徑。但是,熟練的攻擊者可以搜尋目錄樹,並在保護不充分的伺服器上輕鬆執行這種攻擊。
執行目錄遍歷攻擊只需要少量資源,包括:
訪問網頁瀏覽器;
對在哪裡查詢目錄有一定的瞭解;
HTTP (Hypertext Transfer Protocol)請求的基本知識。
攻擊者可以使用目錄遍歷執行什麼操作?
一旦攻擊者訪問了根目錄,他們就可以進入計算機系統的其他部分。他們還可以讀寫伺服器上的任意檔案,使他們能夠操縱應用程式和相關資料,讀取密碼檔案等敏感資訊或控制伺服器。正常情況下,使用者無法訪問Web根資料夾以外的任何檔案。
攻擊者還可以獲得對訪問控制列表 (ACL) 的控制權,管理員使用這些列表向使用者授予各種級別的檔案訪問許可權。透過訪問 ACL,攻擊者可以冒充系統中的特權使用者來造成損害。
如何檢查目錄遍歷漏洞
以下是手動檢查目錄遍歷漏洞的兩種方法:
輸入向量列舉。列舉告訴測試人員Web應用程式的哪些部分可能容易受到繞過輸入驗證的嘗試攻擊。測試人員識別應用程式中接受使用者輸入的部分,包括POST和GET呼叫、檔案上傳和超文字標記語言表單。
常見模式。安全專業人員可以在應用程式的 URL 結構中查詢常見模式,以識別目錄遍歷漏洞。如果應用程式使用查詢字串引數指定檔案路徑,則攻擊者可能能夠操縱此引數來訪問預期路徑之外的檔案。搜尋引擎還可用於查詢可能包含檔名的 URL。
自動化工具還用於檢查遍歷漏洞。這些工具執行以下測試:
靜態應用程式安全測試。靜態測試是白盒測試,在應用程式未執行時檢查原始碼中的漏洞。
動態應用程式安全測試。動態測試工具在應用程式執行時檢查程式碼中的漏洞。透過使用黑盒測試的應用程式前端完成,無需訪問原始碼。在應用程式程式碼執行時執行安全檢查,就像正在使用程式一樣。另外模糊測試透過提交格式錯誤的資料來發現目錄遍歷漏洞。
如何防止目錄遍歷攻擊
防止這類路徑遍歷攻擊的有效方法是避免將使用者輸入傳遞到檔案系統應用程式程式設計介面(API)。瀏覽器過濾和使用者輸入不足會使web應用程式和web伺服器檔案容易受到遍歷攻擊。
如果無法避免將使用者輸入傳遞到檔案系統 API,則以下為有助於防止目錄遍歷的其他措施:
清理使用者輸入。清理使用者輸入確保只有應該提交的內容才會被髮送到伺服器。理想情況下,應該將經過驗證的輸入與允許輸入值的允許列表進行比較,例如允許的字串列表。
更新 Web 伺服器軟體。安裝所有更新和補丁,這樣攻擊者就無法利用已知的漏洞。
隔離文件。使用雲端儲存或將文件託管在單獨的檔案伺服器上,以便將包含敏感材料的目錄與公共資訊目錄分開。
使用索引。在url中使用索引比使用原始檔名更安全。索引在攻擊者和檔案之間增加了一層抽象,因為索引不能像原始檔名那樣讓攻擊者直接訪問檔案。
參讀連結:https://www.techtarget.com/searchsecurity/definition/directory-traversal
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70000012/viewspace-3001200/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 網路安全中的目錄遍歷指什麼?
- 遍歷目錄下的所有檔案
- 目錄遍歷-基於Pikachu的學習
- golang對遍歷目錄操作的最佳化Golang
- Godot遍歷目錄下檔案,並建立按鈕Go
- 記錄遍歷方法
- Linux系統中什麼是父目錄?如何檢視父目錄?Linux
- K8s kubectl 複製命令曝目錄遍歷漏洞K8S
- Python自學之路:遞迴、棧和佇列遍歷目錄Python遞迴佇列
- 什麼是遍歷二叉樹,JavaScript實現二叉樹的遍歷(遞迴,非遞迴)二叉樹JavaScript遞迴
- 面試題目-遍歷,點選面試題
- Linux常見目錄都有哪些?其用途是什麼?Linux
- Linux系統中切換目錄的命令是什麼?Linux
- 文件模型中的段落,目錄,文件,是什麼意思?模型
- 在Linux中,什麼是家目錄?如何更改使用者的家目錄?Linux
- 「一個wfuzz應用案例」拿到目錄遍歷漏洞後用wfuzz爆破
- Linux中什麼是工作目錄?linux cd命令如何使用?Linux
- Python字典的遍歷,包括key遍歷/value遍歷/item遍歷/Python
- PHP超低記憶體遍歷目錄檔案和讀取超大檔案PHP記憶體
- php遍歷資料夾以及子目錄;PHP
- 什麼是亞歷山大形式?
- Linux系統中進入目錄的命令是什麼?如何使用?Linux
- 遞迴遍歷當前目錄下所有的git倉庫,執行git pull操作遞迴Git
- DevOps的目標是什麼?有什麼好處?dev
- Linux 主目錄中的隱藏檔案是幹什麼用的?Linux
- Oracle遊標遍歷%rowtype中的記錄Oracle
- js的map遍歷和array遍歷JS
- Linux宿主目錄指什麼?如何進入?Linux
- Windows 上的目錄遍歷攻擊原理與其他作業系統類似,攻擊者試圖透過輸入特定的檔案路徑來訪問系統中未授權的檔案或目錄。以下是目錄遍歷攻擊在 Windows 系統中的一般原理:Windows作業系統
- 程式碼隨想錄演算法訓練營,9月9日 | 二叉樹遞迴遍歷,迭代遍歷,層序遍歷演算法二叉樹遞迴
- 談談術語表、資料字典、資料目錄分別是什麼
- python移除/刪除非空資料夾/目錄的最有效方法是什麼?Python
- Linux下如何查詢檔案或目錄?常用命令是什麼?Linux
- Linux中如何複製檔案或目錄?常用命令是什麼?Linux
- hashmap遍歷時用map.remove方法為什麼會報錯?HashMapREM
- 遍歷 FlowDocument
- jQuery 遍歷jQuery
- Linuxshell遍歷Linux