天天看點

web安全————檔案上傳漏洞

       檔案上傳漏洞

       所謂的檔案上傳漏洞是指使用者上傳了一個可執行腳本,并通過腳本檔案獲得執行伺服器端指令

的能力。檔案上傳本身是沒有問題的,它隻是一種正常的業務需求,問題出在檔案上傳後伺服器怎麼處理、解釋檔案。檔案上傳後導緻常見的安全問題一般包括:

       1,上傳檔案是web腳本語言,伺服器的web容器解釋并執行了使用者上傳的腳本,導緻代碼被執行

       2,上傳檔案是flash的政策檔案crossdo-main.xml,黑客用以控制flash在該域下的行為

       3,上傳檔案是病毒、木馬等檔案,黑客用以誘騙使用者或者管理者下載下傳執行

       4,上傳檔案是釣魚圖檔或包含腳本的圖檔,被用于釣魚和欺詐

除此之外,還有其他利用方法,如将上傳檔案作為一個入口,溢出伺服器的背景處理程式——圖檔解析子產品。當然,要完成一次檔案上傳漏洞攻擊,需要滿足一下幾個條件:

       1,上傳的檔案能夠被web容器解釋執行,即是說檔案上傳後所在的目錄要是web容器所能覆寫到的路徑。

       2,使用者能夠從web上通路這個檔案

       3,上傳的檔案不能被安全檢查、格式化、圖檔壓縮等改變内容。

值得注意的是,限制上傳檔案類型采用白名單比較好,黑名單是一種很不好的思想,後面将到解析漏洞時會提到黑名單為什麼不好。

       繞過檔案上傳檢查功能

       有的站點在允許上傳的同時,對上傳的檔案做了檢查,檢查方式多是判斷檔案名字尾來確定檔案安全性。但是攻擊者還是可以通過其他方式進行繞過,如修改POST包,在檔案名後添加%00位元組(00截斷,在c、php等語言常用字元串處理函數中)。

       利用解析漏洞的上傳技巧

       利用解析漏洞是攻擊者在上傳漏洞時,發現一些wen server本身特性相關的功能,如apache檔案解析、iis檔案解析、php cgi路徑解析等

       apache檔案解析漏洞(在apache1.X  2.X中)

       該版本中apache對于檔案名的解析是從後往前解析,直到遇見一個apache認識的檔案類型為止,那麼攻擊者可以這樣構造:phpshell.php.rar.rar.rar.rar,因為apache不認識rar檔案類型,是以會一直周遊字尾到.php,然後認為這是一個php類型檔案。apache是通過apache的mime.types檔案中定義的檔案類型來判斷檔案類型。

       iis檔案解析漏洞

       iis 6在處理檔案解析時,也出過一些漏洞,與之前提到的00截斷類似,不過截斷字元變為‘;’,例如上傳一個檔案名為abc.asp;xx.jpg,此時iis 6會将此檔案解析為abc.asp,檔案名被截斷導緻腳本被執行。除此之外iis 6 還有過目錄漏洞,這種漏洞是由于處理檔案夾擴充名出錯,導緻該目錄下的所有檔案都會被執行:http://www.test.com/path/abc.asp/bcd.jpg,此時bcd.jpg将會被當做asp檔案執行。*******注意:iis的解析漏洞是要求再伺服器本地硬碟上确實有這樣的檔案或者檔案夾,通過web應用映射出了的url是無法觸發漏洞的。

       關于iis還存在這樣一個漏洞:當站點允許使用者上傳檔案到指定的路徑下時,用put方法再結合move方法即可完成原本隻允許上傳文本檔案改為腳本檔案進而執行webshell。步驟如下:

       1,通過options探測伺服器資訊,伺服器傳回可上傳檔案類型,如txt

       2,上傳文本檔案

       3,通過move改名為可執行擴充名檔案,執行腳本。

       檔案上傳漏洞的防禦

       檔案上傳是沒有問題的,問題在于伺服器如何處理該上傳檔案,通過如下方法可防範檔案上傳漏洞:

       1,檔案上傳的目錄權限設定為不可執行。隻要web容器無法解析該目錄下的檔案,那麼攻擊者上傳的腳本檔案就無法執行。

       2,判斷檔案類型。這種判斷要結合mime type、字尾檢查,強烈推薦白名單方式,對于圖檔可以使用壓縮函數處理圖檔。

       3,使用随機數改寫檔案名和檔案路徑。如果攻擊者上傳了檔案,采用随機數改變了檔案名和檔案路徑,将大大增加了攻擊的成本。

       4,單獨設定檔案伺服器的域名。這和浏覽器的同源政策是想通的。

繼續閱讀