文件绕过-Unsafe Fileuoload

文件上传基础

什么是文件上传

将客户端数据以文件形式封装·通过网络协议发送到服务器端,在服务器端解析数据,最终在服务端硬盘上作为真实的文件保存。
在这里插入图片描述
通常一个文件以HTTP协议进行上传时,将以POST请求发送至Web服务器,Web服务器收到请求并同意后,用户与Web服务器将建立连接,并传输数据

文件上传产生漏洞的原因

在这里插入图片描述

文件上传漏洞危害

上传文件的时候,如果服务器端脚本语言未对上传的文件进行严格的验证和过滤,就容易造成上传任意文件的情况。
攻击者通过上传恶意文件传递给解释器去执行,然后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理、命令执行等恶意操作·从而控制整个网站,甚至是服务器·这个恶意的文件( php、asp、aspx、jsp等),又被称Webshell。

可能存在漏洞的位置

1.图片上传功能
2.头像上传功能
3.文档上传功能
这一类的功能,往往都可能材质上传文件建议不严格的安全缺陷。

文件上传检测方式

一般一个文件上传过程中的检测方式有:
客户端JavaScript检测(检测文件扩展名)
服务端MIME类型检测(检测content-type内容)
服务端目录路径检测(检测跟path参数相关的内容)
服务端文件扩展名检测(检测跟文件extension相关的内容)
服务端文件内容检测(检测内容是否合法是否含有恶意代码)等

文件上传绕过

在这里插入图片描述

绕过客户端检测

原理

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

方法

在本地浏览器客户端禁用JS即可;可使用火狐浏览器的Noscript插件IE中禁用JS等方式实现

测试

upload-labs靶场进行测试https://gitcode.com/c0ny1/upload-labs/overview

绕过服务器检测

服务器检测

upload检测:
1.客户端效验
2.服务器效验:
MIME类型:
文件内容:文件幻数、文件相关信息、图片渲染、二次渲染
文件后缀:黑名单、白名单

常见的MIME类型

超文本标记语言.html文件:text/htm
普通文本.txt文件:text/plain
PDF文档.pdf:application/pdf
Microsoft Word文件.word : application/msword
PNG图像.png :image/png
GIF图像.gif:image/gif
MPEG文件.mpg.mpeg : video/mpeg
AVI文件.avi : video/x-msvideo

绕过MIME类型检测

原理:检测图片类型文件上传过程中http包的Content-Type字段的值,来判断上传文件是否合法
绕过方法: 用burpsuite截取并修改数据包中文件的content-type类型进行绕过
在这里插入图片描述

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

黑名单策略:
文件扩展名在黑名单中为不合法,一般有个专门的黑名单列表,里面会包含常见的危险脚本文件
在这里插入图片描述
1.后缀大小写绕过:(Php)
在对后缀的判断如果只是对字符串进行单独的比较来判断是不是限制文件,可以采用后缀名大小写绕过形式。
2.空格绕过:(php)
如果黑名单没有对后缀名进行去空处理,可以通过在后缀名后加空进行绕过
3.点绕过 :(php.)
如果黑名单没有对后缀名进行去处理,利用Windows系统的文件名特性,会自动去掉后缀名最后的.,通过在文件名后加.进行绕过。
4.:: D A T A 绕过 : 如果黑名单没有对后缀名进行去 : : DATA绕过: 如果黑名单没有对后缀名进行去:: DATA绕过:如果黑名单没有对后缀名进行去::DATA处理,利用Windows下NTFS文件系统的一个特性,可以在后缀名后加::SDATA,绕过对黑名单的检测。
5.配合Apache解析漏洞:
Apache解析有一个特点,解析文件时是从右往左判断,如果为不可识别解析再往左判断,如aa.php.owf.rar文件Apache不可识别解析’.owf’和’.rar’'这两种后缀,会解析成.php文件。
6…htaccess文件
配合名单列表绕过,上传一个自定义的.htaccess,就可以轻松绕过各种检测htaccess文件(或者"分布式配置文件"),全称是Hpertext Access(超文本入口)。提供了针对目录改变配置的方法即,在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及其所有子目录,作为用户所能使用的命令受到限制。

新建一个.htaccess文件:
<FileMatch "as.png">
SetHandler application/x-httpd-php
</FileMatch>
当遇到as.png文件他会解析成php文件

通过一个.htaccess 文件调用 php 的解析器去解析一个文件名中只要包含"haha"这个字符串的任意文件,所以无论文件名是什么样子,只要包含"haha"这个字符串,都可以被以 php 的方式来解析,一个自定义的.htaccess 文件就可以以各种各样的方式去绕过很多上传验证机制。

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

白名单策略:
文件扩展名不在白名单中为不合法。
绕过方法:
服务端判断文件类型是从后往前判断,而对文件解析是从前往后解析,可以利用00截断的方式进行绕过,包括%00截断与0x00截断。
%00截断
url发送到服务器后被服务器解码,这时还没有传到验证函数,也就是说验证函数里接收到的不是%00字符,而是%00解码后的内容,即解码成了0x00。
总的来说就是他保存会变成png格式 当解析的时候%00相当于是注释掉后面的png 让他变成php格式
在这里插入图片描述
正常来说空格是20在十六进制里面 %00就是00
在这里插入图片描述

在这里插入图片描述

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

绕过文件内容检测

一般通过检测文件内容来判断上传文件是否合法
主要有两种检测方法:
1.通过检测上传文件内容开始处的文件幻数来判断。通常情况下,通过判断前10个字节,基本就能判断出一个文件的真实类型
2.文件加载检测一般是调用API或函数对文件进行加载测试·常见的是图像染测试,再严格点的甚至是进行二次渲染
主要是检测文件内容开始处的文件幻数
文件格式幻数( 外语: magic number)·它可以用来标记文件或者协议的格式,很多文件都有幻数标志来表明该文件的格式。

绕过文件内容检测-文件幻数检测

常见图片类型的文件幻数如下:
1.要绕过 jpg 文件幻数检测就要在文件开头写上下面的值
Value = FF D8 FF EO 00 10 4A 46 49 46
在这里插入图片描述

2.要绕过 gif 文件幻数检测就要在文件开头写上下面的值
Value = 47 49 46 38 39 61
在这里插入图片描述
3.要绕过 png 文件幻数检测就要在文件开头写上下面的值
Value = 89 50 4E 47
在这里插入图片描述
然后在文件幻数后面加上自己的一句话木马代码就行了

绕过文件内容检测-文件加载检测

一般是调用API 或函数去进行文件加载测试,我们常见的是图像染测试,严格的进行二次渲染对渲染/加载测试的攻击方式是代码注入绕过对二次渲染的攻击方式是攻击文件加载器自身
1.对渲染/加载测试攻击- 代码注入绕过可以用图像处理软件对一张图片进行代码注入
这类攻击的原理是·在不破坏文件本身的渲染情况下找一个空白区进行填充代码,一般是图片的注释区,这样能保证本身文件结构是完整的,对于渲染测试基本上都能绕过
2.二次染的攻击方式 攻击文件加载器自身
这种情况下无法用代码注入绕过,二次染相当于吧原本属于图像数据的部分抓出来,在用自己的API或函数进行重新渲染,而非图像数据部分直接被隔离开了。
我们可以用溢出攻击对文件加载器进行攻击,上传自己的恶意文件后,服务器上的文件加载器会主动进行加载测
试,加载测试时被溢出攻击执行shellcode

WEB解析漏洞简介

apache解析漏洞

形式: testphp.qwe.asd,任意不属于Apache解析黑名单且也不属于白名单的名称
原理:Apache 解析文件的规则是从右到左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断,比如
testphp.qwe.asdqwe”和”asd” 这两种后是apache不可识别解析,apache就会把test,php.qweasd解析成php
www.xx.com/ testphp.qwe.asd

IIS 6.0解析漏洞

目录解析:
形式:www.xxx.com/xx.asp/xxjpg
原理: 服务器默认会把.asp目录下的文件都解析成asp文件
文件解析:
形式:wwwxxx.com/xxasp;jpg
原理:服务器默认不解析;号后面的内容,因此xxasp;jpg便被解析成asp文件了

IIS 7.0解析漏洞

形式:意文件名/任意文件名.php
原理:IS7.0/7.5 是对 php 解析时有一个类似于 Ninx 的解析漏洞,对任意文件名只要在 URL后面追加上字符串“/任意文件名.php“就会按照 php 的方式去解析

Nginx解析漏洞

形式:任意文件名/任意文件名.php
一个在任意文件名后面添加 /任意文件名.php 的解析漏洞·比如原本文件名是 testjpg·可以添加为test.jpg/x.php 进行解析攻击。
形式:任意文件名%00.php
对低版本的 Nginx 可以在任意文件名后面添加%00,php 进行解析攻击·( Nginx版本<=0.8.37 空字节代码执行漏洞)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2776719.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

PWM输入输出

PWM&#xff08;Pulse Width Modulation&#xff09;即脉冲宽度调制&#xff0c;在具有惯性的系统中&#xff0c;可以通过对一系列脉冲的宽度进行制&#xff0c;来等效地获得所需要的模拟参量&#xff0c;常应用于电机控速、开关电源等领域。 PWM参数 PWM 中有三个重要参数&…

C++11新特性(一)

目录 C11简介 统一的列表初始化 变量类型推导 std::initializer_list 声明 auto decltype nullptr STL的一些变化 右值引用 右值引用和左值引用 右值引用适用场景 移动构造和移动语义 对类的影响 可变参数模板 递归函数方式展开参数包 STL容器中的empalce相…

内存管理 | 进程地址空间

文章目录 1.进程地址空间的理解2.将虚拟地址转换为物理地址3.进程地址空间的设计4.进程地址空间的好处 1.进程地址空间的理解 在 前文 分享的fork创建子进程的系统调用中&#xff0c;一个变量接收了两个不同的返回值&#xff01;通过推测也知道&#xff0c;那个地址绝不是真是…

基于SpringBoot的记账系统项目

点击以下链接获取源码&#xff1a;https://download.csdn.net/download/qq_64505944/88822660?spm1001.2014.3001.5503 Java项目-8 开发工具&#xff1a;IDEA/Eclipse,MySQL,Tomcat 项目框架&#xff1a;SpringBoot,layui 功能&#xff1a;可以按照类型和时间查询&#xff0c…

融资项目——获取树形结构的数据

如下图所示&#xff0c;下列数据是一个树形结构数据&#xff0c;行业中包含若干子节点。表的设计如下图&#xff0c;设置了一个id为1的虚拟根节点。&#xff08;本树形结构带虚拟根节点共三层&#xff09; 实现逻辑&#xff1a; 延时展示方法&#xff0c;先展现第二层的信息&a…

年-月-日的输入方法

大家对于输入的函数一定有所认识&#xff0c;比如c中位于 #include <iostream> 中的 cin 函数&#xff0c;这个函数输入单个十分好用&#xff0c;但是对于年月日这种较为复杂的就行不通了&#xff0c;就只能输入最前面的一个 那怎么输入像这样的年月日呢 答案就是用 scan…

清理神器CleanMyMac X 空间透镜——可视化您的磁盘空间 空间透镜有什么用

不久前&#xff0c;CleanMyMac X 发布了一个新功能&#xff1a; 空间透镜 相信有非常多的小伙伴和小编一样&#xff0c; 对这个功能一脸问号 这啥玩意儿&#xff1f;&#xff1f;&#xff1f; 今天就让我们深入了解一下&#xff0c; CleanMyMac X 的空间透镜功能。 - 更好…

基于SSM的网络在线考试系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的网络在线考试系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring …

【CV论文精读】EarlyBird: Early-Fusion for Multi-View Tracking in the Bird’s Eye View

【CV论文精读】EarlyBird: Early-Fusion for Multi-View Tracking in the Bird’s Eye View 0.论文摘要 多视图聚合有望克服多目标检测和跟踪中的遮挡和漏检挑战。多视图检测和3D对象检测中的最新方法通过将所有视图投影到地平面并在鸟瞰视图&#xff08;BEV&#xff09;中执…

第五篇【传奇开心果系列】vant开发移动应用示例:深度解读高度可定制

传奇开心果博文系列 系列博文目录Vant 开发移动应用示例系列 博文目录前言一、Vant高度可定制的重要作用二、样式定制介绍和示例代码三、组件定制介绍和示例代码四、组件库定制介绍和示例代码五、主题定制介绍和示例代码六、语言环境定制介绍和示例代码七、资源加载定制介绍和示…

猫头虎分享已解决Bug || 备份失败(Backup Failures):BackupFailureException, DataBackupError ❌

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

数据结构(C语言)代码实现(八)——顺序栈实现数值转换行编辑程序括号分配汉诺塔

目录 参考资料 顺序栈的实现 头文件SqStack.h&#xff08;顺序栈函数声明&#xff09; 源文件SqStack.cpp&#xff08;顺序栈函数实现&#xff09; 顺序栈的三个应用 数值转换 行编辑程序 顺序栈的实现测试 栈与递归的实现&#xff08;以汉诺塔为例&#xff09; 参考资…

传输层协议 ——— TCP协议

TCP协议 TCP协议谈谈可靠性为什么网络中会存在不可靠&#xff1f;TCP协议格式TCP如何将报头与有效载荷进行分离&#xff1f;序号与确认序号 确认应答机制&#xff08;ACK&#xff09;超时重传机制连接管理机制三次握手四次挥手 流量控制滑动窗口拥塞控制延迟应答捎带应答面向字…

闭区间上连续函数的性质【高数笔记】

1. 分几个性质 2. 每个性质的注意事项是什么 3. 每个性质适用什么类型的题型 4. 注意最值定理和正弦函数的不同 5. 做题步骤是什么

Lua: 一门轻量级、高效的脚本语言

Lua: 一门轻量级、高效的脚本语言 在当今软件开发的领域中&#xff0c;寻找一门既灵活又高效的脚本语言&#xff0c;一直是开发者们追求的目标。Lua作为一门小巧、高效、可嵌入的脚本语言&#xff0c;已经成为了众多开发者的首选之一。无论是游戏开发、嵌入式系统、Web 开发还是…

npm 上传一个自己的应用(2) 创建一个JavaScript函数 并发布到NPM

上文 npm 上传一个自己的应用(1) 搭建一个项目环境 带着大家创建了一个项目环境 我们打开 看json的配置 我们入口是一个叫 index.js 的文件 那么 我们就要把它创建出来 之后 我们的方法也就要写在这里面 和 json同一个目录 创建 index.js 我们这里 写个简单的求和操作 index…

30岁还一事无成,怎么办?

前些日子&#xff0c;知乎有一个话题&#xff0c;特别火。 原话是&#xff1a;30岁&#xff0c;如果你还没当上管理层&#xff0c;或者在某个领域取得成就&#xff0c;那你一辈子基本也就这样了。 这句话一出&#xff0c;戳中了许多人的软肋&#xff0c;一时间群情哗然。 理由是…

(全网最全)微型计算机原理与接口技术第六版课后习题答案-周荷琴,冯焕清-第9章串行通信和可编程 接口芯片8251A-中国科学技术大学出版社

含有“AI:”开头的题目的答案是问chat的&#xff0c;看个乐就行&#xff0c;不一定正确 1。串行通信与并行通信的主要区别是什么&#xff1f;各有什么优缺点? 2。在串行通信中&#xff0c;什么叫单工、半双工、全双工工作方式&#xff1f; 3。什么叫同步工作方式&#xff1f;…

金融信贷风控评分卡模型

评分卡模型概念 评分模型是根据借款人的历史数据&#xff0c;选取不同维度的数据类型&#xff0c;通过计算而得出的对借款人信用情况打分的模型。不同等级的信用分数代表了借款人信用情况的好坏&#xff0c;以此来分析借款人按时还款的可能性。 评分卡模型分类 A卡&#xff…

使用QZipWriter来压缩文件

Qt 自带的压缩QZipWriter和解压QZipReader详解~含Demo-CSDN博客 示例代码1&#xff1a; 压缩一个文件&#xff1a; #include "qzipwriter_p.h" #include "qfileinfo.h" #include <QDebug> int main(int argc, char *argv[]) {QApplication a(argc…