檔案上傳功能是大部分WEB應用程式的必備功能,網站允許使用者自行上傳頭像、一些社交類別網站允許使用者上傳照片、一些服務類網站需要使用者上傳證明資料的電子檔、電商類網站允許使用者上傳圖片展示商品狀況等。若沒有進行充分的安全措施,那麼即便是看似微不足道的文件上傳功能也會面臨極高的安全風險。
#當使用者在檔案上傳的功能模組處上傳檔案時,如果WEB應用在文件上傳過程中沒有對檔案的安全性進行有效的校驗,攻擊者可以透過上傳WEBshell等惡意檔案對伺服器進行攻擊,這種情況下認為系統存在檔案上傳漏洞。
最常見的文件上傳漏洞的方法是上傳網站木馬(webshell)文件,WEBSHELL又稱網頁木馬文件,根據開發語言的差異又分為ASP木馬、PHP木馬、JSP木馬等,該類木馬利用了腳本語言中的系統命令執行、文件讀寫等函數的功能,一旦上傳到伺服器被腳本引擎解析,攻擊者就可以實現對伺服器的控制。
網站木馬(webshell)檔案又分為大馬和小馬(一句話木馬)、圖片馬等
大馬:功能比較善,配合瀏覽器使用;程式碼量通常較大;隱蔽性相對較弱,代碼量大,通常需要透過加密等方式來隱藏特徵。
小馬:功能簡單,需要配合客戶端使用;代碼量通常較小;隱蔽性相對較強,容易透過變形隱藏特徵,繞過過濾,通常與cknife工具一起使用。
圖片馬:當網站限制只能上傳圖片相關格式的時候,攻擊者無法繞過限制即可嘗試利用圖片馬來實現webshell操作。
一句話木馬類似於,將該木馬檔案透過檔案上傳模組上傳到伺服器。 $_POST['v']裡面的參數v就是我們的可以利用的參數,我們將我們要執行的指令透過參數v傳送到伺服器來執行;或者利用cknife工具來實現操作目標伺服器。
(一)該網頁上傳形式收到限制,需要符合jpg、jpeg、JPG、JPEG這幾個類型格式,所以將原來的格式改為1.jpg格式(服務端校驗)
打開burp suite軟體攔截封包,將檔案名稱改為1.php,這樣才能運行php腳本,不然jpg後綴的檔案雖然能夠上傳,但是沒用運作的功能。
在hackbar外掛程式中定義v=phpinfo();可以查看php目前狀態的大量資訊
(二)這個頁面限制了上傳的格式(MIME),需要將檔案格式改為JPEG或PNG(服務端校驗)
用burp suite攔截訊息,將content-Type改為image/png
#用hackbar工具定義參數v=phoinfo();查看php狀態資訊
(三)此頁面對檔案後綴進行了篩選,對php類型的檔案不進行接受(服務端校驗)
開啟burp suite軟體攔截訊息,將檔案名稱改為1.PHp,繞過web伺服器的識別
用hackbar定義v=system(ipconfig);
(四)用截斷的方式將jpg截斷。這句話有些混淆了。正確的寫法應該是:
1. 使用“
2. 在使用“ 1.php
以上是web文件上傳漏洞的範例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!