当前位置:

首页 > 业界资讯 > 浅谈权限获取方法之文件上传

浅谈权限获取方法之文件上传

概述文件上传漏洞是发生在有上传功能的应用中,如果应用程序对用户的上传文件没有控制或者存在缺陷,攻击者可以利用应用上传功能存在的缺陷,上传木马、病毒等有危害的文件到服务器上面,控制服务器。漏洞成因及危害文件上传漏洞产生的主要原因是:应用中存在上传功能,但是上传的文件没有经过严格的合法性检验或者检验函数存在缺陷,导致可以上传木马文件到服务器。文件上传漏洞危害极大因为可以直接上传恶意代码到服务器上,可能会造成服务器的网页篡改、网站被挂马、服务器被远程控制、被安装后门等严重的后果。下面我们就文件上传的几种验证及绕

概述

文件上传漏洞是发生在有上传功能的应用中,如果应用程序对用户的上传文件没有控制或者存在缺陷,攻击者可以利用应用上传功能存在的缺陷,上传木马、病毒等有危害的文件到服务器上面,控制服务器

漏洞成因及危害

文件上传漏洞产生的主要原因是:应用中存在上传功能,但是上传的文件没有经过严格的合法性检验或者检验函数存在缺陷,导致可以上传木马文件到服务器。文件上传漏洞危害极大因为可以直接上传恶意代码到服务器上,可能会造成服务器的网页篡改、网站被挂马、服务器被远程控制、被安装后门等严重的后果。

下面我们就文件上传的几种验证及绕过方法:

1.本地验证(前端验证)

前端JS过滤绕过上传漏洞是因为应用程序是在前端通过JS代码进行的验证,而不是在程序后端进行的验证,这样就可以通过修改前端JS代码的方式进行绕过上传过滤,上传木马。

那么如何判断是否为前端验证呢?我个人觉得我们可以看在进行上传抓包的时候是否能到数据包,是否有数据流过,或者可以看上传图片是否页面会显示上传的图片地址等。

绕过:将过滤代码删除,修改或禁用Javascript。

2.后端验证及绕过

文件上传常见验证:后缀名(直接验证),文件,文件头(间接验证)。

2.1 后缀名

2.1.1 黑名单(明确不允许上传的脚本格式后缀)

文件名过滤绕过漏洞主要是因为通过黑名单的方式判断了文件上传的类型,而且并没有完整的过滤,导致攻击者通过上传黑名单类型之外的文件。

黑名单判断方法:上传文件,系统提示不允许上传xxx格式文件。

绕过:使用其他格式(php5,Phtml,php3)或者文件大小写,同时也可以加一些干扰符号实现绕过。

2.1.2 .htaccess(伪静态协议)-重写解析(Apache才有并且开启伪静态模块)

.htaccess文件上传是利用.htaccess文件可以对Web服务器配置的功能,实现对jpg、png等后缀的文件当做PHP文件解析的过程。

.htaccess文件(分布式配置文件)提供了一种基于每个目录进行配置更改的方法,包含一个或多个配置指令的文件放在特定的文档目录中,并且文件中的指令适用于该目录及其所有子目录。.htaccess是Web服务器的一个配置文件,可以通过.htaccess文件实现Web服务器中的定义文件的解析方式、重定向等配置。

绕过方法:首先上传1.htaccess文件。2.再上传图片马。

2.1.3 空格绕过

绕过方法:数据包中文件后缀名后加一个空格实现绕过。

2.1.4 .绕过

绕过方法:跟空格绕过方法类似,数据包中文件后缀名后加一个.实现绕过。

2.1.5 ::$data绕过

这是windows特有的一种协议,在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名。

2.1.6 循环过滤

绕过:代码将字符串里的php替换为空。

如:a.pphphp 会变成->a.

2.1.7 白名单:明确可以上传的格式后缀(更安全)

%00截断、0x00截断(建立在地址上的原理,截断文件后面数据 )00截断绕过只能绕过前端验证。

截断的产生主要原因就是存在%00这个字符,PHP<5.3.4时,会把它当做结束符,导致后面的数据直接忽略,造成截断,上传时如果上传文件的路径可控,可以通过00截断,进行木马上传。

绕过方法(path%00截断):

  • 将test改为test.php%00aaa,1.php改为1.jpg这样可以通过验证函数。

浅谈权限获取方法之文件上传

  • test.php%00aaa中的%00进行URL编码,选中%00选择【Convertselection】命令,选择【URL】命令,选择【URL-decode】命令进行编码。

浅谈权限获取方法之文件上传

3.文件类型验证

3.1 文件头检测:文件头内容信息(如gif89a)

