文件上传漏洞——绕过

简介: 绕过客户端检测(JS检测)绕过服务端检测(MIME类型检测、文件后缀检测、文件内容检测)

绕过客户端检测(JS检测)

原理:通常在上传页面里含有专门检测文件上传的 JavaScript 代码,最常见的就是检测文件类型和扩展名是否合法。

方法:在本地浏览器客户端禁用 JS 即可;可使用火狐浏览器的 Noscript 插件、IE中禁用JS等方式实现,利用 burpsuite 可以绕过一切客户端检测。

绕过服务端检测

服务端的代码通常检测三个点:MIME类型、文件内容、文件后缀

绕过MIME类型检测

常见MIME类型

超文本标记语言文本 .html     text/html

2. 普通文本 .txt     text/plain

3. PDF文档 .pdf     application/pdf

4. Microsoft Word文件 .word     application/msword

5. PNG图像 .png     image/png

6. GIF图形 .gif     image/gif

7. JPEG图形 .jpeg,.jpg     image/jpeg

8. au声音文件 .au     audio/basic

9. MPEG文件 .mpg,.mpeg     video/mpeg

10. AVI文件 .avi     video/x-msvideo

11. GZIP文件 .gz     application/x-gzip

原理:检测图片类型文件上传过程中http包的 Content-Type 字段的值,来判断上传文件是否合法。

方法:burpsuite截取并修改数据包中文件的 content-type 类型进行绕过。

绕过文件后缀检测

黑名单策略:文件扩展名在黑名单中为不合法,一般有个专门的黑名单列表,里面会包含常见的危险脚本文件。

image.png

1. 后缀大小写绕过:(.Php)

在对后缀的判断中,如果只是对字符串进行单独的比较来判断是不是限制文件,可以采用后缀名大小写绕过形式。

2. 空格绕过:(.p h p)

如果黑名单没有对后缀名进行去空处理,可以通过在后缀名后加空进行绕过。

3. 点绕过:(.php.)

如果黑名单没有对后缀名进行去.处理,利用Windows系统的文件名特性,会自动去掉后缀名最后的.,通过在文件名后加.进行绕过。

4. ::$DATA 绕过:

如果黑名单没有对后缀名进行去::$DATA处理,利用WindowsNTFS文件系统的一个特性,可以在后缀名后加::$DATA,绕过对黑名单的检测。

5. 配合Apache解析漏洞:

Apache解析有一个特点,解析文件时是从右往左判断,如果为不可识别解析再往左判断,如aa.php.owf.rar文件,Apache不可识别解析‘.owf’‘.rar’这两种后缀,会解析成.php文件。


白名单策略:文件扩展名不在白名单中为不合法。

绕过方法:服务端判断文件类型是从后往前判断,而对文件解析是从前往后解析,可以利用00截断的方式进行绕过,包括%00截断与0x00截断。

php小于5.3.29

%00截断:

url发送到服务器后被服务器解码,这时还没有传到验证函数,也就是说验证函数里接收到的不是%00字符,而

%00解码后的内容,即解码成了0x00

0x00截断:

系统在对文件名进行读取时,如果遇到0x00,就会认为读取已经结束。但要注意是文件的十六进制内容里的

00,而不是文件名中的00

绕过文件内容检测

一般通过检测文件内容来判断上传文件是否合法。

文件幻数检测

主要是检测文件内容开始处的文件幻数

文件格式幻数(外语:magic number),它可以用来标记文件或者协议的格式,很多文件都有幻数标志来表明该文件的格式。

常见图片类型的文件幻数如下:

  1. 要绕过 jpg 文件幻数检测就要在文件开头写上下面的值:

Value = FF D8 FF E0 00 10 4A 46 49 46

  1. 要绕过 gif 文件幻数检测就要在文件开头写上下面的值:

Value = 47 49 46 38 39 61

  1. 要绕过 png 文件幻数检测就要在文件开头写上下面的值:

Value = 89 50 4E 47

然后在文件幻数后面加上自己的一句话木马代码就行了。

文件加载检测

一般是调用API 或函数去进行文件加载测试,我们常见的是图像渲染测试,严格的进行二次渲染。

对渲染/加载测试攻击 - 代码注入绕过

可以用图像处理软件对一张图片进行代码注入

原理:在不破坏文件本身的渲染情况下找一个空白区进行填充代码,一般是图片的注释区,这样能保证本身文件结构是完整的,对于渲染测试基本上都能绕过。

二次渲染的攻击方式 - 攻击文件加载器自身

这种情况下无法用代码注入绕过,二次渲染相当于吧原本属于图像数据的部分抓出来,在用自己的API或函数进行重新渲染,而非图像数据部分直接被隔离开了。我们可以用溢出攻击对文件加载器进行攻击,上传自己的恶意文件后,服务器上的文件加载器会主动进行加载测试,加载测试时被溢出攻击执行shellcode

目录
相关文章
|
计算机视觉 Python
OpenCV轮廓拟合与凸包的讲解与实战应用(附Python源码)
OpenCV轮廓拟合与凸包的讲解与实战应用(附Python源码)
803 0
|
SQL 数据库 Python
SQLAlchemy中filter函数的使用
SQLAlchemy中filter函数的使用
|
9月前
|
存储 安全 前端开发
Web渗透-文件上传漏洞-上篇
文件上传漏洞常见于Web应用,因类型限制不严可致恶意文件执行。本文介绍前端检测、MIME类型、黑名单、.htaccess、空格、双写等多种绕过方式,并结合upload-labs靶场演示利用方法,提升安全防护认知。
2819 1
Web渗透-文件上传漏洞-上篇
|
开发框架 安全 .NET
Web安全-文件上传漏洞与WAF绕过
Web安全-文件上传漏洞与WAF绕过
1292 4
|
Linux Docker Windows
Docker Compose
Docker Compose
1747 29
|
监控 安全 网络安全
深入解析PDCERF:网络安全应急响应的六阶段方法
PDCERF是网络安全应急响应的六阶段方法,涵盖准备、检测、抑制、根除、恢复和跟进。本文详细解析各阶段目标与操作步骤,并附图例,助读者理解与应用,提升组织应对安全事件的能力。
2559 89
|
应用服务中间件 Linux 网络安全
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
5347 8
|
安全 NoSQL 网络协议
SSRF内网打穿相关姿势
本文详细介绍了服务器端请求伪造(SSRF)漏洞,包括其定义、漏洞场景、常见漏洞函数、URL伪协议及其利用方法。通过具体的靶机示例,展示了如何利用SSRF漏洞进行内网探测、命令执行、SQL注入、命令注入、XXE注入、Tomcat任意文件上传和Redis未授权访问等攻击。文章还提供了相关工具和参考资料,帮助读者更好地理解和应对SSRF漏洞。
2142 0
SSRF内网打穿相关姿势
|
JavaScript 前端开发
常见XSS绕过技巧
常见XSS绕过技巧
2062 0
|
前端开发 Java API
Swagger接口文档 —— 手把手教学,全方位超详细小白能看懂,百分百能用Java版
本文提供了一份详细的Swagger接口文档生成工具的使用教程,包括了导入依赖、配置类设置、资源映射、拦截器配置、Swagger注解使用、生成接口文档、在线调试页面访问以及如何设置全局参数(如token),旨在帮助Java开发者快速上手Swagger。
12062 0
Swagger接口文档 —— 手把手教学,全方位超详细小白能看懂,百分百能用Java版