MIME類型是互聯(lián)網(wǎng)媒體類型,用于指示文件的性質(zhì)和格式。本篇文章將詳細介紹如何通過繞過MIME類型過濾來攻克upload-lab的第二關(guān)。
上文《Upload-Lab第一關(guān):輕松繞過前端驗證的技巧!》
在upload-lab的第二關(guān),我們需要應(yīng)對MIME類型過濾。MIME類型是互聯(lián)網(wǎng)媒體類型,用于指示文件的性質(zhì)和格式。在實際的文件上傳場景中,服務(wù)器通常會檢查上傳文件的MIME類型以確保安全。然而,通過某些技巧,我們可以繞過這種檢查并上傳惡意文件。本篇文章將詳細介紹如何通過繞過MIME類型過濾來攻克upload-lab的第二關(guān)。
第二關(guān)簡介
在Pass02關(guān)卡中,服務(wù)器會檢查上傳文件的MIME類型,只有當(dāng)MIME類型為允許的類型(如圖片類型)時,文件才能成功上傳。如果上傳的文件MIME類型不符合要求,則會被拒絕。 源碼如下圖所示:
源碼
繞過MIME類型過濾的方法
-
使用Burp Suite攔截并修改請求:這是最常用的方法,通過Burp Suite等抓包工具攔截上傳請求,然后修改MIME類型。
-
構(gòu)造特殊的文件:通過修改文件頭信息,使文件看起來像是合法的類型。
實踐步驟
(1) 準備工具
-
Burp Suite
-
一個簡單的Web Shell文件,例如:
(2) 啟動BurpSuite并配置瀏覽器代理
啟動Burp Suite并設(shè)置攔截模式,如下圖所示:
啟動BurpSuite并設(shè)置攔截模式
配置瀏覽器使用BurpSuite作為代理,如下圖所示:
配置瀏覽器使用代理
上圖中的HTTProy代理地址和端口要與BurpSuite的設(shè)置一致,如下圖所示:
HTTProy代理地址
(3) 此時上傳webshell,點擊上傳,會自動調(diào)到BurpSuite頁面,通過觀察下圖Content-Type的類型為application/x-php,因此,我們要對該類型進行修改成image/jpeg
Content-Type類型修改之前
Content-Type類型修改之后
修改后,先點擊Action -> Send to Intruder,接著,點擊Forward,點擊后,會輸入如下結(jié)果,如下圖所示:
成功返回請求頭
最后,通過前端頁面中的源碼看到webshell已經(jīng)成功上傳到服務(wù)器上,如下圖所示:
驗證上傳成功
通過訪問類似于http://服務(wù)器地址/upload/shell.php?cmd=whoami的URL來驗證WebShell是否工作。如下圖所示:
總結(jié)
通過這種方法,我們成功繞過了MIME類型過濾,上傳了惡意文件。這展示了在文件上傳功能中僅依賴MIME類型檢查是不夠的,還需要結(jié)合文件內(nèi)容、擴展名等多重檢查手段,才能有效防御此類攻擊。