DVWA-5.2 File Upload(文件上传)-Medium-绕过文件类型限制

Medium 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_type = $_FILES[ 'uploaded' ][ 'type' ];
    $uploaded_size = $_FILES[ 'uploaded' ][ 'size' ];

    // Is it an image?
    if( ( $uploaded_type == "image/jpeg" || $uploaded_type == "image/png" ) &&
        ( $uploaded_size < 100000 ) ) {

        // Can we move the file to the upload folder?
        if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $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>';
    }
}

?>

可以看到,Medium级别的代码对上传文件的类型、大小做了限制,要求文件类型必须是jpeg或者png,大小不能超过100000B(约为97.6KB)。

漏洞利用

方法1 组合拳(文件包含+文件上传)

因为采用的是一句话木马,所以文件大小不会有问题,至于文件类型的检查,尝试修改文件名为hack.png。

上传成功

 启用中国菜刀,右键添加

不幸的是,虽然成功上传了文件,但是并不能成功获取webshell权限,在菜刀上无论进行什么操作都会返回如下信息

中国菜刀的原理是向上传文件发送包含hello参数的post请求,通过控制hello参数来执行不同的命令,而这里服务器将木马文件解析成了图片文件,因此向其发送post请求时,服务器只会返回这个“图片”文件,并不会执行相应命令。

那么如何让服务器将其解析为php文件呢?我们想到文件包含漏洞。这里可以借助Medium级别的文件包含漏洞来获取webshell权限,打开中国菜刀,右键添加,在地址栏中输入

http://127.0.0.1/dvwa/vulnerabilities/fi/?page=hthttp://tp://127.0.0.1/dvwa/hackable/uploads/hack.png

参数名为hello,脚本语言选择php。

按照原作者的文章,这里应该是点击添加,成功获取webshell权限。但是不知道为什么我这里并不能,会报如下问题

方法2 抓包修改文件类型

上传hack.png文件,抓包

可以看到文件类型为image/png,尝试修改filename为hack.php

上传成功

上菜刀,获取webshell权限

方法3 截断绕过规则

在php版本小于5.3.4的服务器中,当Magic_quote_gpc选项为off时,可以在文件名中使用%00截断,所以可以把上传文件命名为hack.php%00.png。

可以看到,包中的文件类型为image/png,可以通过文件类型检查。

上传成功

而服务器会认为其文件名为hack.php,顺势解析为php文件。遗憾的是,由于本次实验环境的php版本为5.5.12,所以无法进行验证。

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

原文地址:https://www.cnblogs.com/zhengna/p/12760282.html