2013-05-01 113 views
0

我試圖瞭解從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之前有什麼用處?

回答

0

如果服務器設置爲阻止../,但無法使用..\阻止目錄遍歷,則可以繞過衛生。您可能需要更換更多的斜線或其他組合。我肯定會在..%5C../之前嘗試..%5C..%5C

+0

在windows中,反斜槓用於指定文件路徑。所以要執行cmd.exe,路徑就像C:\ Windows \ cmd.exe一樣。然而,在URL的正斜槓中使用例如http://server.com/scripts.html。 我不明白的是如何在URL映射中反斜槓在Windows中反斜槓。 我得知我們需要反覆試驗才能到達根目錄,但我對轉義代碼和cmd路徑的使用感到困惑。 – Karan 2013-05-01 12:41:36

+0

正斜線在Windows上也是可以容忍和接受的;如果你將'c:/ windows/cmd.exe'傳遞給exec()的本地等價物,那麼它應該是正常工作。百分比轉義是必要的,因爲URL中不允許反斜槓。在百分比解碼之前衛生髮生並不重要,核心漏洞 - 如果存在 - 則是衛生設施無法使用本地目錄分隔符來清理目錄遍歷。 – tripleee 2013-05-01 12:48:07

+1

所以,如果我正確理解你,../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