WEB安全性測試之文件上傳漏洞


1、漏洞描述:
文件上傳漏洞,是指可以利用WEB上傳一些特定的文件包含特定代碼如(<?php phpnfo;?> 可以用於讀取服務器配置信息。上傳成功后可以點擊)

上傳漏洞是指用戶上傳了一個可執行的腳本文件,並通過此腳本文件獲得了執行服務器端命令的能力。文件上傳本身是web中最為常見的一種功能需求,關鍵是文件上傳之后服務器端的處理、解釋文件的過程是否安全。一般的情況有:

1、上傳Web腳本語言,服務器的WEB容器解釋並執行了用戶上傳的腳本,導致代碼執行,篡改主頁

2、上傳Flash策略文件crossdomain.xml,以此來控制Flash在該域下的行為。

3、上傳病毒、木馬文件,攻擊者用以誘騙用戶或管理員下載執行,放置后門<?php system($ ['cmd']);  ?>

4、上傳釣魚圖片或包含了腳本的圖片,某些瀏覽器會作為腳本執行,實施釣魚或欺詐。

5、創建服務器用戶,查看服務器信息 (使用net user 命令)

2、檢測條件

1、已知Web網站在登錄前或者登錄后具有上傳頁面。

2、上傳的文件具備可執行性或能夠影響服務器行為,所以文件所在的目錄必須在WEB容器覆蓋的路徑之內。

3、用戶可以從WEB上訪問這個文件,從而使得WEB容器解釋執行該文件。

4、上傳后的文件必須經過安全檢查,不會被格式化、壓縮

3、檢測方法

上傳方式根據不同的web語言,檢測方法也各式各樣,以下列舉基於JS驗證的上傳的幾種常見的文件上傳繞過方法:

1、我們直接刪除代碼中onsubmit事件中關於文件上傳時驗證上傳文件的相關代碼。F12前端修改即可。

2、直接更改文件上傳JS代碼中允許上傳的文件擴展名你想要上傳的文件擴展名。

3、使用本地提交表單即可,作相應的更改。

4、使用burpsuite或者是fiddle等代理工具提交,本地文件先更改為jpg,上傳時攔截,再把文件擴展名更改為asp即可。

5、當然也有不是基於JS驗證的上傳,例如一些中間件IIS,Nginx,PHP,FCK編輯器等等的解析漏洞,其上傳繞過方式也是多種多樣。通過對上傳頁面進行檢查,常見的文件上傳檢查針對文件類型進行,可以使用手動修改POST包然后添加%00字節用於截斷某些函數對文件名的判斷。除了修改文件名來繞過類型檢查外,還可以修改文件頭來偽造文件頭,欺騙文件上傳檢查。

以上為幾種常見的上傳,更多的還需自行研究,進行上傳繞過。以下為總體的測試流程:

1、登陸網站,並打開文件上傳頁面。

2、點擊“瀏覽”按鈕,並選擇本地的一個JSP文件(比如hacker.jsp),確認上傳。

3、如果客戶端腳本限制了上傳文件的類型(比如允許gif文件),則把hacker.jsp更名為hacker.gif;配置HTTP Proxy(burp)進行http請求攔截;重新點擊“瀏覽”按鈕,並選擇hacker.gift,確認上傳。
4、在WebScarab攔截的HTTP請求數據中,將hacker.gif修改為hacker.jsp,再發送請求數據。

5、登陸后台服務器,用命令find / -name hacker.jsp查看hacker.jsp文件存放的路徑。如果可以直接以Web方式訪問,則構造訪問的URL,並通過瀏覽器訪問hacker.jsp,如果可以正常訪問,則已經取得WebShell,測試結束。如果hacker.jsp無法通過web方式訪問,例如hacker.jsp存放在/home/tmp/目錄下,而/home/tomcat/webapps目錄對應http://www.example.com/,則進行下一步。

6、重復1~3,在burp攔截的HTTP請求數據中,將hacker.gif修改為../tomcat/webapps/hacker.jsp,再發送請求數據。
在瀏覽器地址欄輸入http://www.example.com/hacker.jsp,訪問該后門程序,取得WebShell,結束檢測。

6、通過后綴名過濾

7、通過二進制來判斷文件類型

8、修改服務器核心參數,禁止腳本引擎運行系統命令

4、修復方案
針對文件上傳漏洞的特點和必須具備的三個條件,我們阻斷任何一個條件就可以達到組織文件上傳攻擊的目的:

1、最有效的,將文件上傳目錄直接設置為不可執行,對於Linux而言,撤銷其目錄的’x’權限;實際中很多大型網站的上傳應用都會放置在獨立的存儲上作為靜態文件處理,一是方便使用緩存加速降低能耗,二是杜絕了腳本執行的可能性;

2、文件類型檢查:強烈推薦白名單方式,結合MIME Type、后綴檢查等方式(即只允許允許的文件類型進行上傳);此外對於圖片的處理可以使用壓縮函數或resize函數,處理圖片的同時破壞其包含的HTML代碼;

3、使用隨機數改寫文件名和文件路徑,使得用戶不能輕易訪問自己上傳的文件;

4、單獨設置文件服務器的域名;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM