天天看點

WEB漏洞攻防 - 檔案上傳漏洞 - 白名單的繞過處理方法

文章目錄

    • 白名單的繞過處理方法
      • 白名單繞過 upload-labs-Pass-02 [修改MIME檔案類型]
      • 白名單繞過 upload-labs-Pass-12 [%00截斷]

白名單的繞過處理方法

采用字尾名的繞過方法 如

MIME修改、%00截斷、0x00截斷

白名單繞過 upload-labs-Pass-02 [修改MIME檔案類型]

MIME檢測并不是檢測字尾名,是檢測檔案類型,雖然不檢測字尾名,但是屬于白名單機制。

先分析一下 upload-labs-Pass-02 的源碼

WEB漏洞攻防 - 檔案上傳漏洞 - 白名單的繞過處理方法
WEB漏洞攻防 - 檔案上傳漏洞 - 白名單的繞過處理方法
WEB漏洞攻防 - 檔案上傳漏洞 - 白名單的繞過處理方法

白名單繞過 upload-labs-Pass-12 [%00截斷]

這裡有個點要說一下, upload-labs-Pass-12 與 upload-labs-Pass-11 同樣都可以使用 %00 截斷的方式繞過,差別在于 upload-labs-Pass-11 是通過 $_GET 擷取圖檔存儲路徑,而 upload-labs-Pass-12 是通過 $_POST 方式擷取圖檔存儲路徑的。

利用 $_POST 擷取圖檔存儲路徑時使用的 %00 截斷是無法正常解析的需要重新進行URL編碼。

[這裡有個大坑]

在upload後面加上12.php+(添加+是為了友善改hex值)

WEB漏洞攻防 - 檔案上傳漏洞 - 白名單的繞過處理方法

通過 burpsuite 修改 hex 值為 00 進行截斷。

把 2b(’+'的 hex) 修改成 00

WEB漏洞攻防 - 檔案上傳漏洞 - 白名單的繞過處理方法

或者直接在upload後面加上12.php%00,然後選中%00實施URL-decode

WEB漏洞攻防 - 檔案上傳漏洞 - 白名單的繞過處理方法
WEB漏洞攻防 - 檔案上傳漏洞 - 白名單的繞過處理方法

關于這裡的坑需要說一下, %00 截斷這個方法僅适用于小于 PHP 5.2.4 的版本,且 php.ini 中 magic_quotes_gpc=off 的狀态下才适用。而我從docker上下載下傳的鏡像檔案的版本是 5.2.17 版本的還是安裝在Ubantu系統下,是以11關與12關無法利用 %00 突破。如果是WIN系統環境利用PHP study 安裝的綠色版的 upload-labs ,通過降低 PHP版本就可以使用 %00、 0x00 截斷的方式突破上傳。

upload-labs 官方Git位址 https://github.com/c0ny1/upload-labs

[真尼瑪坑]

繼續閱讀