不同的文件都有特定的文件头格式,开发者通过检查上传文件的文件头检测文件类型,但是这种检测方式同样可以被绕过,只要在木马文件的头部添加对应的文件头,这样既可以绕过检测又不影响木马文件的正常运行。

常见的文件头如下:

JPEG  0xFFD8FF

PNG0   x89504E470D0A1A0A

GIF    47 49 4638 39 61(GIF89a)

绕过方法:

  • 更改头部信息达到欺骗,如在木马的头文件中添加图片文件的文件头即可绕过检测。

GIF89a

?>

  • 制作图片马

直接在图片中插入一句话木马,进行上传。———利用文件包含原理。

使用cmd命令将一张正常图片 1.jpg 与一个包含一句话木马的 a.txt文件,合成一个新的test.php木马文件。

cmd命令: copy 1.jpg/b+a.txt test.php。

3.2  Content-Type检测

Content-Type用于定义网络文件的类型和网页的编码,用来告诉文件接收方将以什么形式、什么编码读取这个文件。不同的文件都会对应的不同的Content-Type,比如jpg文件的Content-Type为image/jpeg,php文件的Content-Type为application/octet-stream。Content-Type是在数据包的请求包头中,开发者会通Content-Type的类型判断文件是否允许上传。

绕过:Content-Type的类型可以通过抓包篡改,这样就可以通过抓包修改数据包的Content-Type来绕过Content-Type判断。

MIME:可以通过判断类型猜测文件后缀名,利用抓包工具将Content-Type进行篡改,如改为image/pjpeg、image/jpeg、image/gif、image/png四个中的一个即可绕过过滤。

4. 内容及其他

4.1 逻辑安全:条件竞争(相当于系统占用)

定义:竞争条件是指多个线程在没有进行锁操作或者同步操作同时访问同一个共享代码、变量、文件等,运行的结果依赖于不同线程访问数据的顺序。先将文件上传到服务器服务器按照规则对图片选择保存与删除,漏洞点在于文件在保存到服务器之前并没有进行合法性的检查,虽然保存后进行了文件的检查,但是通过竞争条件漏洞,通过上传有写文件功能的木马,在删除木马之前访问已经上传的木马,就可以写入新的木马。

绕过:将文件上传到服务器后,我们就不断进行文件路径访问,由于条件竞争,就会达到上传Webshell的目的,漏洞利用就是发送请求通过不断上传内容,这样的访问会生成新的木马文件,然后再发送另一个请求不断访问此文件,如果竞争条件漏洞利用成功就会生成新的木马。

4.2 目录命名 

绕过:通过添加/.后缀让服务器识别文件为文件夹形式,达到上传的目的,如 -x.php/.

5.其他漏洞

脚本函数漏洞-cve

CVE-2017-12615 

CVE-2015-5254

CVE-2019-2618

......

这些漏洞网上都有利用教程,感兴趣的师傅可以去查阅一下资料。

6.中间件解析漏洞

6.1 IIS 6.0+解析漏洞

解析漏洞快速判断,/.php看是否有乱码,有则存在,无则不存在。

6.1.1 以文件夹执行

正常文件名:image/aa.jpg。

绕过:image.asp/aa.jpg  aa.jpg就会被当作asp解析。

6.1.2 以文件执行

正常文件名:image.jpg。

绕过:image.asp;.jpg或xxx.asp;xxx.jpg 此文件会被当作asp执行。

asp可以换做php 如果换了php,那么就可以当作php执行。

7.WAF绕过

要想绕过WAF,我们需要了解哪些参数可以修改,如:

  • Content-Disposition:一般可修改。
  • name:表单参数值,不能修改。
  • filename:文件名,可以修改。
  • Content-Type(文件自带类型):文件MIME,视情况更改。
  • waf绕过的核心就是在可以修改的参数名后不断修改测试,尝试绕过。

常见绕过方法:

7.1 数据溢出(垃圾数据填充)

利用WAF检测上限,添加大量垃圾数据,让其匹配不到,类似于溢出漏洞,一般可在上传参数后面添加干扰数据,垃圾数据和参数之间要记得添加;,否则数据包会报错。

