DVWA-5.3 File Upload(文件上傳)-High-繞過文件類型限制


High Level

查看源碼

<?php

if( isset( $_POST[ 'Upload' ] ) ) {
    // Where are we going to be writing to?
    $target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
    $target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );

    // File information
    $uploaded_name = $_FILES[ 'uploaded' ][ 'name' ];
    $uploaded_ext  = substr( $uploaded_name, strrpos( $uploaded_name, '.' ) + 1);
    $uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];
    $uploaded_tmp  = $_FILES[ 'uploaded' ][ 'tmp_name' ];

    // Is it an image?
    if( ( strtolower( $uploaded_ext ) == "jpg" || strtolower( $uploaded_ext ) == "jpeg" || strtolower( $uploaded_ext ) == "png" ) &&
        ( $uploaded_size < 100000 ) &&
        getimagesize( $uploaded_tmp ) ) {

        // Can we move the file to the upload folder?
        if( !move_uploaded_file( $uploaded_tmp, $target_path ) ) {
            // No
            $html .= '<pre>Your image was not uploaded.</pre>';
        }
        else {
            // Yes!
            $html .= "<pre>{$target_path} succesfully uploaded!</pre>";
        }
    }
    else {
        // Invalid file
        $html .= '<pre>Your image was not uploaded. We can only accept JPEG or PNG images.</pre>';
    }
}

?>

相關函數介紹

strrpos(string,find,start)

函數返回字符串find在另一字符串string中最后一次出現的位置,如果沒有找到字符串則返回false,可選參數start規定在何處開始搜索。

getimagesize(string filename)

函數會通過讀取文件頭,返回圖片的長、寬等信息,如果沒有相關的圖片文件頭,函數會報錯。

可以看到,High級別的代碼讀取文件名中最后一個”.”后的字符串,期望通過文件名來限制文件類型,因此要求上傳文件名形式必須是”*.jpg”、”*.jpeg” 、”*.png”之一。同時,getimagesize函數更是限制了上傳文件的文件頭必須為圖像類型。

漏洞利用

采用%00截斷的方法可以輕松繞過文件名的檢查,但是需要將上傳文件的文件頭偽裝成圖片,由於實驗環境的php版本原因,這里只演示如何借助High級別的文件包含漏洞來完成攻擊。

首先利用copy將一句話木馬文件php.php與圖片文件1.jpg合並

copy 1.jpg/b+php.php/a hack.jpg

生成的文件hack.jpg

打開可以看到,一句話木馬藏到了最后

順利通過文件頭檢查,可以成功上傳。

上菜刀,右鍵添加shell,地址欄填入http://192.168.0.101/dvwa/vulnerabilities/fi/?page=file:///D:/software/wamp/www/dvwa/hackable/uploads/hack.jpg

參數名填hello,腳本語言選擇php。

成功拿到webshell

 

參考:https://www.freebuf.com/articles/web/119467.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM