一、概述
二、實戰
LOW等級
首先上傳一張圖片test.jpg,如圖所示成功上傳
】
訪問網址成功看到剛纔上傳的圖片:
正常操作到此結束,接下來嘗試上傳惡意文件:phpinfo.php(該函數顯示PHP的配置相關信息)
如下圖所示,成功上傳:
嘗試訪問,成功執行證明了漏洞的存在:
接下來上傳一句話webshell cmd.php(該webshell可以執行用戶傳入的cmd參數的值),成功上傳,並且嘗試執行,如下圖所示成功執行
接下來用php中的System函數調用cmd中的命令,查看系統命令dir,如下圖所示成功顯示當前目錄的物理路徑
利用前面的得到的物理路徑訪問phpstudy目錄下的php.ini,成功執行
Medium等級
直接上傳寫好的phpinfo.php,提示不允許上傳,只允許上傳JPEG和PNG格式的文件
這裏首先想到抓包研究,將正常上傳的包與上傳失敗的包進行對比,如下圖所示
、
對比以上三處不同,對數據包不斷地進行修改重發,通過不斷地嘗試,發現是文件類型這裏被限制了。上傳php文件,通過抓包修改文件類型爲image/jpeg,便可成功上傳,如下圖所示
High等級:
直接上傳同樣無法上傳,使用Medium等級抓包上傳的方法同樣無法上傳,同樣將成功和失敗的數據包進行對比,通過不斷嘗試確定限制了文件後綴和文件內容:
這裏用圖片馬進行繞過,成功上傳
在這裏文件上傳漏洞需要與文件包含漏洞相結合進行利用,便可成功執行剛剛上傳圖片馬
這裏文件上傳漏洞也可以與解析漏洞相結合,以Nginx爲例:
漏洞修復
1、阻止非法文件上傳:
文件後綴名白名單、文件類型校驗、文件內容頭部判斷
2、阻止非法文件執行:
文件重命名(防止http服務器如IIS進行解析}
文件壓縮重生成(防止了圖片馬的執行)
存儲目錄執行權限限制
存儲目錄與web分離