7.2 符号变异('";)

利用程序开发漏洞,对数据包中上传参数中的符号进行替换,添加、删除,达到上传目的。如

如x.jpg;.php 分号代表一个数据的结束。

7.3数据截断(%00;换行)

文件后缀名后加个%00(空格)截断,x.php%00.jpg 。

换行(类似于程序中n)和数据分块传输差不多,如:

  • x
  • p
  • h
  • p

数据包其实识别的是x.npnhnp。

7.4 重复数据

相当于函数中的递归 循环,将参数在数据包中写多次原理跟垃圾数据也十分类似。

8.防御

  • 部署宝塔,waf等安全产品。
  • 对上传的内容进行严格多次校验。
  • 对文件内容进行完整性检测。
本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
业界资讯
相关文章 更多
PDF转TXT操作步骤与转换后内容核对指南
PDF转TXT操作步骤与转换后内容核对指南

本文详细介绍使用在线工具将PDF转换为TXT的操作流程,涵盖从文件上传、格式转换到结果下载的全过程。重点讲解转换后如何核对段落顺序、检查乱码与缺字,以及处理扫描版PDF的识别问题,确保导出文本准确无误。

JSP实现文件上传功能
JSP实现文件上传功能

文件上传在Web开发中算是高频需求了,JSP配合Servlet实现时,有几个关键点很容易踩坑。下面就把完整流程拆开来讲,从依赖包到页面再到后台处理,一步步说清楚。 一、准备部分 需要两个JAR包:fileupload.jar 和 io.jar。构建好路径后就可以继续了。 二、页面部分 学号: 姓名:

input的accept属性让文件上传安全高效
input的accept属性让文件上传安全高效

HTML的accept属性可在文件选择器中自动过滤不支持的文件类型,减少用户误选,从而降低前端校验代码量,提升上传体验。但该属性仅用于优化用户体验,不能替代后端安全验证,必须结合服务器端校验确保文件安全。

如何修复Safari浏览器在执行大规模文件上传时中断的问题?
如何修复Safari浏览器在执行大规模文件上传时中断的问题?

Safari上传大文件中断源于WebKit内存映射与macOS内存压缩策略冲突。解决措施包括:改用原生表单提交绕过JS内存分配、禁用WebKitMemoryPressureRelief、启用传统上传通道及清理上传缓存,其中前两种方案效果显著。

Safari浏览器如何解决网页中Input File文件上传框无法选择多个文件?
Safari浏览器如何解决网页中Input File文件上传框无法选择多个文件?

iOSSafari16.4及以上版本支持inputfile多选,旧版本需移除multiple属性并分批上传,或动态检测版本启用。隐藏input应改用clip方式,避免display:none。同时确保正确遍历files对象及FormData同名append。

ThinkPHP 8.0 文件上传 OSS 整合教程【保姆级】
ThinkPHP 8.0 文件上传 OSS 整合教程【保姆级】

ThinkPHP8.0整合阿里云OSS上传采用配置驱动机制,通过安装SDK、设置环境变量、启用OSS磁盘实现统一调用。控制器上传需校验文件类型,用uniqid重命名并按日期分目录存储,防止路径穿越。可选直传签名用于大文件前端上传。

坚果云手机端怎么使用?移动端文件上传与管理教程
坚果云手机端怎么使用?移动端文件上传与管理教程

坚果云App上传入口集中在首页“+”号、相册标签页或系统分享、微信小程序。批量传照片建议用相册入口,仅支持jpg/png/heic;微信小程序可快速上传聊天文件,限100MB内。管理文件可长按或滑动操作,删除即永久清除,需提前开启历史版本。

如何保证ThinkPHP文件上传名的唯一性_哈希防同名覆盖冲突机制解析
如何保证ThinkPHP文件上传名的唯一性_哈希防同名覆盖冲突机制解析

文件上传时的文件名冲突,看起来是个小问题,但真遇上并发请求或者重复上传同一张图,就会发现随手拼的uniqid()或时间戳根本不够用——两个请求几乎同时进来,文件名一模一样,后传的直接覆盖前传的,连个预警都没有。真正能扛住这种场景的做法,是基于文件内容计算哈希,再配合目录分级存储。取md5_file(

ThinkPHP文件上传失败_ThinkPHP文件上传处理说明【解答】
ThinkPHP文件上传失败_ThinkPHP文件上传处理说明【解答】

ThinkPHP文件上传失败多因PHP配置未开启、表单enctype遗漏或临时目录问题。排查需检查$_FILES、file_uploads、post_max_size与upload_max_filesize设置,确认目标目录权限及临时目录可写。验证异常需使用正确的ValidateException命名空间捕获。

PHP大文件上传分片与进度实现
PHP大文件上传分片与进度实现

答案:通过调整PHP配置、实现分片上传和进度显示,可稳定处理大文件上传。具体包括修改max_execution_time、upload_max_filesize和memory_limit等参数;前端使用FileAPI将文件切片并携带标识信息逐片上传;后端接收分片并暂存,最后合并为完整文件;利用XMLHttpRequest.upload.onprogress事件监听上传进度,并结合分片状态计算整体进度;同时建议生成唯一文件ID、校验MD5、设置清理机制与权限验证以增强安全性和可靠性。

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师
macOS

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

WINDOWS 更多
Windows 10
Windows 10
Windows

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘
Windows/macOS/iOS/Android

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。