pikachu靶場 :八、文件上傳漏洞
概述
文件上傳功能在web應用系統很常見,比如很多網站註冊的時候需要上傳頭像、上傳附件等等。
當用戶點擊上傳按鈕後,後臺會對上傳的文件進行判斷 比如是否是指定的類型、後綴名、大小等等,然後將其按照設計的格式進行重命名後存儲在指定的目錄。
如果說後臺對上傳的文件沒有進行任何的安全判斷或者判斷條件不夠嚴謹,則攻擊着可能會上傳一些惡意的文件,比如一句話木馬,從而導致後臺服務器被webshell。
所以,在設計文件上傳功能時,一定要對傳進來的文件進行嚴格的安全考慮。
比如:
--驗證文件類型、後綴名、大小;
--驗證文件的上傳方式;
--對文件進行一定複雜的重命名;
--不要暴露文件上傳後的路徑;
--等等...
客戶端檢查
審查元素,把限制上傳類型的onchange函數去掉,直接上傳shell.php拿shell。
訪問shell文件,是OK的。
/vul/unsafeupload/uploads/2020/02/01/shell.php
服務端檢查
上傳shell文件,抓包。
修改Content-Typeontent-Type爲image/jpg,欺騙服務端,上傳成功。
getimagesize()
準備好木馬文件和圖片文件,兩者進行疊加,生成圖片馬。
查看一下圖片馬,一句話是插了進去的。
上傳圖片馬,成功。
可是圖片馬是png格式,不能以php格式執行。
這就要用到我們之前的文件包含漏洞,那就要讓本地文件包含漏洞找到我們的png圖片,根據生成的路徑訪問我們的圖片馬拿shell。