-
2022-02-21 16:27:35
文章目录
一、文件上传
概念:文件上传攻击是指攻击者利用Web应用对上传文件过滤不严的漏洞,将应用程序定义类型范围之外的文件上传到Web服务器,并且此类文件通常为木马,在上传成功后攻击者即可获得当前文件的webshell。
攻击者的目标是取得当前Web服务器的权限,如果通过Web层面展开攻击,那必须将攻击者的木马插入到Web系统中,并在服务器端执行,这个过程就是对Web服务器进行文件注入攻击。
1、上传攻击的原理
假设目标服务器为用PHP语言构建的Web系统,那么针对上传点就要利用PHP木马,并且要求在木马服务器以后缀名为.php进行保存,因此上传木马的过程就是在Web系统中新增一个页面,当木马上传成功后,攻击者就可以远程访问这个木马文件,也就相当于浏览一个页面,只不过这个页面就是木马,具备读取、修改文件内容、连接数据库等功能。
上传漏洞存在的前提是:存在上传点且上传点用户可以独立控制上传内容,同时上传文件可被顺利解析。2、上传的标准业务流程
整个过程可分为三大步骤:
- 客户端上传功能
- 中间文件上传功能
接收客户端提交的HTML表单
将表单内容存储为临时文件
根据安全规范,将临时文件保存为正式文件 - 服务器存储及调用
客户端上传表单基本通过HTML格式中的 < from > 实现
from action定义了表单上传目标界面为upload_file.php,采用提交的方式由method定义,值为post,定义提交的lexicon为multipart/from-data(如果不指定由浏览器自行判断)<form action="upload_file.php" method="post" enctype="multipart/form-data">
3、上传攻击的条件
攻击者利用上传功能的目的是将Web木马上传至服务器并能成功执行,也难辞,攻击者成功实施文件上传攻击并获得服务器Webshell的前提条件如下所示:
- 目标网站具有上传功能
- 上传的目标文件能够被Web服务器解析执行
- 知道文件上传到服务器后的存放路径和文件名称
- 目标文件可被用户访问
二、上传检测绕过技术
1、客户端JavaScript检测及绕过
1.1 防护思路
如果用户上传文件名非法,则不允许通过,如果合法则正常执行上传流程。简称JS防护。
在网站部署JavaScript脚本,Js脚本会对用户表单提交的数据进行检查,如果发现非法后缀,如.php,.jsp等,则直接终止上传。1.2 绕过方式
- 浏览器可以通过禁用JS方式,禁止防护脚本执行,导致防护功能直接失效。
- 如果这种防护手段在HTTP数据包发出之前执行完毕,那攻击者可使用Web代理类攻击,抓取含有上传表单的HTTP数据包,并在包中修改为预想的后缀,如.php。
- 直接删除代码里onsubmit事件中关于上传时验证文件的相关代码。
onsubmit事件:将用户上传的后缀名提交到lastname函数中进行后缀名匹配测试。 - 伪造后缀绕过JS检查
采用JS进行过滤的防护方式的初衷时减少服务器的性能消耗,同时实现防护功能。
缺陷是:服务器要相信用户浏览器提价到西悉尼正确,由于检测是在客户端进行的,所以会存在很大的安全隐患,如用户随意修改本地信息及配置,当值防护手段失效,且绕过手段较为成熟。2、服务器端MIME检测及绕过
2.1 防护思路
在HTTP协议中,会利用Content-Type表示本次上传的内容类型,如图片格式文件Content-Type的值为image/jpg、image/gif、image/png。服务器接收到HTTP包后,会先判断Content-Type是否合法,默认情况下,Content-Type由浏览器自动生成,并且在HTTP包的文件头进行传输。
2.2 绕过方式
HTTP 抓包后修改Content-type的值,可利用BurpSuite进行抓包。
总体来说MIME在服务器端检测,比JS在客户端检测效果略好一点,但由于Content-Tpye类型依然由客户端浏览器生成,因此实际上MIME还是处于用户可控状态(修改文件头,修改Content-Type等均可),因此MIME的防护效果依然较差。
3、服务端文件扩展名检测及绕过
根据以上描述,只能在服务器端进行全面检查,且不能信赖由服务器浏览器生成并提交的数据,有效的防护思路为:
- 当服务器接收到上传信息后,校验文件名是否合法。
- 完全不信来用户所上次文件的后缀名,在用户上传文件之后,重新给文件添加用户名。
3.1 防护思路
主要通过文件后缀名黑/白名单过滤,服务器采用针对文件名的黑/白名单检测机制。
上传时,在转存过程中利用预先设定的会缀名保存文件来避免非法后缀名的问题。
但从防护效果来看,白名单效果好于黑名单,但在实际应用中,白名单由于防护过严,常常无法满足实际业务需要。总结,推荐以下几种手段:
- 文件后缀名重命名
- 白名单过滤
- 黑名单过滤
$deny_ext=array('.php'); //黑名单后缀名(举例) $file_ext=strrchr($_FILES['upfile']['name'],'.'); //获取后缀名 if(!in_array($file_ext,$deny_ext)){ //对比 ...... }
3.2 绕过方式
尝试未被过滤的文件名,利用截断漏洞等实现木马上传。
绕过思路为:构造非限制条件,以欺骗服务器,从而达到绕过的行为。针对黑名单:
- 多重测试过滤文件名
如:直接上传php文件,会报类型错误,尝试用php5后缀。 - 判断是否存在大小写绕过
中间件会区分文件大小写,但操作系统并不会区分后缀名大小写。 - 特殊文件名构造(Windows下)
可用Burpsuite代理劫持HTTP包,并手动在相关字段出添加“_”下划线,由于Windows不识别上述后缀机制,会自动去掉“ _ ”、“ . ”等符号,从而使攻击者可绕过黑名单防护规则。 - %00截断
当C语言在执行过程中遇到%00,会被当做终止符,因此程序会自动截断后续信息。如:shell.php .jpg(注意.jpg前有空格)。
针对白名单:
- 特殊文件构造(参考黑名单防护)
- 0x00截断(参考黑名单防护)
4、服务器端文件内容检测及绕过
4.1 防护思路
- 通过检测上传文件的文件头判断当前文件格式
读取文件开题部分的数个字节,判断文件头与文件类型是否匹配,通常情况下,通过判断前10个字节基本上就能判断出一个文件的真实类型。 - 调用API或函数对文件进行加载测试,常见的使图像二次渲染
关键函数imagrcreatefromjpeg从jpeg生成新的图片,这也就导致在二次渲染的过程中,插入的木马无法被渲染成像素,在渲染过程中被丢弃,导致木马执行失效,针对图像二次渲染会给服务器带来额外的性能开销。 - 检测上传文件是否为图像文件内容
可利用php中的getimagesize()函数实现,获取目标图片的高度宽度像素值,再与本地获取到的图片信息进行比对,如果相同则保存。
4.2 绕过方式
- 文件头检测
修改文件头,对前二十字节进行替换,后面再插入一句话木马,即可实现对文件内容检测的绕过。 - 文件二次渲染(极难)
基于数据二义性,即让数据即是图像数据也包含一句话木马
对文件加载器进行溢出攻击
三、上传流程安全防护总结
攻击者利用上传漏洞的主要目标是:
- 上传木马
- 让木马按照Web格式进行解析
在防护手段可用的思路有:
- 限制高位扩展名上传
利用黑名单确定后缀名是否合法
根据应用特点重新对上传文件进行后缀名重命名 - 显示高危文件内容出现
利用内容检索来检测是否存在非正常内容
确认图片格式与上传文件内容是否对应
在图像加载时重新渲染,避免非图像内容出现
更多相关内容 -
web文件管理系统_实用开源项目,基于Web的文件管理系统——DocSys
2020-12-09 18:00:16介绍DocSys是国内Gitee上开源的一个基于Web的文件管理系统,DocSys实现了日常本机文件管理的操作,某些方面比本地更加实用。DocSys基于开源协议GPL 2.0!DocSys主要用于企业或个人的文件存储管理,方便随时查看和...介绍
DocSys是国内Gitee上开源的一个基于Web的文件管理系统,DocSys实现了日常本机文件管理的操作,某些方面比本地更加实用。DocSys基于开源协议GPL 2.0!DocSys主要用于企业或个人的文件存储管理,方便随时查看和统一管理。
仓库地址
https://gitee.com/RainyGao/DocSys
功能特性
- 支持文件权限管理和历史版本管理
- 支持文件在线预览和在线编辑
- 支持压缩文件在线解压预览
- 支持文件在线分享
- 支持重复文件的秒传和大文件的断点续传
- 支持文件名和文件内容搜索
- 支持Markdown格式的文件备注
特点
- 操作简单
本地化操作习惯:查看、编辑、复制、粘贴、新建、删除、拖拽移动。
- 使用方便
电脑手机自适应设计:随时随地,想看就看,想改就改。
- 安全高效
支持增量版本控制、集中式权限管理,支持在线编辑和文件备注,安全且高效。
- 代码开源
GPL2.0开源协议:支持系统二次开发和功能定制。
- 跨平台支持
Linux,Windows,Mac三大平台
主要应用场景
- 文件管理系统
- 日志管理系统
- 网页版SVN仓库
- 网页版GIT仓库
- 电子书
- 接口管理系统
- 远程桌面管理
- 自动备份软件
系统页面截图
截取部分页面的截图
总结
Docsys是一个非常实用的文件管理系统,由于是Web端,可以随时随地使用,历史版本功能很方便的对文档进行追根溯源,在线编辑有效的提高管理效率,还提供除文件管理以外的高效办公能力,非常值得推荐!
-
ps Adobe 存储为 Web 所用格式
2021-08-01 13:42:19ps导出为web旧版时,出现“Adobe 存储为 Web 所用格式” 官方给出了解决办法,如下ps导出为web旧版时,出现“Adobe 存储为 Web 所用格式”
官方给出了解决办法,如下
-
在web中打开SVG格式文件
2020-10-10 20:58:53在web网页中打开SVG格式文件 浏览器:QQ浏览器、火狐浏览器、谷歌浏览器均可 效果图: 第一步:打开 QQ浏览器; 第二步:将 .svg 文件拖入网页栏; 第三步:打开拖入的网页即可。展开全文 -
PS教程:图片存储为Web所用格式优化详解
2021-06-14 05:58:49【PConline 欣赏】当需要把图片存储为网页所用格式时,为了确保图片无卡顿地清晰显现,考虑它的品质和大小总是很必要...实际上,保存为网页格式是一项平衡艺术——你必须在图片品质和介质的文件尺寸之间做好平衡,以... -
web文件上传
2018-07-12 10:38:39今天在复习Web 的时候,做个一个文件上传的小Demo,发布一篇博客,记录一些笔记要点。和web做上传的一些注意事项。这个Demo 解决了Web上传问题中的以下问题: 1.实现web开发中的文件上传功能,需要完成2个步骤操作: ... -
CTFshow web入门——文件上传
2022-03-10 20:48:25Web 151 -
CTFshow——web入门——文件上传
2022-02-07 22:06:21修改上传格式为php,上传一句话马,蚁剑连接得flag web152 后端校验 上传一句话,png文件抓包 修改文件名后缀为php,访问被解析,蚁剑连接得flag。 web153 打开发现/upload下存在index.php文件,我们可以利用.user.ini... -
【CTFshow】文件包含web78-web81
2022-02-25 20:03:15文件包含web78-web81web78web79php://input伪协议data协议web80php://input伪协议日志包含绕过web81web82(没完全理解) web78 if(isset($_GET['file'])){ $file = $_GET['file']; include($file); }else{ ... -
web文件上传下载原理浅析
2017-12-11 10:58:36一、web文件上传浅析 现在有很多Web程序都有上传功能,实现上传功能的组件或框架也很多,如基于java的Commons FileUpload、还有Struts1.x和Struts2中带的上传文件功能(实际上,Struts2在底层也使用了Commons ... -
web地址的URL一般格式为
2021-06-13 06:06:42为Web地址的URL的一般格式为协议名://计算机域名地址[路径[文件名]]什么是URL?它的格式是什么?URL的定义 统一资源定位符(URL,英语Uniform Resource Locator的缩写),它的英文简称叫做URL。也被称为网页地址,是... -
常用web图片格式:gif、jpg、png、webp
2020-08-23 21:12:501.GIF(87年):使用无损压缩,支持256中颜色(一般叫8 bit彩色),支持单一透明色;... 优点 JPEG/JFIF是最普遍在万维网(World Wide Web)上被用来储存和传输照片的格式。JPEG在色调及颜色平滑变化的 -
photoshop保存web格式不能显示该怎样解决
2021-06-13 04:18:42在photoshop里面处理完图片保存有的时候会选择web格式,可是保存完了发现不能显示怎么解决?尝试了多次还没有找到解决方法的你,可以看看小编为你推荐的关于保存web格式不能显示的解决方法,想必会对你有帮助!photo... -
xml文件格式
2021-10-02 20:04:38xml文件分为文件头和文件体 文件头 文件头:由xml生命和dtd文件类型声明组成。其中dtd文件类型声明是可以省略的。 <?xml version="1.0" encoding="gb2312"?> 文件体 文件体中包含的是文件的内容,xml元素是... -
web安全之文件上传漏洞
2019-06-03 20:11:05一、文件过滤的方法 文件头校验:JPEG ==>FF D8 FF E0、PNG==>89 50 4E 47 0D 0A 1A 0A 文件类型校验:HTTP头中的content/type,互联网媒体类型,也叫做MIME类型。 HTML文档标记: text/html; 普通ASCII... -
linux查看文件格式
2021-02-20 15:05:191.查看文件编码 1.vim 查看 vim 打开文件,切换到底线命令模式,在最底一行输入...在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式 :set fileencoding=utf-8 1https://zhidao.baidu.com/question/22961436. -
解决ps“储存为web和设备所用格式”灰色不能使用的方法
2021-06-13 04:16:59在排版之后就需要将它保存为web格式,想要保存为这种格式就需要使用到切片功能。但是很多新手用户在使用这个功能的时候会出现切片无法使用的情况。有多种原因会造成这样的情况,大家可以按照下面的方法来进行排查!... -
web html页面显示autocad等dwg格式图形文件方法
2018-06-16 19:47:222中思路,一种是转换后显示,比如vectordraw,将dwg转换成vds格式,再在web中显示,支持图层啊之类。还有CADViewer JS是转成SVGA,pdf等格式,然后用web浏览……其实转换格式也是一个办法,用golang在后端,当有请求... -
ASP.NET CORE WEBAPI文件下载
2020-04-13 09:48:39最近要使用ASP.NET CORE WEBAPI用来下载文件,使用的.NET CORE 3.1。考虑如下场景: 文件是程序生成的。 文件应该能兼容各种格式。 浏览器可以感知进行下载。 准备 经过简单的调研,得到以下结论。 ... -
PS中为什么没有存储为web格式?
2021-06-14 02:14:22回答:当需要把图片存储为网页所用格式时,为了确保图片无卡顿地清晰显现,考虑它的品质和...实际上,保存为网页格式是一项平衡艺术——你必须在图片品质和介质的文件尺寸之间做好平衡,以便满足你的个人需求。在速... -
Web of Science 导出的.ciw格式文件导入到Endnote
2019-01-17 23:52:16HCI,CPCI-S) 数据库搜索的文献导出为Endnote支持的格式之后,生成的是扩展名为*.ciw格式的文件。为此,很多人将其导入到Endnote中时不知应该选用哪个filter而一筹莫展。 其实很简单,这个filter叫:ISI-CE。在... -
解决PS中:无法将图片存储为Web存储格式,及如何将图片大小修改成10KB的问题
2022-03-16 23:58:04在将图片转化成 10KB 大小时,出现将存储为Web存储格式时,页面显示无法操作; 3、解决问题: A、找到菜单按钮,打开运行: B、运行输入框内输入regedit,打开文件位置: C、找到120.0,位置所在: 地址为:HKEY... -
web页面 js 加载和显示Markdown .md文件总结
2019-06-24 12:41:37Markdown文件是当下比较流行的内容展示格式,简书、github等都推荐使用md文件来展示内容。本文讨论web页面如何加载和展示markdown md文件,并提供了一个来自有道的markdown web编辑、预览器。 -
.NET5 WebAPI 上传、下载文件,基于 IFormFile
2021-04-09 12:50:38上传端(客户端),通过文件流的方式 进行上传调用接口 POST MultipartFormDataContent构造参数和文件对象 public async Task<ActionResult<dynamic>> UploadTestAsync() { var fileAdd = @"D:\... -
openwrt下web方式升级固件提示文件格式错误
2016-09-08 15:54:49最近公司产品使用openwrt,其中在使用openwrt的web方式升级内核和文件系统时(即sysupgrade固件)时,发现校验文件时提示The uploaded image file does not contain a supported format. Make sure that you choose ... -
ctfshow-web入门 文件上传篇部分题解
2021-03-06 16:25:33ctfshow文件上传web151-152web153(.user.ini绕过).user.iniweb154-155(短标签绕过+.user.ini绕过)短标签绕过web156web157-159web160(日志包含绕过)web161web162-163(session文件包含+条件竞争)条件竞争web164(png... -
emn格式文件
2021-03-18 15:23:46常用的 IDF 文件格式,如 emn,emp,brd,bdf 等。 2. 走线文件格式:GERBER,ODB++。 3. 当器件非常多时,通过 CSV 文件导入功耗、热阻等属性。 4. 简化的 ......3. 将该电路板,另存为*.Brd 格式。此时会生成两个文件:扩展... -
windows10打开.webarchive文件
2020-04-27 14:20:53因为没见过这样的文件,上网搜搜了一下,原来是safari浏览器保存网页到本地的格式。 试了网上说的好多种方法,下载什么软件,都不好使。 看到一个方法说把后缀名.webarchive改成.html。于是就试了一下,发现了一段... -
Java 对上传文件后缀格式的校验
2019-05-09 11:36:15在web开发中,我们经常遇到一些上传文件的功能, 我们在对文件进行校验时,除了对文件大小进行校验外,还需要对文件的格式进行校验. 在对格式校验的时候要考虑到用户或者攻击者对文件后缀进行的改变,导致上传的文件并... -
webarchive文件转换成htm文…
2017-05-04 10:32:13原文地址:webarchive文件转换成htm文件作者:xhbaxf Mac OS X系统带有文件转换功能,可以把webarchive文件变成html文件。方法是: Step 1: 建立一个文件夹,把你的webarchive文件放入文件夹内。 Step 2 在...