iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >文件上传漏洞详解
  • 600
分享到

文件上传漏洞详解

安全web安全 2023-09-10 12:09:02 600人浏览 独家记忆
摘要

1.什么是文件上传漏洞 文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本

1.什么是文件上传漏洞

文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WEBshell等。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解析文件。文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断, 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell!

2.Webshell简介

webshell就是以asp、PHPjsp或者cgi等网页文件形式存在的一种代码执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。

通俗来讲,Webshell是黑客经常使用的一种恶意脚本,其目的是获得对服务器的执行操作权限,比如执行系统命令、窃取用户数据、删除web页面、修改主页等,其危害不言而喻。黑客通常利用常见的漏洞,如sql注入、远程文件包含(RFI)、FTP,甚至使用跨站点脚本攻击(XSS)等方式作为社会工程攻击的一部分,最终达到控制网站服务器的目的。

3.文件上传漏洞原理

文件上传漏洞是指用户上传了一个可执行的脚本文件(php、jsp、xml、cer等文件),而WEB系统没有进行检测或逻辑做的不够安全。

文件上传功能本身没有问题,问题在于上传后如何处理及解释文件。

一般情况下,Web应用都会允许用户上传一些文件,如头像、附件等信息,如果Web应用没有对用户上传的文件进行有效的检查过滤,那么恶意用户就会上传一句话木马等Webshell,从而达到控制Web网站的目的。

存在文件上传功能的地方都有可能存在文件上传漏洞,比如相册、头像上传,视频、照片分享。论坛发帖和邮箱等可以上传附件的地方也是上传漏阔的高危地带,另外像文件管理器这样的功能也有可能被攻击者所利用。

这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等

4.文件上传漏洞攻击详解

<1.前端检测

<1.1原理
在点击上传文件时,游览器还没有向服务器发送请求前对本地上传文件进行的检测,这种检测主要是通过JS代码来检测文件的扩展名是否符合上传要求,并且这种检测可有可无,因为检测代码在用户游览器上运行,非常容易绕过!

<1.2绕过方法

  • <1.2.1 删除或禁用JS检测代码
    删除JS代码必须得能认识JS检测代码,不然怎么删?另外,这种办法不稳定!
  • <1.2.2 抓包改后缀名(最稳妥的方法)

<1.3攻击方法
先在php文件中写入一句话木马,例如:

 eval($_REQUEST[666])?>

接着使用BURP抓包将文件后缀改为.php格式上传!
在这里插入图片描述
<2.黑名单机制
<2.1原理
将危险后缀名写入数组或文件中,当上传文件在黑名单中,则不允许上传!

<2.2绕过方法

  • 尝试修改后缀名
    比如:黑名单中有.php/.jsp/.asp/.aspx等
    可以抓包修改成jspf/asa/cer/php3~5/phtml/exee等;在默认情况下,这些都可以被解析为jsp/php格式!

  • 大小写绕过
    我们可以通过后缀名大小写的方式绕过,除非非常老的Web容器版本会对后缀名大小写有检测,不然都不会区分大小写。
    比如:要上传.php文件可以抓包修改为.pHp/.PHp等
    双写绕过
    对于一些检测到你上传的文件名带有危险字符时,他会自动替换成空。
    例如:会将php替换成空,我们可以抓包把后缀名改成pphphp!

  • 后缀点空绕过
    我们在windows电脑上创建文件时,如果在文件名末尾加上 .或者是空格,它都是会自动忽略或者是删除,在文件上传时也是一样,但是在黑名单中.或者是空格则不会被忽略。
    比如:上传.php文件抓包在后面加上点或空格,即可上传!
    这里有个循环检测机制,黑名单中会循环检测文件末尾的点和空格,可以抓包加上 (‘.空格.’)或者是(‘空格.空格’)来绕过。
    windows文件流绕过
    通俗的理解,就是其它文件可以”寄宿“在某一个文件里,而在资源管理器中却只能看到宿主文件!例如:在这里插入图片描述
    在这里插入图片描述
    只有查看文件流才能知道2.txt!
    所以利用这一特性,在上传文件后面加上::DATA即可绕过!

  • 解析漏洞
    IIS6.0解析漏洞,实际上是IIS6.0的一些特性导致的;

IIS6.0 => windows server 2003 的全版本都默认安装自带IIS6.0(ASP).asp 会被当作asp文件处理.jpg 会被当作jpg文件处理   => 后缀调用的文件asa cdx cer 都会当作asp执行(微软认为不是漏洞,是特殊的默认配置)IIS6.0在处理含有特殊符号的文件路径时会出现逻辑漏洞   例如:特殊符号影响:test.asp;.jpg   test.asp/123.jpg CGI解析漏洞(PHP和Web容器的通信方法)  任何文件后面加/.php

