文件绕过-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 空字节代码执行漏洞)
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1987-2022年各省进出口总额数据整理(含进口和出口)(无缺失)

1987-2022年各省进出口总额数据整理&#xff08;含进口和出口&#xff09;&#xff08;无缺失&#xff09; 1、时间&#xff1a;1987-2022年 2、来源&#xff1a;各省年鉴、统计公报 3、指标&#xff1a;进出口总额&#xff08;万美元&#xff09;、进口总额&#xff08;万美…

2009-2019年地级市分类转移支付数据

2009-2019年地级市分类转移支付数据 1、时间&#xff1a;2009-2019年 2、来源&#xff1a;整理自wind 3、指标&#xff1a;公共财政收入:返还性收入、公共财政收入:一般性转移支付收入、公共财政收入:专项转移支付收入 4、范围&#xff1a;280个地级市 5、指标解释&#x…

Windows - URL Scheme - 在Windows上无管理员权限为你的程序添加URL Scheme

Windows - URL Scheme - 在Windows上无管理员权限为你的程序添加URL Scheme What 想不想在浏览器打开/控制你的电脑应用&#xff1f; 比如我在浏览器地址栏输入wegame://后回车会提示是否打开URL:wegame Portocol。 若出现了始终允许选项&#xff0c;你甚至可以写一个Web界面…

高效测试利器:Jmeter+Ant+Jenkins定时监控接口揭秘!

基于JmeterantJenkins的接口性能监控框架 Jenkins的安装和配置 简介 部署到持续集成平台可以实现脚本的定时运行&#xff0c;这是接口测试的核心。 这里我们选用了jenkins,jenkins是一个强大的持续集成系统&#xff0c;使用起来也很简单。 使用步骤如下&#xff1a; 1、 安装…

Redis核心技术与实战【学习笔记】 - 23.Redis 主从切换故障,有哪些坑

前言 Redis 的主从同步机制不仅可以让从库服务更多的读请求&#xff0c;分担主库的压力&#xff0c;而且还能在主库发生故障时&#xff0c;进行主从库切换&#xff0c;提供高可靠服务。 不过&#xff0c;在实际使用主从机制时会踩到一些“坑”&#xff1a;主从数据不一致、读…

保育员怎么搜题答案?用这5款神器就够了!!! #媒体#笔记#知识分享

专供大学生使用的搜题神器&#xff0c;支持拍照搜题、文字搜题、语音搜题等多种搜题方式&#xff0c;能快速找到课本习题的题目答案&#xff0c;而且还会附带详细的答案解析&#xff0c;加深我们对题目的理解。 1.大鱼搜题 这是一个公众号 适合大学生&#xff0c;基本上网课…

动漫风博客介绍页面源码

动漫风博客介绍页面源码&#xff0c;HTML源码&#xff0c;图片背景有淡入切换特效 蓝奏云&#xff1a;https://wfr.lanzout.com/iIDZu1nrmjve

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

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

【汇编】简单的linux汇编语言程序

一、Linux系统汇编语言 Linux系统上的汇编语言可以使用不同的语法风格&#xff0c;主要包括Intel语法和AT&T语法。这两种语法有各自的特点和风格区别&#xff0c;尽管它们表示的底层机器指令相同。下面分别对两种语法进行简要说明&#xff1a; Intel语法 Intel语法是由I…

《MySQL 简易速速上手小册》第10章:未来趋势和进阶资源(2024 最新版)

文章目录 10.1 MySQL 在云计算和容器化中的应用10.1.1 基础知识10.1.2 重点案例&#xff1a;使用 Python 部署 MySQL 到 Kubernetes10.1.3 拓展案例 1&#xff1a;在 AWS RDS 上部署 MySQL 实例10.1.4 拓展案例 2&#xff1a;使用 Docker 部署 MySQL 10.2 MySQL 和 NoSQL 的整合…

Web课程学习笔记--JavaScript操作DOM常用的API

JavaScript操作DOM常用的API 1 什么是DOM 文档对象模型 (DOM) 是HTML和XML文档的编程接口。它提供了对文档的结构化的表述&#xff0c;并定义了一种方式可以使从程序中对该结构进行访问&#xff0c;从而改变文档的结构&#xff0c;样式和内容。 文档对象模型 (DOM) 是对HTML文…

基于BiLSTM-CRF模型的分词、词性标注、信息抽取任务的详解,侧重模型推导细化以及LAC分词实践

基于BiLSTM-CRF模型的分词、词性标注、信息抽取任务的详解,侧重模型推导细化以及LAC分词实践 1.GRU简介 GRU(Gate Recurrent Unit)门控循环单元,是[循环神经网络](RNN)的变种种,与 LSTM 类似通过门控单元解决 RNN 中不能长期记忆和反向传播中的梯度等问题。与 LSTM 相…

一文带你读懂JSON模块

json模块 JSON (JavaScript Object Notation)&#xff1a;是一个轻量级的数据交换格式模块&#xff0c;受javascript对象文本语法启发&#xff0c;但不属于JavaScript的子集。 常用方法&#xff1a; dump(obj,fp)&#xff1a;将对象以字符串的形式写入文件中。 load(fp)&am…

解密输入输出迷局:蓝桥杯与ACM中C++/C语言常见问题揭秘

关于C中的常见输入输出汇总 带空格的字符串&#xff1a; ​ 对于这种输入方式我们选择使用gets() 函数来进行输入&#xff0c;gets用于从标准输入&#xff08;通常是键盘&#xff09;读取一行文本并将其存储为字符串&#xff0c;直到遇到换行符&#xff08;‘\n’&#xff09…

Mac电脑到手后的配置

一、Homebrew 1、Homebrew安装 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 桌面的Old_Homebrew文件夹&#xff0c;没有你需要的可以删除。 2、Homebrew卸载 /bin/zsh -c "$(curl -fsSL https://gitee.com/c…

生物——文献笔记

生物——文献笔记 文章目录 前言藻类群体遗传学研究和进展&#xff08;综述&#xff09;海洋动物群体遗传学的研究进展1. 影响群体基因频率的因素2. 根据自然群体的繁殖体系&#xff0c;海洋动物群体遗传类型可分为以下几类3. 海洋动物群体遗传研究中常用的遗传标记4. 研究展望…

QXlsx Qt操作excel

QXlsx 是一个用于处理Excel文件的开源C库。它允许你在你的C应用程序中读取和写入Microsoft Excel文件&#xff08;.xlsx格式&#xff09;。该库支持多种操作&#xff0c;包括创建新的工作簿、读取和写入单元格数据、格式化单元格、以及其他与Excel文件相关的功能。 支持跨平台…

python爬虫入门(一)

使用requests 库获取网站html信息 import requests response requests.get("https://jingyan.baidu.com/article/17bd8e52c76b2bc5ab2bb8a2.html#:~:text1.%E6%89%93%E5%BC%80%E6%B5%8F%E8%A7%88%E5%99%A8F12%202.%E6%89%BE%E5%88%B0headers%E9%87%8C%E9%9D%A2%E7%9A%84…

STM32F1 - 标准外设库_规范

STM32F10x_StdPeriph_Lib_V3.6.0 1> 头文件包含关系2> .c文件内部结构3> 宏定义位置4> 位掩码bit mask5> .c文件中定义私有变量 1> 头文件包含关系 1个头文件stm32f10x.h 就把整个MCU以及标准外设库&#xff0c;就管理了&#xff1b; 2> .c文件内部结构 …

小白都能看懂的力扣算法详解——链表(二)

LC 24.两两交换链表中的节点 题目描述&#xff1a;给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 24. 两两交换链表中的节点 -…