WEB安全基础 - - -文件上传(文件上传绕过)

2022-11-19 14:21:20 浏览数 (1)

目录

一,绕过客户端检测

原理:

方法:

实例操作

 绕过服务端检测

绕过MIME类型检测

原理:

方法:

实例:

 绕过文件后缀检测-黑名单

黑名单:

绕过方法

实例

绕过文件后缀检测-白名单

白名单:

绕过方法:

绕过文件内容检测

方法:

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

文件加载检测

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

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

一,绕过客户端检测

原理:

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

方法:

在本地浏览器客户端禁用 JS 即可;

使用火狐浏览器的 Noscript 插件、

IE 中禁用 JS 等方式实现,利用 burpsuite 可以绕过一切客户端检测。

实例操作

JavaScript 绕过

第一步,编写一个一句话木马,保存为php格式

<?php eval($_POST["cmd"]);?>

第二步,上传这个php文件,发现上传失败

 第三步,关闭egde中的js,步骤如下

找到设置

 再cookie和网站数据中关闭JavaScript

 第四步,再次上传php文件

 检查有无上传成功

第五步,使用中国蚁剑密码连接

 连接成功

 点开目录列表,找到了文件上传成功的文件

绕过服务端检测

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

绕过MIME类型检测

常见的mime类型

1. 超文本标记语言文本 .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 类型进行绕过。

实例:

MIME 绕过

第一步,编写一句话木马

<?php eval($_POST["cmd"]);?>

 第二步,上传php文件发现不能上传,使用burpsuite抓取upload上传信息查看content-type将其修改为image/jpeg格式,点击Forward发送到浏览器

第三步 ,查看文件有无上传成功

再次使用中国蚁剑连接,发现上传成功 

绕过文件后缀检测-黑名单

黑名单:

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

绕过方法

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

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

小写绕过形式。

2. 空格绕过:(.php)

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

3. 点绕过:(.php.)

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

的 . ,通过在文件名后加 . 进行绕过。

4. ::$DATA 绕过:

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

5. 配合Apache解析漏洞:

Apache 解析有一个特点,解析文件时是从右往左判断,如果为不可识别解析再往左判断,如

aa.php.owf.rar 文件, Apache 不可识别解析 ‘.owf’ 和 ‘.rar’ 这两种后缀,会解析成 .php 文件。

6. .htaccess 文件:

配合名单列表绕过,上传一个自定义的 .htaccess ,就可以轻松绕过各种检测 .htaccess 文件 ( 或者 " 分布式配置文件 " ) , 全称是 Hypertext Access ( 超文本入口 ) 。提供了针对目录改 变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。

实例

http://120.27.61.239:8003/source/04/index.php

绕过文件后缀检测-白名单

白名单:

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

绕过方法:

服务端判断文件类型是从后往前判断,而对文件解析是从前往后解析,可以利用 00 截断的方

式进行绕过,包括MIME修改、截断、0x00截断 。 

截断: url 发送到服务器后被服务器解码,这时还没有传到验证函数,也就是说验证函数里接收到的不是 字符,而 是 解码后的内容,即解码成了 0x00 。 0x00截断: 系统在对文件名进行读取时,如果遇到 0x00 ,就会认为读取已经结束。但要注意是文件的十六进制内容里的 00 ,而不是文件名中的 00 。

绕过文件内容检测

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

方法:

1. 通过检测上传文件内容开始处的文件幻数来判断。

2. 文件加载检测 一般是调用API或函数对文件进行加载测试。常见的是图像渲染测试,再严格点的甚至是进行二次渲染。

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

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

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

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

Value = 47 49 46 38 39 61

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

Value = 89 50 4E 47

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

文件头绕过

文件加载检测

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

对渲染 / 加载测试的攻击方式是代码注入绕过

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

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

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

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

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

这种情况下无法用代码注入绕过,二次渲染相当于吧原本属于图像数据的部分抓出来,在用自己的 API 或 函数进行重新渲染,而非图像数据部分直接被隔离开了。

我们可以用溢出攻击对文件加载器进行攻击,上传自己的恶意文件后,服务器上的文件加载器会主动进 行加载测试,加载测试时被溢出攻击执行shellcode 。

0 人点赞