關(guān)卡介紹
在Pass03中,我們面臨的挑戰(zhàn)是繞過文件上傳功能的黑名單檢測機制。黑名單檢測是一種常見的安全措施,它通過檢查上傳文件的后綴來阻止特定類型的文件(如 .php, .exe)被上傳。在這一關(guān),我們需要找到一種方法,上傳一個可以執(zhí)行的惡意文件,同時繞過黑名單檢測。
Pass03的源碼
解題思路
為了繞過黑名單檢測,可以嘗試以下幾種方法:
-
雙重后綴名:利用系統(tǒng)只檢測第一個后綴名,而實際執(zhí)行第二個后綴名。
-
大小寫混淆:某些系統(tǒng)對后綴名的檢測是大小寫敏感的。
-
文件名后綴添加特殊字符:在后綴名后添加一些特殊字符,可能會繞過檢測。
-
使用其他可執(zhí)行后綴:如果服務(wù)器支持多種腳本語言,可以嘗試其他語言的可執(zhí)行文件后綴。
題目中提示不允許上傳.asp,.aspx,.php,.jsp后綴文件!就用下面的替代被禁止的那些。
-
ASP: asa/cer/cdx
-
ASPX: ashx/asmx/ascx
-
PHP: php4/php5/phtml
-
JSP: jspx/jspf
實踐步驟
(1) 使用其他可執(zhí)行后綴
創(chuàng)建一個包含簡單PHP代碼的文件,內(nèi)容如下所示,將該文件命名為 shell.php4
文件上傳成功,如下圖,可以查看返回的上傳路徑。
文件上傳成功
通過訪問文件上傳的路徑,看到一句話木馬原樣輸出了,說明 .php4 后綴名的文件它不解析。
這里再回想一下,代碼能否解析取決于配置文件里如何設(shè)置,所以,只能通過經(jīng)驗去判斷。通過查看配置文件發(fā)現(xiàn),智能解析php php3 phtml這三種的后綴。如下圖:
接著,我們嘗試利用下面的一句話webshell,并把后綴修改成.phtml,重新上傳。
成功上傳后,通過訪問該webshell的路徑。如下圖:
網(wǎng)上也有一些解法說可以通過.htaccess文件上傳。關(guān)于.htaccess文件利用第四關(guān)有詳細的講解。
這個文件里面的含義就是將所有文件解析為php。例如上傳個jpg格式的一句話也可以繞過了,再用蟻劍進行連接就可以了。
但是,由于該關(guān)卡中,把上傳的文件重新命名了。關(guān)鍵代碼如下:
上傳的文件都被重新命名了,所以,上傳.htacces這個文件不起作用了。如下圖所示:
防御措施
為了防止類似的攻擊,開發(fā)人員應(yīng)采用白名單檢測機制,僅允許特定類型的文件上傳。此外,還應(yīng)對上傳的文件進行嚴格的內(nèi)容檢查,確保其安全性。
總結(jié)
在第三關(guān)中,通過嘗試多種方法,我們成功繞過了文件上傳的黑名單檢測機制。這一過程不僅加深了我們對文件上傳漏洞的理解,也提高了我們識別和防御此類漏洞的能力。