一、文件上传简介
1、什么是文件上传漏洞:
大部分站点都具有文件上传供能,例如头像,文章编辑,附件上传等等,文件上传漏洞就是利用文件上传功能前去上传可执行的脚本文件,并通过此脚本文件获得一定的服务器权限
2、什么是webshell
webshell就是一个网页,一般有asp,jsp,php,aspx,jspx等这类web应用程序开发语言,与正常网站不同的是,webshell一般会具有文件管理、端口管理、提权、获取系统信息等供能,具备这一类较完整功能的webshell,一般称为大马,供能建议的webshell称为一句话木马或小马
3、webshell—–一句话木马
@:错误运算符,当@防止在一个php表达式前,该表达式可能产生的任何信息都被忽略
eval()将字符串当作拍黄片代码去执行,例如eval(’phpinfo();’)其中phpinfo();会被当做php代码去执行
ASP
ASP.NET:
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
3、服务器文件内容验证-php标签
网站会对上传的内容及进行验证,一旦含有php的内容,便会判为非法文件,可以通过以下方法绕过
当过滤php时:=phpinfo();?>,等同于
当过滤<?时可以使用 phpinfo(); 限php5
4、服务器文件扩展名验证-黑名单
后缀名大小写—PhP
这些文件同样会被解析 php |php3|php5|php7| phtml| pht
5、服务器文件扩展名验证-双写绕过
网站会针对后缀进行检测,只是将黑名单的内容替换成空字符
例如php中可能使用str_replace()进行字符串替换
6、利用服务器特殊配置
详情看强大的.access
1)、如果在Apache中,htaccess的配置有效。且可被上传。那可以尝试在,htaccess中写入:
SetHandler application/x-httpd-php
效果为文件名中含有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文件,文件内容
靶场看:
7、过滤’]’时可以使用‘{}’代替
= @eval($_POST{x});?>
机房租用,北京机房托管,大带宽租用,IDC机房服务器主机租用托管-价格及服务咨询 www.e1idc.net