本文展示了通過 .htaccess 文件繞過文件上傳限制的攻擊方法。這種攻擊利用了服務(wù)器配置的靈活性,通過巧妙地修改文件解析方式,成功實(shí)現(xiàn)了惡意代碼的執(zhí)行。
關(guān)卡簡介
在upload-lab的第四關(guān),挑戰(zhàn)者需要繞過文件上傳的限制,成功上傳一個能在服務(wù)器上執(zhí)行的惡意文件。該關(guān)卡的目標(biāo)是利用 .htaccess 文件進(jìn)行繞過,這是一個常見且強(qiáng)大的文件上傳漏洞利用方法。
什么是 .htaccess 文件?
.htaccess 文件是 Apache HTTP 服務(wù)器上的一個配置文件,它允許管理員在目錄級別進(jìn)行配置。通過 .htaccess 文件,用戶可以實(shí)現(xiàn)URL重寫、目錄訪問控制、MIME 類型設(shè)置等功能。在文件上傳漏洞利用中,.htaccess 文件常用于修改服務(wù)器對文件的處理方式,從而執(zhí)行惡意代碼。
主要功能
-
URL 重定向:將一個 URL 重定向到另一個 URL,常用于網(wǎng)站遷移或頁面重命名后保持鏈接的有效性。
-
URL 重寫:使用 mod_rewrite 模塊將復(fù)雜的URL轉(zhuǎn)換為用戶友好的URL。
-
訪問控制:基于 IP 地址或其他條件限制對某些資源的訪問。
-
密碼保護(hù):為目錄設(shè)置密碼保護(hù),要求用戶輸入用戶名和密碼才能訪問。
-
設(shè)置 MIME 類型:為特定文件類型設(shè)置 MIME 類型,以便瀏覽器正確處理文件。
-
文件訪問控制:禁止訪問特定文件或目錄,比如保護(hù) .htaccess 文件本身不被訪問。
-
壓縮:啟用內(nèi)容壓縮,減少傳輸?shù)臄?shù)據(jù)量,提高網(wǎng)頁加載速度。
-
緩存控制:設(shè)置瀏覽器緩存策略,優(yōu)化網(wǎng)站性能。
解題思路
本題沒有過濾.htaccess文件,可以通過上傳.htaccess文件來為一個webshell文件更改后綴,來幫助webshell進(jìn)行繞過。
解題步驟
(1) 準(zhǔn)備 .htaccess 文件:
由于服務(wù)器可能限制了常用的腳本文件,我們可以通過上傳一個 .htaccess 文件來改變服務(wù)器對文件的處理方式。創(chuàng)建一個名為 .htaccess 的文件,內(nèi)容如下:
這段配置的作用是將 1.png 文件解析為 PHP 代碼。
(2) 上傳.htaccess文件 :
在Pass04關(guān)卡的上傳頁面,我們先上傳 .htaccess 文件 。
成功上傳了.htaccess文件
(3) 準(zhǔn)備惡意文件并上傳
我們需要準(zhǔn)備一個惡意的 PHP 文件。創(chuàng)建一個名為 1.png 的文件,該文件名要與上一步的一一對應(yīng)。內(nèi)容如下:
把1.png文件上傳到服務(wù)器中,如下圖:
成功把webshell上傳了
(4) 訪問并執(zhí)行惡意代碼:
上傳完成后,訪問上傳文件所在的 URL。如果一切順利,你會看到頁面如下圖顯示:
總結(jié)
upload-lab 第四關(guān)展示了通過 .htaccess 文件繞過文件上傳限制的攻擊方法。這種攻擊利用了服務(wù)器配置的靈活性,通過巧妙地修改文件解析方式,成功實(shí)現(xiàn)了惡意代碼的執(zhí)行。通過理解和實(shí)踐這種攻擊方式,安全研究人員和開發(fā)者可以更好地防御類似的文件上傳漏洞,提升系統(tǒng)的安全性。