我们只需上传一个asp的一句话木马

<%eval request("cmd")%>

< 3.白名单机制
< 3.1原理
与黑名单机制正好相反,只有在规定条件下才能运行!但是相对而言,白名单机制更加安全些!
< 3.2绕过方法
解析漏洞
.htaccess文件解析漏洞
什么是htaccess?
全称是Hypetext.Assccess(超文本入口) .htaccess也被称为分布式配置文件,提供了针对目录改变配置的方法,在特定的文档目录中放置一个包含一个或多个指令文件,以作用于此目录及其所有子目录!这个功能默认是不开启的!但是伪静态的站一般都会开启这个功能!

AddType application/x-Httpd-php .jpg

这条指令是指.jpg文件会被当作php来解析!攻击时,在上传一句话木马时将文件名改为.jpg上传后,紧接着上传这个文件,.htaccess文件与一句话木马文件上传的先后顺序无影响!
我们直接是无法将文件命名为.htaccess的,这里得使用cmd来命名,在cmd中输入ren 1.txt .htaccess
在这里插入图片描述

%00截断与00截断
在很多网站你上传文件后,会自动重命名,但是当读取到0x00时会认为文件已经结束!
比如:上传一个1.php不行,但是可以1.php%00jpg,读取文件是从前往后的,当读取到%00时就会结束!解析文件是从后往前的,所以它会认为我们上传的文件是jpg格式!
%00实际上和00截断原理是一样的,只不过%00是经过URL编码的,解码之后就是0x00

当上传时碰到POST传参,因为POST传参是不会URL解码的,可以上传1.phpajpg用burp抓包后将a的HEX值改为00即可达到同样的效果!

<4.Content-Type方式绕过(MIME绕过)
<4.1原理
部分Web应用系统判定文件类型是通过content-type字段,黑客可以通过抓包,将content-type字段改为常见的图片类型。

<4.2常见的MIME类型

text/plain (纯文本) text/html (HTML文档) text/javascript (js代码) application/xhtml+xml (XHTML文档) image/gif (GIF图像) image/jpeg (JPEG图像) image/png (PNG图像) video/mpeg (MPEG动画) application/octet-stream (二进制数据) application/pdf (PDF文档)

<4.3绕过方法
用BURP抓包将Content-Type改为允许的类型,如image/gif,从而绕过校验!

<5.文件头检测
<5.1原理
在每一个文件(包括图片,视频或其他的非ASCII文件)的开头(十六进制表示)实际上都有一片区域来显示这个文件的实际用法,这就是文件头标志。我们可以通过16进制编辑器打开文件,添加服务器允许的文件头以绕过检测。
<5.2常见的文件头

GIF:47 49 46 38 39 61 png:89 50 4E 47 0D 0A 1A 0A JPG:FF D8 FF E0 00 10 4A 46 49 46PDF: 25 50 44 46 2D 31 2EZIP: 50 4B 03 04

<5.3绕过方法
在我们编写一句话木马时,在开头处加上上面的文件头,即可绕过!

<6.图片马绕过
<6.1原理
一般文件内容验证使用getimagesize函数检测,会判断文件是否是一个有效的文件图片,如果是,则允许上传,否则的话不允许上传。
<6.2制作流程

copy 1.jpg/b + 1.php/a 2.jpg/b:指定以二进制格式复制、合并文件,用于图像或者声音类文件/a:指定以ascii格式复制、合并文件用于txt等文本类文件

新建文件夹,在文件夹中准备一张图片,再准备一个写有一句话木马的.php文件,最后在cmd中输入上述命令,即可生成图片马!
为了应对对图片内容的检测,可以使用图+马+图的方式生成图片马,这种更加隐蔽一些
例如:

copy 1.jpg/b + 1.php/a 2.jpg  图+copy 2.jpg/b + 1.jpg/b 3.jpg  图片马+

因为这种合成的图片马一般都在尾部,如果有检测就会失效,而图+马+图则可以有效避开尾部检测!
在这里插入图片描述

