分享好友 最新动态首页 最新动态分类 切换频道
文件上传漏洞
2024-12-28 22:09

在文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。
文件上传漏洞对Web应用来说是一种非常严重的漏洞。一般情况下,Web应用都会允许用户上传一些文件,如头像、附件等信息,如果Web应用没有对用户上传的文件进行有效的检查过滤,那么恶意用户就会上传一句话木马等Webshell,从而达到控制Web网站的目。

 

诱因:服务端脚本语言未对上传的文件进行严格验证和过滤

 

 

 

 

 

  1. 相册、头像上传
  2. 视频、照片分享
  3. 附件上传(论坛发帖、邮箱)
  4. 文件管理器:编辑器

 

 

  1. 任意上传
  2. JS验证:能在可控制台能改
  3. MIME-type检测
  4. 文件头检测
  5. 文件扩展名黑白名单检测
  6. 文件加载检测

 

 

 文件上传漏洞分类图解

 

 

任意文件上传:

没有任何校验

绕过JS上传:

校验发生在前端

绕过后端校验上传:

校验发生在后端

绕过文件类型校验

绕过扩展名校验

绕过文件头校验

解析漏洞上传:

中间件解析漏洞

其他类型

 

  1. 未过滤或Web前端过滤被绕过

  2. 文件检测被绕过

  3. 中间件解析

  4. 不完善的黑名单扩展名

  5. 文件路径截断

  6. HTTP不安全方法(PUT协议)

 

 

未过滤是没有对文件上传格式做限制,前端绕过是指当前页面中js对上传文件做限制,可通过HTTP抓包工具进行改包上传。

这类相对好理解,前部分是可以任意上传文件,后部分是因为只是前端限制,只用上传可以上传的文件,然后抓包对后缀进行修改就可以成功。

 

检测CONTENT-TYPE内容(判断是否为特定数据类型),检测文件头,检测文件扩展功能相关内容。

 

 

 

这里看到让我们上传一个php文件,但是上传后显示[非图片文件]

这里我使用burpsuite进行截包然后重放。

 

发现并没用但是将Content-Type:改为 image/jpeg则成功上传

 

 

 

这是php的一串检查图片代码,使用getimagesize函数无法判断其图片是无效的

我们只需要再上传的文件头加入GIF89a 便可以欺骗服务器认为我们的文件是图片。

这里举几个常见的文件头对应关系:

(1) .JPEG;.JPE;.JPG,"JPGGraphic File"

(2) .gif,"GIF 89A"

(3) .zip,"Zip Compressed"

(4) .doc;.xls;.xlt;.ppt;.apr,"MS CompoundDocument v1 or Lotus Approach APRfile"

 

由于中间件本身的缺陷,再对上传文件进行解析时会出现一些不可预料的错误从而导致被利用进行上传绕过。

 

第一种,当建立*.asp、*.asa格式的文件夹时,其目录下任意文件都会被iis当作asp文件来解析。

例如:创建xxx.asp目录那么在xxx.asp目录下如果存在1.txt文件会被当做1.asp文件来执行。

第二种,在IIS6.0下分号后的不被解析。

例如:xxx.asp;.jpg会被服务器看作为xxx.asp文件

IIS7.0/7.5中:任意文件名/任意文件名.php就会被解析为php

在Apache 1.x和Apache 2.x中存在解析漏洞。

Apache在解析文件时有一个原则,当碰到不认识的扩展名时,将会从后向前解析,直到碰到认识的扩展名为止,如果都不认识,则会暴露其源代码。

如:1.php.rar.sa.xs就会被解析为php,可以据此来绕过文件名限制

在默认Fast-CGI开启的情况下上传一个xxx.jpg,内容为<?php eval($POST[‘cmd’])?>的文件然后访问xxx.jpg/.php在该目录下就会生成一句话木马文件xxx.php。

