客戶端繞過
文件上傳的前端繞過主要驗證手段爲前端的 javascript 代碼執行
js驗證代碼如下:
---------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
直接把前端代碼修改掉就行
--------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------
直接刪除把checkFileExt(this.value) 函數刪除,即可上傳
如果不行就換瀏覽器吧
測試鏈接 http://45.32.81.200:8080/vul/unsafeupload/clientcheck.php
服務器繞過(MIMEtype繞過)
-------------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------測試鏈接 http://45.32.81.200:8080/vul/unsafeupload/servercheck.php
首先上傳一張普通圖片,用burpsuite抓取數據包,發現content-type爲
----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
image/jpeg
繼續上傳一個php文件,用burpsuite抓取數據包,發現content-type爲
--------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
application /octet-stream
將數據包發送到repeat 模塊,將 content-type 修改爲 image/jpeg,
發送數據包,發現文件上傳成功
getimagesize 繞過
測試鏈接:http://45.32.81.200:8080/vul/unsafeupload/getimagesize.php
getimagesize() 函數用於獲取圖像大小及相關信息
根據判斷文件類型和文件大小(構造文件頭)來判斷上傳文類型
在cmd中輸入命令 copy /b test.png +muma.php ccc.png //僞造頭部
其中test.png爲 原始圖片 ,此命令將 test.png 和muma.php 合成,重新生成ccc.png
然後上傳 ccc.png