我試圖瞭解從http://www.acunetix.com/websitesecurity/directory-traversal/目錄遍歷攻擊
目錄遍歷攻擊我明白通過Web應用程序代碼的攻擊: -
例如http://test.webarticles.com/show.asp?view=../../../../../Windows/system.ini
其中../將向上移動一個目錄。
在通過Web服務器的目錄遍歷攻擊中,它表示Web服務器轉義碼用於執行命令。
例如http://server.com/scripts/..%5c../Windows/System32/cmd.exe?/c+dir+c:\
其中%5c是'\'的轉義碼。
該網址如何被網絡服務器解析?更清楚的是,一旦網絡服務器接收到這個URL,它將導航到腳本文件夾,但它會遇到轉義代碼。所以它會將所有以下字符視爲正常。因此../ Windows/System32/cmd.exe?/ c + dir + C:\被視爲正常。那麼,%5c之前有什麼用處?
在windows中,反斜槓用於指定文件路徑。所以要執行cmd.exe,路徑就像C:\ Windows \ cmd.exe一樣。然而,在URL的正斜槓中使用例如http://server.com/scripts.html。 我不明白的是如何在URL映射中反斜槓在Windows中反斜槓。 我得知我們需要反覆試驗才能到達根目錄,但我對轉義代碼和cmd路徑的使用感到困惑。 – Karan 2013-05-01 12:41:36
正斜線在Windows上也是可以容忍和接受的;如果你將'c:/ windows/cmd.exe'傳遞給exec()的本地等價物,那麼它應該是正常工作。百分比轉義是必要的,因爲URL中不允許反斜槓。在百分比解碼之前衛生髮生並不重要,核心漏洞 - 如果存在 - 則是衛生設施無法使用本地目錄分隔符來清理目錄遍歷。 – tripleee 2013-05-01 12:48:07
所以,如果我正確理解你,../Windows/cmd.exe將意味着.. \ Windows \ cmd.exe到CGI?我瞭解清理旁路機制,但我不明白轉義字符的用法。爲了解釋我的想法,我將第二個URL看作http://server.com/scripts/ .. \ ../Windows/System32/cmd.exe?/ c + dir + c:\ (現在忽略清理,假設服務器不檢查../或.. \),那麼「.. \ ../ Windows/System32/cmd.exe?/ c + dir + c:\」是如何有效的?即我們如何使用轉義字符在目錄樹中向上導航? – Karan 2013-05-01 13:32:37