当php的配置文件中的选项cgi.fix_pathinfo= 1开启时,当访问http://www.example.com/xxx.txt/xxx.php时,若xxx.php不存在,则PHP会递归向前解析,将xxx.txt当作php脚本来解析

 

因为程序员在开发文件上传时加入了不允许上传类型的黑名单,但是黑名单内容并不完善,这时候我们可以利用一些其他扩展名绕过黑名单限制,这里就不进行详细的赘述了,这里列举一些可用于绕过的文件名:

  • PHP: php2、php3、php5、phtml、pht
  • ASP: aspx、ascx、ashx、cer、asa
  • JSP: jspx

 

利用条件:php版本小于5.3.4,php的为OFF状态

详情:CVE-2006-7243

影响版本:0.5,0.6,0.7<=0.7.65,0.8<=0.8.37

Nginx在图片中嵌入PHP代码然后访问xxx.jpg%00.php来执行其中的代码

部分上传功能在对后缀名进行验证时存在缺陷,导致在文件写入过程中产生错误,导致可通过十六进制截断符(%00)对后缀进行截断。

例如:

 

上传处理时将对检测到%00(这里需要对%00进行urldecode)并对.jpg字符串进行截断删除,最终文件名为xxx.php导致可成功上传动态脚本到服务器上

 

WebDav是一种基于HTTP1.1协议的通信协议,它扩展了HTTP协议。在开启WebDav后若支持PUT、Move、Copy、Delete等方法,就会存在安全隐患。

 

测试流程:

首先提交options 请求看服务器是否支持此类方法

OPTIONS /HTTP/1.1

Host:www.example.com

 

通过PUT方法上传脚本文件

PUT /xxx.txtHTTP/1.1

Host:www.example.com

Content-Length:30

 

通过move或者copy方法移动文件

COPY /xxx.txtHTTP/1.1

Host:www.example.com

Destination:http://www.example.com/cmd.asp

 

http://blog.csdn.net/u011499747/article/details/78108240

 

 

很多时候网站检测的过于严格,我们只能上传白名单的文件格式,这时我们可以尝试去看看网站是否存在一些文件包含漏洞,结合我们上传的文件进行联合利用。

 

之前我遇到过这样一个网站,就是黑白名单共存。该网站的架构是这样的,在后台有个地方是可以设置上传的白名单内容,在代码层面又含有黑名单检测。当时猜测他网站的判断是这样的:

if(正则匹配在白名单中==正则匹配不在黑名单中)

       上传成功

Else:

       上传失败

于是我清空了白名单的内容,然后上传了在黑名单中的文件格式于是,代码false==false 上传成功。

 

很多时候我们通过各种源码泄露,例如:.svn、.git、网站备份、任意文件下载等等获取到了网站的源码,我们可以进行代码审计寻找文件上传的接口,我之前测试过的很多网站他们的代码都有一个api接口用来处理上传的文件,而黑白名单仅仅是进行了上传检测,我们可以在本地直接构造一个上传页面然后调用这个api接口直接上传文件解析。

 

由于windows会将文件的后缀中的空格以及点进行过滤,如果遇到是黑名单校验的,如限制不允许上传PHP文件,而系统又是windows系统,那么我们可以上传xx.php ,或者xx.php.,通过这种方式就可以绕过黑名单检验的文件上传!

 

如果Apache中.htaccess可被执行并可被上传,那么可以尝试在.htaccess中写入:

         <FilesMatch"xxx.jpg"> SetHandler application/x-httpd-php </FilesMatch>

然后再上传xxx.jpg的木马,这样xxx.jpg就可被解析为PHP文件了。

 

 

  1. 客户端检测,使用 js 对上传图片检测,包括文件大小、文件扩展名、文件类型等
  2. 服务端检测,对文件大小、文件路径、文件扩展名、文件类型、文件内容检测、对文件重命名等
  3. 服务器端上传目录设置不可执行权限
  4. 检查网站有没有文件解析漏洞和文件包含漏洞
  5. 将文件上传到单独的文件服务器,并且单独设置文件服务器的域名

 

 

