文件上傳之服務端繞過(upload-labs第二關)

第一章 服務器端檢測–MIME 類型

MIME (Multipurpose Internet Mail Extensions) 是描述消息內容類型的因特網標準。MIME 消息能包含文本、圖像、音頻、視頻以及其他應用程序專用的數據。
【https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types】
常見的MIME 類型如下

文件擴展名 Mime-Type
.js application/x-javascript
.html text/html
.jpg image/jpeg
.pdf application/pdf
.png image/png

在HTTP 協議中,使用Content-Type 字段表示文件的MIME 類型。當我們上傳文件的時候,抓到HTTP 數據包。

第二章代碼審計-源代碼

在服務器端會檢測Content-Type 類型,upload-labs 第二關,經典的代碼如下

if (isset($_POST['submit'])) {
    if (file_exists($UPLOAD_ADDR)) {
        if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
            if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $UPLOAD_ADDR . '/' . $_FILES['upload_file']['name'])) {
                $img_path = $UPLOAD_ADDR . $_FILES['upload_file']['name'];
                $is_upload = true;
            }
        } else {
            $msg = '文件類型不正確,請重新上傳!';
        }
    } else {
        $msg = $UPLOAD_ADDR.'文件夾不存在,請手工創建!';
    }
}

由於服務器在檢測Content-Type 類型的時候,取得的變量來自於用戶,所以可以用Burp 抓包,修改這個字段,使其合法,即可繞過限制上傳任意文件。
在這裏插入圖片描述

第三章MIME服務器端繞過案例

第一步 上傳.jpg文件 上傳成功 查看圖片

在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

第二步 上傳.php文件 查看提示錯誤信息

在這裏插入圖片描述在這裏插入圖片描述

第三步 使用burp抓包 更改type類型

在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述

第四步 查看上傳的是否成功執行

在這裏插入圖片描述

第五步 上傳一句話木馬 蟻劍進行連接

在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

免責聲明

本文檔供學習,請使用者注意使用環境並遵守國家相關法律法規!
由於使用不當造成的後果上傳者概不負責!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章