<7.二次渲染
<7.1原理
在我们上传文件后,网站会对图片进行二次处理(格式、尺寸要求等),服务器会把里面的内容进行替换更新,处理完成后,根据我们原有的图片生成一个新的图片并放到网站对应的标签进行显示。
<7.2绕过方法
可以上传带有一句话木马的gif动图,因为gif比jpg和png的属性要多一些,而且一些基础属性无法改变的,但是在gif中插入一句话木马时要注意插入点,一些插入点会破坏图片!在这里插入图片描述
在这里插入图片描述
还有可以配合条件竞争来绕过,因为二次渲染是先让你的图片上传,之后再检测!
<7.3如何判断是二次渲染
先上传一张正常图片,上传成功后下载到本地,利用16进制编辑器进行对比,看哪些数据被改变,哪些数据改变了!

<8.条件竞争
<8.1原理
条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此,如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生。
<8.2绕过方法
利用图+马生成图片马的方式

file_put_contens('a.php',''

在这里插入图片描述
意思是在他将源文件删除前在网站根目录生成一个a.php文件。

5.防御方法

<1.文件上传的目录设置为不可执行。只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响。

<2.判断文件类型。在判断文件类型时,可以结合使用MIME Type、后缀检查等方式。在文件类型检查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的。此外,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。

< 3.使用随机数改写文件名和文件路径。文件上传如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户能上传,但不能访问。如果应用了随机数改写了文件名和路径,将极大地增加攻击的成本。再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击。

<4.使用安全设备防御。文件上传攻击的本质就是将恶意文件或者脚本上传到服务器,专业的安全设备防御此类漏洞主要是通过对漏洞的上传利用行为和恶意文件的上传过程进行检测。恶意文件千变万化,隐藏手法也不断推陈出新,对普通的系统管理员来说可以通过部署安全设备来帮助防御,例如:图床。

补充

windows忽略大小写,linux并不会忽略大小写,比如访问一个网站,将URL里面文件夹得名字改一个小写字母为大写,如果正常访问那一般是windows,如果访问出现问题一般是linux(快速检测不一定准),另外像文件后缀添加点空来绕过的也仅限于Windows!

00截断在高版本php是不存在的!

CGI解析漏洞在IIS7.0/7.5中也存在,实战中IIS7.X的比较多一些!

图片马制作时尽量选择小的图片,一般做了一个好马可以用很久的!

动态脚本语言不同,他们的一句话木马也是不一样的,可以上网搜,一大堆!

黑盒测试最重要的是试!!


参考文献

有关Webshell的讲解:https://blog.csdn.net/Anakin6174/article/details/115658654

来源地址:https://blog.csdn.net/Y22Lee/article/details/130097724

--结束END--

本文标题: 文件上传漏洞详解

本文链接: https://www.lsjlt.com/news/402288.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 文件上传漏洞详解
    1.什么是文件上传漏洞 文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本...
    99+
    2023-09-10
    安全 web安全
  • 文件上传漏洞
    目录 前言 1.原理 2.类型 3.复现 3.1环境 3.1.1函数介绍 3.2过程 3.2.1客户端绕过 3.2.2服务端绕过         黑名单检查后缀         白名单检查后缀 前言 文件上传漏洞是wb安全中经常用到的一...
    99+
    2023-09-03
    安全 网络 web安全 php
  • web漏洞之文件上传漏洞
    文章目录 一、漏洞原因二、漏洞危害三、漏洞利用1.三个条件2.利用方式3.绕过方式a.绕过JS验证① BP绕过② F12绕过③ 菜刀上传实操 b.绕过MIME-Type验证c.绕过黑名...
    99+
    2023-08-31
    前端 web安全 网络
  • Web安全之文件上传漏洞详解
    一、文件上传漏洞定义 文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理...
    99+
    2023-09-06
    web安全 网络安全 安全架构 网络攻击模型 安全威胁分析
  • 文件上传漏洞 (Part1)
    使用的平台是BWAPP 正常的安装完 bwapp ,在文件上传模块能够成功上传文件,但文件却不可以被保存,原因是images文件夹的权限不够,解决方法: docker exec -it 你的do...
    99+
    2023-09-10
    安全 php web安全
  • PHP文件上传漏洞
    前言  上礼拜一直在搞期中测试和unctf,没啥时间整理,这礼拜继续整理! PHP文件上传基础以及基本上传流程 文件上传前端:  前端部分往往都是表单提交,input 的 type 设置为 file ...
    99+
    2023-09-15
    php 开发语言 前端
  • 文件上传漏洞(全网最详细)
    目录 前言 文件上传漏洞介绍 文件上传漏洞危害 文件上传漏洞满足条件 文件检测流程 CTFSHOW 151关-170关 151关:前端验证绕过 152关:后端校验 Content-Type 校验文件格式 153关:filename字段文件...
    99+
    2023-10-10
    安全 web安全 php
  • 浅谈文件上传漏洞
    前言 一、文件上传漏洞的原理 文件上传漏洞是指用户上传了一个可执行的脚本文件(php、jsp、xml、cer等文件),而WEB系统没有进行检测或逻辑做的不够安全。文件上传功能本身没有问题,问题在于...
    99+
    2023-09-10
    php web安全 安全
  • 文件上传靶场-Nginx文件解析漏洞
    目录 1.靶场漏洞说明 2.漏洞利用过程 1.靶场漏洞说明 靶场地址:http://106.15.50.112:8020/ 一个简单的Nginx文件上传靶场,php配置中将cgi.fix_pathinfo设置为1,如果我们设置一个文件路径...
    99+
    2023-09-25
    php web安全 nginx 网络安全 学习
  • java文件上传漏洞怎么解决
    要解决Java文件上传漏洞,可以采取以下措施: 文件类型白名单过滤:在服务器端对文件上传请求进行检查,确保只接受预期的文件类型。...
    99+
    2023-10-27
    java
  • upload-labs-master文件上传漏洞靶场详解(1-17)
    目录 前言 pass-01 pass-02 pass-03 pass-04 pass-05 pass-06 pass-07 pass-08 pass-09 pass-10  pass-11  pass-12 ...
    99+
    2023-09-16
    php 网络安全
  • 网站漏洞修复之Metinfo 文件上传漏洞
    Metinfo CMS系统被爆出网站存在漏洞,可上传任意文件到网站根目录下,从而使攻击者可以轻易的获取网站的webshell权限,对网站进行篡改与攻击,目前该网站漏洞影响范围是Metinfo 6.2.0最新版本,以及以前的所有Metinfo...
    99+
    2023-06-03
  • dvwa中的文件上传漏洞
    环境: Metasploitable2: 192.168.11.157 dvwa版本:Version 1.0.7 (Release date: 08/09/10) kail机器:192.168.11.156 一、什么是文件上传...
    99+
    2023-09-11
    web安全 dvwa 文件上传漏洞 Powered by 金山文档
  • PHP-nginx-ctfShow文件上传漏洞
    CTFSHOW-文件上传-151到161关卡 151 152-JS验证+MIME Content-Type: image/png 153-JS验证+user.ini https://www.cnblogs.com/N...
    99+
    2023-10-05
    php nginx 安全
  • 文件上传漏洞总结(全)
    文件上传漏洞 凡是存在上传文件的地方,都有可能存在文件上传漏洞,并不是说有文件上传就一定有文件上传漏洞。 原理 这主要看一些文件上传的代码有没有 严格限制用户上传的文件类型,比如,只可以上传.jpg|.png|.gif文件,但是由于代码不严...
    99+
    2023-10-06
    php 安全 web安全
  • 文件上传漏洞通关教程
    原理:应用程序中存在上传功能,但是对上传文件没有经过合法性校验或者检验函数存在缺陷,导致攻击者可以上传木马文件到服务器application/octet-stream pass-01:(前端js+抓包) 上传php文件页面提示不允许上传(前...
    99+
    2023-08-31
    javascript php web安全
  • Dcat Admin文件上传漏洞复现
    Dcat Admin框架 Dcat Admin是一个基于laravel-admin二次开发而成的后台系统构建工具,只需极少的代码即可快速构建出一个功能完善的高颜值后台系统。支持页面一键生成CURD代码,内置丰富的后台常用组件,开箱即用,...
    99+
    2023-09-07
    安全 web安全
  • 【文件上传漏洞】user.ini留后门
    一、什么是.user.ini? php.ini是php默认的配置文件。其中包含四种配置, 在PHP_INI_USER的配置项中,提到.user.ini。 这里作用解释如下: 除了主 php.ini 之外,PHP 还会在每个目录下扫描 ...
    99+
    2023-09-03
    php 开发语言
  • 任意文件上传漏洞(CVE-2018-2894)
    漏洞描述 Weblogic管理端未授权的两个页面存在任意上传jsp文件漏洞,进而获取服务器权限。Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Te...
    99+
    2023-09-24
    php java 网络安全
  • 网络安全之文件上传漏洞
    目录 一.文件上传漏洞原理🐱‍🏍🐱‍🏍🐱‍🏍 1.文件上传功能 2.一句话木马 二Webshell介绍☠☠☠ 1.一句话木马的特点 2.小马 3...
    99+
    2023-09-14
    php 安全 web安全 文件上传 网络安全
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作