最新文章
樟木头网站推广公司分享如何丰富网页内容
增加网站流量是一个综合性的任务,涉及多个方面的策略和优化。以下是一些具体且有效的方法:一、搜索引擎优化(SEO)(1)关键词优化: 进行深入的关键字研究,找出与网站内容相关且搜索量高的关键词。在标题、内容、元描述和URL中合理使用
百度蜘蛛池出租:神马蜘蛛池租用选哪家?揭秘高效SEO推广的秘密武器
本文目录导读:了解神马蜘蛛池的作用神马蜘蛛池租用选哪家推荐神马蜘蛛池租用服务商随着互联网的不断发展,搜索引擎优化(SEO)已成为企业提升品牌知名度、扩大市场份额的重要手段,而神马蜘蛛池作为一种高效的SEO推广工具,受到了广大企业
谷歌SEO对比:1月新博客为何胜过1年旧博客,Onpage因素解析?
在SEO这片浩瀚的海洋中,我时常被各种现象所吸引,尤其是那些看似不合常理却又真实存在的案例。比如,一个仅建立1个月的新博客,在谷歌搜索中的排名竟然超过了一个运营了1年的老博客。这背后,Onpage SEO的因素究竟起到了怎样的作用?带着
大语言模型 AI 辅助编码使用过程体验报告(Github Copilot、Cursor)
在过去一周多的时间里,我在 ChatGPT 的协助下,生成了做一个简单编辑器的产品文档、技术方案文档,然后在这个基础上,进行程序的编码。为了更全面地感受 AI IDE 对研发过程的影响,我特意选择了一个我
朋友圈被领导点赞成认定加班证据,公司赔了1.8万
【朋友圈被领导点赞成认定加班证据,公司赔了1.8万】12月10日,据上海市总工会:小杨于2016年3月与北京某科贸有限公司签订了期间为2016年3月至2019年3月的劳动合同。2018年7月11日,小杨申请7月16日休年假,部门主管以“7月为公司走店重要
清华同方电脑 云终端
以创新的成本优势开展业务运营网络。网络电脑终端机是拖机卡的升级版,它又称为瘦客户机,电脑终端机,它的功用在于一台电脑主机同时分为三十几位用户甚至更多的用户同时使用,每个用户只需备一个键盘,一个鼠标,一个显示器。上网本,平板
百度文心与飞桨协同优化:推理性能提升百余倍,AI进入新阶段
近日,中国信息通信研究院发布的《人工智能发展报告(2024年)》引起了众多关注。报告中指出,随着国产深度学习框架技术的不断发展,尤其是百度飞桨和文心大模型的协同优化,其推理性能提升超过了百余倍,这一成果标志着国产AI技术正在快速
人工智能反叛:可能性、风险与应对措施344
前言:人工智能(AI)的飞速发展引发了人们对于未来人工智能反叛的担忧。本文将深入探究人工智能反叛的可能性、风险以及应对措施,旨在为公众提供全面了解和应对人工智能潜在威胁的知识。人工智能反叛的可能性:人工智能反叛指的是人工智能
竞价推广优化方案,轻松提升业务承接能力!
一、明确目标:首先,我们需要明确竞价推广的目标。我们的目标是提高点击率、转化率和业务承接能力。为了实现这一目标,我们需要制定一套合理的优化方案。二、优化关键词选择:1. 精准关键词:选择与业务高度相关的关键词,确保广告展示给
《手游实时排行揭秘:热门游戏背后的秘密》
标题:《手游实时排行揭秘:热门游戏背后的秘密》正文:随着移动互联网的快速发展,手游市场呈现出一片繁荣的景象。各大手游平台纷纷推出各类精彩纷呈的游戏,吸引了大量玩家。而手游实时排行作为衡量游戏热度的重要指标,成为了众多游戏玩
相关文章
推荐文章
发表评论
0评