Web-文件上传漏洞总结

目录

1、常规前端绕过

2、修改文件类型

3、使用 .user.ini 或 .htaccess(可能还存在大小写绕过

4、使用字典爆破可行后缀

5、结合文件包含漏洞使用图片马

6、条件竞争


1、常规前端绕过

如下图,在前端存在限制,只能上传图片类型的文件(非图片类型甚至无法进行抓包)

如果考察的只是一个前端绕过,比如这道题,那么这种很简单

我们只需要使用BurpSuite抓包然后改后缀即可

首先将一句话木马的.php后缀改为符合要求的后缀,比如这里的.jpg

一句话木马内容如下:

顺便说一下,一句话木马的写法有很多种,上面这个是比较简单和常见的写法

文件头的 GIF89a 可以理解为一个绕过作用,不一定需要但是加了更好,懂我意思吧

OK,我们开始传

由于是.jpg的后缀,符合前端要求,所以我们可以使用BurpSuite进行抓包,如下图:

 我们需要将后缀改回.php

 然后直接放包即可

可以看到文件上传成功,为什么图片没有正常显示出来,因为传的这个东西本质还是一句话木马,我们只是改了它的后缀,它的实质并不是图片。

复制图像链接,使用蚁剑或者菜刀进行连接

如果上传成功后并不能复制图像链接,也没有给你路径,我们也可以自己找

我们将包发到repeater

 同样修改后缀后发送,我们同样可以找到文件被传到了哪里

 下面就是使用蚁剑连接

 拿下,添加数据,进去找flag就行,一般是在根目录下面

2、修改文件类型

我们直接传.php文件,前端没有出现限制提示

 抓包后如下图:

如果我们直接放包,发现前端报错

 这里需要修改文件类型,即Content-Type

修改为image/jpeg,如下图:

放包之后我们发现上传成功

同理我们找到文件位置,直接上蚁剑即可

3、使用 .user.ini 或 .htaccess(可能还存在大小写绕过

这两个东西都可以使我们上传的图像类文件被当作php文件解析

具体该用哪个,什么情况下用,这个是说不清楚的,我只能说这是我们做文件上传的一个绕过方向

首先尝试前面讲过的两种思路,发现直接传php的不行,传jpg抓包后修改后缀为php也不行

jpg虽然可以直接上传,但是并没有用

我们需要它被当作php文件解析,那么就需要用到前面说的两个配置文件之一

 首先来看一下这两个文件的内容(特意加了块引用,方便大家复制)

.htaccess

<FilesMatch ".jpg">
  SetHandler application/x-httpd-php
</FilesMatch>

 .user.ini

GIF89a
auto_prepend_file=6.jpg 

这里说一下,等号后面的6.jpg就是你要上传的jpg类型的一句话木马文件名 

再来说用法:

先上传一个配置文件 .user.ini 或 .htaccess 

再上传jpg后缀的一句话木马,注意:直接上传,不用改后缀

下面我以.htaccess 为例

我们依旧需要改文件类型(一般都是改为 image/jpeg)

 

接着我们上传jpg的一句话木马

这里不用改后缀也不用改类型,直接放包

后续操作大家就很熟悉了

 发现不行,这道题要用 .user.ini (注意.user.ini里的内容与上传的木马文件名一致)

当然实际情况下我们肯定不知道哪些后缀被过滤了,所以只能慢慢尝试

再来说一下大小写的绕过,虽然.htaccess被禁止了,但是我们可行修改大小写来实现绕过,比如将文件名改为.Htaccess,内容不变,大小写绕过不只是在配置文件,也可用在php后缀上

4、使用字典爆破可行后缀

这个就是在bp中使用字典去爆破能上传成功的后缀,然后再使用shell连接工具去逐个尝试连接

以buuctf中的 [ACTF2020 新生赛]Upload1 为例:

就是一个文件上传

初步尝试发现php不行,那么我们就传jpg

 抓包后发到攻击模块

 可以使用字典也可以自己添加一些常用的

 最终这道题能连接成功的是phtml

 当然其实能上传成功的有很多,有些也不能上传成功

我们要做的就是在上传成功的路径里面去尝试连接

5、结合文件包含漏洞使用图片马

实际情况并没有这种提示,我们做这类题就是不断尝试各种类型

这种类型的话我们就需要使用图片马

用copy命令来制作:copy 1.jpg/b + shell.php 2.jpg

生成的2.jpg就是一个图片马,我们直接传2.jpg即可

6、条件竞争

这个需要写脚本,大概原理就是利用服务器端处理存在的一个时间间隙来产生“碰撞”

我们不断地上传文件和不断地访问自己上传的文件,就有可能在文件进行判断删除之前,成功访问文件,并执行里面的代码。

下面是关于绕过的总结:


http://www.niftyadmin.cn/n/1008596.html

相关文章

质量小议26 -- 信度 和 效度

软件可信吗&#xff1f;测试可信吗&#xff1f;验证方法可信吗&#xff1f; 验证方法有效吗&#xff1f;验证点有效吗&#xff1f;验证覆盖全面吗&#xff1f; 数据分析中的信度&#xff08;可靠性&#xff09; 和 效度&#xff08;有效性&#xff09;可以帮助解释…

3.原理图设计的快捷键和方法

3.原理图设计的快捷键和方法 一、使用建议 1.1 Altium designer使用建议 善用help&#xff0c;窗口右上角❓可用于显示提示&#xff1b;多看Knowledge Centor 添加元件、布局布线的注意要点 布局时&#xff1a;1、优先考虑重要接口、传感器的布局&#xff1b;2、电阻电容的…

VS工程加载失败 | 找不到导入的项目CUDA xx.props解决方案

问题背景&#xff1a; 如果遇到VS项目某些工程无法加载&#xff0c;有一个可能的原因是属性表没有找到。即props文件无法加载&#xff0c;导致项目加载失败。 解决方案&#xff1a; 找到工程配置 .vcxproj 文件&#xff0c;编辑打开&#xff0c;查找props&#xff0c;发现电脑…

网络流算法

网络流 最大流的求法 我们对原图的每一条边再存储一条反向边&#xff0c;形成一个含有反向边的新图B。 起初反向边的容量为0&#xff0c;正向边的容量为原图中的容量。 每一次在图B上寻找一条从S->T的路径&#xff08;注&#xff1a;该路径也就是增广路径&#xff09;&a…

Linux--删除目录:

一、删除空目录&#xff1a;rmdir rmdir是remove director的简写 语法&#xff1a; rmdir 目录名 功能&#xff1a; 删除空目录 示例&#xff1a; 删除空目录&#xff1a;成功 删除非空目录&#xff1a;失败 删除一切&#xff1a;rm 语法&#xff1a; 1.rm 文件名2.rm -r…

C - Canyon Crossing(对队列bfs+二分)

题目链接 题意&#xff1a;n*m的池塘&#xff0c;k个桥&#xff0c;桥的作用是跳过路径上的一个格子&#xff0c;一个人在第n层&#xff08;最底层&#xff09;&#xff0c;想要走到最上面&#xff0c;求路径中的最小值的最大值是多少。 思路&#xff1a;用二分来枚举路径上的…

C#编程的其他概念

目录 面向对象的编程 模式匹配 弃元 面向对象的编程 C# 是面向对象的编程语言。 面向对象编程的四项基本原则为&#xff1a; 抽象&#xff1a;将实体的相关特性和交互建模为类&#xff0c;以定义系统的抽象表示。封装&#xff1a;隐藏对象的内部状态和功能&#xff0c;并仅…

完美selenium将某套壳chatgpt网站变为api

import time from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.options import Options# 导入keys类包 # import pyperclip # from pywinauto.keyboard import send_keys# 合成urls # url_list=[head…