文件绕过-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://www.mzph.cn/news/676302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【初中生讲机器学习】6. 分类算法中常用的模型评价指标有哪些?here!

创建时间&#xff1a;2024-02-07 最后编辑时间&#xff1a;2024-02-09 作者&#xff1a;Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏&#xff0c;很高兴遇见你~ 我是 Geeker_LStar&#xff0c;一名初三学生&#xff0c;热爱计算机和数学&#xff0c;我们一起加…

【原创 附源码】Flutter海外登录--Google登录最详细流程

最近接触了几个海外登录的平台&#xff0c;踩了很多坑&#xff0c;也总结了很多东西&#xff0c;决定记录下来给路过的兄弟坐个参考&#xff0c;也留着以后留着回顾。更新时间为2024年2月8日&#xff0c;后续集成方式可能会有变动&#xff0c;所以目前的集成流程仅供参考&#…

[UI5 常用控件] 08.Wizard,NavContainer

文章目录 前言1. Wizard1.1 基本结构1.2 属性1.2.1 Wizard&#xff1a;complete1.2.2 Wizard&#xff1a;finishButtonText1.2.3 Wizard&#xff1a;currentStep1.2.4 Wizard&#xff1a;backgroundDesign1.2.5 Wizard&#xff1a;enableBranching1.2.6 WizardStep&#xff1a;…

PKI - 03 密钥管理(如何进行安全的公钥交换)

文章目录 Pre密钥管理面临的挑战安全密钥管理的几种方式手动密钥交换与确认受信任的介绍 Pre PKI - 02 对称与非对称密钥算法 密钥管理面临的挑战 密钥管理面临的挑战主要包括以下几点&#xff1a; 安全的公钥交换&#xff1a;在使用基于非对称密钥算法的服务之前&#xff0c…

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

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

嵌入式单片机中晶振的工作原理

晶振在单片机中是必不可少的元器件&#xff0c;只要用到CPU的地方就必定有晶振的存在&#xff0c;那么晶振是如何工作的呢&#xff1f; 什么是晶振 晶振一般指晶体振荡器&#xff0c;晶体振荡器是指从一块石英晶体上按一定方位角切下的薄片&#xff0c;简称为晶片。 石英晶体谐…

吉他学习:识谱,认识节奏,视唱节奏,节拍器的使用

第九课 识谱https://m.lizhiweike.com/lecture2/29362692 第十课 基础乐理(二)——节奏篇https://mp.csdn.net/mp_blog/creation/editor?spm=1011.2124.3001.6192

Redis核心技术与实战【学习笔记】 - 27.限制Redis Cluster规模的因素(通信开销)

简述 Redis Cluster 能保存的数据量以及支撑的吞吐量&#xff0c;跟集群实例规模相关。 Redis 官方给出了 Redis Cluster 的规模上线&#xff0c;就是一个集群运行 1000 个实例。 其实&#xff0c;限定 Redis Cluster 集群规模的一个关键因素就是&#xff0c;实例间的通信开销…

Vue源码系列讲解——虚拟DOM篇【三】(更新子节点)

1. 前言 在上一篇文章中&#xff0c;我们了解了Vue中的patch过程&#xff0c;即DOM-Diff算法。并且知道了在patch过程中基本会干三件事&#xff0c;分别是&#xff1a;创建节点&#xff0c;删除节点和更新节点。创建节点和删除节点都比较简单&#xff0c;而更新节点因为要处理…

12个最常用的matplotlib图例 !!

文章目录 1、折线图 2、散点图 3、直方图 4、柱状图 5、箱线图 6、热力图 7、饼图 8、面积图 9、等高线图 10、3D图 11、时间序列图 12、树状图 总结 1、折线图 折线图&#xff08;Line Plot&#xff09;&#xff1a;用于显示数据随时间或其他连续变量的变化趋势。在实际项目中…

【Linux驱动】块设备驱动(三)—— 块设备读写(不使用请求队列)

并非每种块设备都会用到请求队列&#xff0c;从上节可以知道&#xff0c;请求队列的作用是管理和调用IO请求&#xff0c;那么反过来想&#xff0c;如果IO请求较少&#xff0c;那就可以无需使用请求队列。在以下情况中&#xff0c;可以不使用请求队列。 单任务环境: 当系统中只有…

VRRP配置

目录 网络拓扑图 配置要求 配置步骤 网络拓扑图 配置要求 按照图示配置 IP 地址和网关在 SW1&#xff0c;SW2&#xff0c;SW3 上创建 Vlan10 和 Vlan20&#xff0c;对应 IP 网段如图&#xff0c;交换机之间链路允许所有 VLAN 通过在 SW1 和 SW2 上配置 VRRP&#xff0c;要求…

在windows server2016部署域控服务器DC

1.正常配置vmware虚拟机基础环境 2.启动虚拟机&#xff0c;会先到efi network&#xff0c;等待几分钟 3.进入boot manager&#xff0c;选择启动方式&#xff0c;记得提示CD启动的时候需要按回车&#xff0c;不然又会回到这个界面 4.选择安装版本为桌面版&#xff08;开始直接…

无题2024

念旧 阿悠悠 专辑&#xff1a;念旧 发行时间 2019-08-25 念旧 播报编辑讨论1上传视频 阿悠悠演唱歌曲 《念旧》是由一博作词&#xff0c;一博和张池作曲&#xff0c;阿悠悠演唱的歌曲&#xff0c;发行于2019年8月25日。 [1]收录于同名专辑《念旧》中。 相关星图 查…

(四)elasticsearch 源码之索引流程分析

https://www.cnblogs.com/darcy-yuan/p/17024341.html 1.概览 前面我们讨论了es是如何启动&#xff0c;本文研究下es是如何索引文档的。 下面是启动流程图&#xff0c;我们按照流程图的顺序依次描述。 其中主要类的关系如下: 2. 索引流程 (primary) 我们用postman发送请求&…

Windows Server 2025 Hyper-V 新变化

今天简单跟大家聊聊Windows Server 2025 Hyper-V一些新功能新变化&#xff0c;具体如下&#xff1a; 在 VM 之间共享 GPU 随着图形处理器的重要性日益增加&#xff0c;特别是由于它们在 AI 应用程序中的核心作用&#xff0c;Hyper-V 中对 GPU 的现有支持已不再足够。到目前为…

[Java][算法 哈希]Day 01---LeetCode 热题 100---01~03

LeetCode 热题 100---01~03 ------->哈希 第一题 两数之和 思路 最直接的理解就是 找出两个数的和等于目标数 这两个数可以相同 但是不能是同一个数字&#xff08;从数组上理解就是内存上不是同一位置&#xff09; 解法一&#xff1a;暴力法 暴力解万物 按照需求 …

报错ValueError: Unknown CUDA arch (8.6) or GPU not supported

文章目录 问题描述解决方案参考文献 问题描述 报错 ValueError: Unknown CUDA arch (8.6) or GPU not supported 本人显卡为 RTX 3060&#xff0c;CUDA 为 10.2&#xff0c;PyTorch 为 1.5 解决方案 修改 C:\Users\Administrator\Envs\test\Lib\site-packages\torch\utils\c…

【PyQt】08 - 编辑Tab顺序

文章目录 前言一、Tab顺序二、编辑Tab顺序总结 前言 介绍了什么是Tab顺序&#xff0c;以及如何修改Tab顺序。 一、Tab顺序 当你的界面设计好之后&#xff0c;在输入栏按住Tab按键&#xff0c;他会按照你摆放的顺序一次转跳 二、编辑Tab顺序 方法一 然后鼠标左击就可以改变…

前端JavaScript篇之对this对象的理解

目录 对this对象的理解1. 函数调用模式&#xff1a;2. 方法调用模式&#xff1a;3. 构造器调用模式&#xff1a;4. apply、call和bind调用模式&#xff1a; 对this对象的理解 在JavaScript中&#xff0c;this关键字是一个非常重要的概念&#xff0c;它用于指向当前执行上下文中…