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