文件上传绕过各种姿势

漏洞简介

文件上传,顾名思义就是上传文件的功能行为,之所以会被发展为危害严重的漏洞,是程序没有对访客提交的数据进行检验或者过滤不严,可以直接提交修改过的数据绕过扩展名的检验。文件上传漏洞是漏洞中最为简单猖獗的利用形式,一般只要能上传获取地址,可执行文件被解析就可以获取系统WebShell。

漏洞原理

​ 网站WEB应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型时,就可以上传任意文件甚至是可执行文件后门。

漏洞危害

恶意文件传递给解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。根据网站使用及可解析的程序脚本不同,可以上传的恶意脚本可以是PHP、ASP、JSP、ASPX文件。

文件上传的绕过脑图

文件上传绕过各种姿势_第1张图片

如何判断上传漏洞类型?

文件上传绕过各种姿势_第2张图片

文件上传绕过姿势

0x01、本地JS绕过

  • 首先我们将上传文件后缀由php➡jpg
  • 通过Burp抓包将jpg➡php

文件上传绕过各种姿势_第3张图片

0x02、MIME验证绕过(Content-Type)

  • 首先我们上传webshell时提示,文件类型不正确

  • 文件上传绕过各种姿势_第4张图片

  • 将Content-Tepy 由application/octet-stream
    改为 image/png 成功绕过

  • 在这里插入图片描述
    在这里插入图片描述

  • 上传成功

文件上传绕过各种姿势_第5张图片

Content-Tepy类型扩展
文件上传绕过各种姿势_第6张图片

0x03、黑名单绕过

  • 尝试上传webshell
  • 文件上传绕过各种姿势_第7张图片

可以通过提示或源码可以看出,上传点对后缀做了黑名单限制
文件上传绕过各种姿势_第8张图片
因为是php,我们尝试使用php5等绕过黑名单验证
文件上传绕过各种姿势_第9张图片
后缀绕过拓展
文件上传绕过各种姿势_第10张图片

0x04、大小写绕过

大小写过滤原理:windows对大小写不敏感,linux对大小写敏感
将文件后缀名改成大写,成功上传。
文件上传绕过各种姿势_第11张图片

0x05、空格绕过

原理:windows等系统下,文件后缀加空格命名之后是默认自动删除空格。查看网站源代码发现过滤了大小写,没用过滤空格。

在php后缀添加空格 成功绕过
文件上传绕过各种姿势_第12张图片

0x06、点绕过

原理:同空格绕过原理一样,主要原因是windows等系统默认删除文件后缀的.和空格,查看网站源码发现,没有过滤点
在文件后缀添加个”.“成功绕过
文件上传绕过各种姿势_第13张图片

0x07、双写绕过

原理:查看源码发现,没有过滤点,空格,大写等,估计这种不是放在windows下的,这里可以用点大写空格:$DATA等绕过,不过这里的目的不是这个,是让学习双写绕过,看源码发现str_ireplace这个函数将php,php5,php4等后缀变成空格,且只执行了一次,所以可以尝试构造文件后缀为pphphp绕过。
绕过姿势:上传文件后缀为pphphp的文件,发现上传成功,
文件上传绕过各种姿势_第14张图片

0x08、%00截断

原理:查看源码发现使用了白名单,只允许jpg,png,gif文件的上传,所以前面使用的方法都不适用,然后我们发现路径img_path函数是让文件位置(save_path)加时间随机数(rand)的方法生成文件位置和文件名称,所以这里我们可以尝试在save_path的地方使用%00的方法截断后面的语句,burpsuite抓包发现,是可以更改save_path的,不过此方法有使用的限制。

使用限制:
1、php版本小于5.3.4
2、php.ini的magic_quotes_gpc为OFF状态

(magic_quotes_gpc)函数的的底层实现是类似c语言,所以可以%00截断
文件上传绕过各种姿势_第15张图片
move_uploaded_file遇到\x00字符后会截断路径名,在实现上存在安全漏洞
绕过姿势:

(get传输):上传php文件,burpsuite抓包,修改save_path如图所示,发现上传成功
文件上传绕过各种姿势_第16张图片
YJ连接成功
文件上传绕过各种姿势_第17张图片

0x09、图片木马

查看源码:采用白名单限制上传的只能是图片,故考虑图片木马
文件上传绕过各种姿势_第18张图片
那我们要制作张php图片马
copy 1.png/b + 2.php/a 3.jpg 上传
文件上传绕过各种姿势_第19张图片
上传成功,需要配合文件包含利用
文件上传绕过各种姿势_第20张图片

0x10、竞争条件

查看源码:发现上传的文件先被存储在服务器,然后进行判断,如果不是jpg png gif 则unlik()删掉,是的话重命名

文件上传绕过各种姿势_第21张图片
绕过姿势:在判断删除前,进行访问,竞争时间
shell.php 如下,当然也可写其他木马或者生成木马的php文件,上传用burpsuite抓包,当然可以写脚本文件上传绕过各种姿势_第22张图片
文件上传绕过各种姿势_第23张图片
绕后构造访问连接:http://127.0.0.1/upload-labs-master/upload/shell.php 用burpsuite抓包发送和上传一起开始 如何不行可以尝试线程调大点,或者写脚本
文件上传绕过各种姿势_第24张图片

你可能感兴趣的:(Web安全)