目錄遍歷攻擊詳解

2021-07-25 21:43:49 字數 2015 閱讀 4135

對於乙個安全的web

伺服器來說,對web內容進行恰當的訪問控制是極為關鍵的。目錄遍歷是http所存在的乙個安全漏洞,它使得攻擊者能夠訪問受限制的目錄,並在web伺服器的根目錄以外執行命令。

web伺服器主要提供兩個級別的安全機制:

訪問控制列表是用於授權過程的,它是乙個web伺服器的管理員用來說明什麼使用者或使用者組能夠在伺服器上訪問、修改和執行某些檔案的列表,同時也包含了其他的一些訪問許可權內容。

根目錄是伺服器檔案系統中乙個特定目錄,它往往是乙個限制,使用者無法訪問位於這個目錄之上的任何內容。

例如:在windows的iis其預設的根目錄是c:\inetpub\wwwroot,那麼使用者一旦通過了acl的檢查,就可以訪問c:\inetpub\wwwroot\news目錄以及其他位於這個根目錄以下的所有目錄和檔案,但無法訪問c:\windows目錄。

根目錄的存在能夠防止使用者訪問伺服器上的一些關鍵性檔案,譬如在windows平台上的cmd.exe或是linux/unix平台上的口令檔案。

這個漏洞可能存在於web伺服器軟體本身,也可能存在於web應用程式的**之中。

要執行乙個目錄遍歷攻擊,攻擊者所需要的只是乙個web瀏覽器,並且有一些關於系統的一些預設檔案和目錄所存在的位置的知識即可。

如果你的站點存在這個漏洞,攻擊者可以用它來做些什麼?

利用這個漏洞,攻擊者能夠走出伺服器的根目錄,從而訪問到檔案系統的其他部分,譬如攻擊者就能夠看到一些受限制的檔案,或者更危險的,攻擊者能夠執行一些造成整個系統崩潰的指令。

依賴於web站點的訪問是如何設定的,攻擊者能夠仿冒成站點的其他使用者來執行操作,而這就依賴系統對web站點的使用者是如何授權的。

(1)

利用web應用**進行目錄遍歷攻擊的例項

在包含動態頁面的web應用中,輸入往往是通過get或是post的請求方法從瀏覽器獲得,以下是乙個get的http url請求示例:

利用這個url,瀏覽器向伺服器傳送了對動態頁面show.asp的請求,並且伴有值為oldarchive.html的view引數,當請求 在web伺服器端執行時,show.asp會從伺服器的檔案系統中取得oldarchive.html檔案,並將其返回給客戶端的瀏覽器,那麼攻擊者就可 以假定show.asp能夠從檔案系統中獲取檔案並編制如下的url:

那麼,這就能夠從檔案系統中獲取system.ini檔案並返回給使用者,../的含義這裡就不用多說了,相信大家都會明白。攻擊者不得不去猜測需要往上多少層才能找到windows目錄,但可想而知,這其實並不困難,經過若干次的嘗試後總會找到的。

(2)利用web

伺服器進行目錄遍歷攻擊的例項:

除了web應用的**以外,web伺服器本身也有可能無法抵禦目錄遍歷攻擊。這有可能存在於web伺服器軟體或是一些存放在伺服器上的示例指令碼中。

在最近的web伺服器軟體中,這個問題已經得到了解決,但是在網上的很多web伺服器仍然使用著老版本的iis和apache,而它們則可能仍然無法抵禦這類攻擊。即使你使用了已經解決了這個漏洞的版本的web伺服器軟體,你仍然可能會有一些對黑客來說是很明顯的存有敏感預設指令碼的目錄。

例如,如下的乙個url請求,它使用了iis的指令碼目錄來移動目錄並執行指令:

這個請求會返回c:\目錄下所有檔案的列表,它使通過呼叫cmd.exe然後再用dir c:\來實現的,%5c是web伺服器的轉換符,用來代表一些常見字元,這裡表示的是「\」

新版本的web伺服器軟體會檢查這些轉換符並限制它們通過,但對於一些老版本的伺服器軟體仍然存在這個問題。

如何判斷是否存在目錄遍歷漏洞?

最好的方式就是使用web漏洞掃瞄器,web漏洞掃瞄器能夠遍歷你web站點的所有目錄以判斷是否存在目錄遍歷漏洞,如果有它會報告該漏洞並給出解決的方法,除了目錄遍歷漏洞以外,web應用掃瞄還能檢查sql注入、跨站點指令碼攻擊以及其他的漏洞。

「遍歷目錄」其實並不能算是漏洞,因為它是iis的乙個功能項。在iis中將該選項勾上後,使用者就可以通過目錄的形式訪問**中的檔案,通常這項功能被用於共享檔案。但由於管理員的疏忽或經驗不足,在**中開啟了這項功能,這就是乙個不折不扣的大漏洞了。

目錄遍歷攻擊

許多的web應用程式一般會有對伺服器的檔案讀取檢視的功能,大多會用到提交的引數來指明檔名,如 當伺服器處理傳送過來的image.jpg檔名後,web應用程式即會自動新增完整路徑,如 d site images image.jpg 將讀取的內容返回給訪問者。初看,在只是檔案互動的一種簡單的過程,但是由...

什麼是目錄遍歷攻擊及如何防護

前幾日研究某web專案源 使用的是thinkphp框架,根目錄下有個www目錄,存放專案模組的入口檔案。頓時茫然,本人一般直接把入口檔案放在web根目錄,而這裡卻是www目錄,不知www目錄是何作用,遂問老大,老大回 你查查什麼是目錄遍歷攻擊。所以才懂得www目錄之所以存在的目的。攻擊人員通過目錄便...

cmd for 遍歷目錄 python 遍歷目錄樹

假定你希望對某個資料夾中的所有檔案改名,包括該資料夾中所有子資料夾中 的所有檔案。也就是說,你希望遍歷目錄樹,處理遇到的每個檔案。寫程式完成這 件事,可能需要一些技巧。好在,python 提供了乙個函式,替你處理這個過程。請看 c delicious 資料夾及其內容,如圖所示。這裡有乙個例子程式,針...