news 2026/3/24 16:51:34

文件上传漏洞学习(非常详细),零基础入门到精通,看这一篇就够了

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
文件上传漏洞学习(非常详细),零基础入门到精通,看这一篇就够了

文件上传漏洞学习(非常详细),零基础入门到精通,看这一篇就够了

定义

文件上传背景:“文件上传“功能已经成为现在Web应用的一种常见需求,它不但有助于提 高业务效率(例如:企业内部文件共享),更有助于优化用户的体验(例如:上传视频、图 片、头像等)。“文件上传“功能一方面带来良好的体验,另一方面也带来了 “安全问题”。

文件上传漏洞定义:文件上传漏洞是指由于服务器未对上传的文件进行严格的验证和过滤, 而导致的用户可以越过其本身权限向服务器上传可执行的恶意文件。这里上传的文件可以是 木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,“文件上传” 本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻 辑不够完善,则会导致严重的后果。

文件上传成因:

文件上传利用条件:

文件上传危害
webshell概述

定义:以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以 将其称之为一种网页后门。攻击者在入侵了一个网站后,通常会将这些asp或php后 门文件与网站服务器web目录下正常的网页文件混在一起,然后使用浏览器来访问这 些后门,得到一个命令执行环境,以达到控制网站服务器的目的,可以实现文件上传 下载、修改文件、操作数据库、执行任意命令等操作。这个后门文件就是所谓的 Webshell。

一句话木马:一句话木马是Webshell的一种,由于这类Webshell代码比较少,往往只有一 行代码,所以就被称为一句话木马。一句话木马虽然代码内容少且简单,但是结合Webshell 等后门管理工具,可以实现非常强大的功能。

<?php eval($_POST['cmd']);?>
文件上传漏洞

文件上传点:即所有可以向服务器上传文件的位置,常见的有头像上传、文本上传、视频发布、文 档编辑、商品管理等。

文件上传几乎都是POST方式提交参数,所以需要通过Burp抓包查看提交的请求包内容:

上传漏洞:如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致攻击者能够向某个可通过WEB访问的目录上传恶意文件,并被脚本解析器执行,这样就可以在远程服务器上执行恶意脚本,进而控制服务器。

绕过
前端JS校验

前端检验:当客户端选中要上传的文件点击上传的时候,如果没有向服务端发送 任何数据信息,就对本地文件进行检测是否是允许上传的文件类型,这种方式称 为客户端本地JavaScript检测。

判断方式:
绕过方法:

MIME类型检测

所谓MIME类型检测实际上就是客户端在上传文件到服务端的时候,服务端对客 户端上传的文件的Content-Type类型进行检测,如果是白名单所允许的,则可以正常上传,否则上传失败

文件内容检测

文件内容检测的概念:服务器一般会读取文件16进制头,使用getimagesize()函数检测图片文件内容, 或者使用exif_imagetype()函数获得图片文件的类型,判断文件是否是一个有效的图片文件,如果是, 则允许上传,否则的话,不允许上传。

检测内容:判断文件头是否合法。

绕过方法:

可通过添加合法文件头进行绕过,如GIF89a等。

➢ JPG : FF D8 FF E0 00 10 4A 46 49 46

➢ GIF : 47 49 46 38 39 61 (GIF89a)

➢ PNG: 89 50 4E 47

通过将木马文件和图片文件拼接成一个文件,形成图片:copy a.jpg/b + b.txt/a c.jpg

一般就是检查图片文件的大小,图片文件的尺寸之类的信息。伪造好文件幻数,在后 面添加一句话木马之后,再添加一些其他的内容,适当增大文件的大小。或者直接使用copy命令合成 的图片马

文件名检测

常见的文件名检测就是检测文件的后缀名,常见的方式有两种:黑名单限制(不允许上传哪些后缀文件)和白名单限制(只允许上传哪些后缀的文件)。

黑名单限制绕过:大小写绕过、文件别名绕过、特殊文件名绕过、.htaccess配 置重写等。

白名单限制绕过:解析漏洞绕过。

黑名单-大小写绕过

大小写绕过:当客户端选中要上传的文件点击上传的时候,程序会对上传文件的后缀名进行判断, 当操作系统为linux时,系统对大小写敏感,当程序使用黑名单限制用户上传的文件后缀且过滤语句 不严谨时,可以通过修改文件后缀名大小写的方法绕过上传验证。Windows系统对大小写不敏感, 一般无法通过大小写绕过。

绕过方法

burp抓包,修改大小写

黑名单-文件别名绕过

不同类型的网站,绕过黑名单的方式也不同,常见别名可分成下面几种:

PHP:php3、php5、php(后面加空格)、pHp(大小写混合)、pht、phtml、phps

ASP:aspx、cer、cdx、asa、aSp(大小写混合)

JSP:jspx、jspf、jSp(大小写混合)  前提条件:需要对于开启服务配置以识别别名。以apache下的php为例,需要添加 apache的配置:

AddType application/x-httpd-php .php .php3 .phtml

绕过方法

对于存在黑名单检测并且开启了别名配置的场景,可以通过一些脚本或者爆破 方式,尝试所有的常见的别名。Burp抓包后,修改filename为别名后缀即可

黑名单-特殊文件名绕过

服务端有时会对文件后缀进行限制,根据过滤的不同实现方式,可以采取一些特殊的文件名进行绕过。 常见的有如下四种,前三种都是基于windows文件名的特性,只有windows系统才能使用:

空格:1.php ,文件名最后跟一个空格,windows中文件后缀名末尾有空格会自动去掉。

点:1.php. ,只有windows下才能使用,1.php.会被当做1.php处理。

:: D A T A 文件流: 1. p h p : : DATA文件流:1.php:: DATA文件流:1.php::DATA,只有目标服务器操作系统为windows,才可以使用,会将:: D A T A 后面内容作为文件流处理,不会检测后面的内容,并保持 : : DATA后面内容作为文件流处理,不会检测后面的内容,并保持:: DATA后面内容作为文件流处理,不会检测后面的内容,并保持::DATA之前的内容为文件名。

双写后缀:1.pphphp,双写后缀被替换的php只能是p(php)hp,不能是ph(php)p,因为后一 个经过程序替换,会变成hpp后缀,无法识别。

黑名单-.htaccess配置重写

.htaccess文件:是Apache服务的分布式配置文件,该配置文件会覆盖Apache服务器的全局配置, 作用域是当前目录及其子目录。如果一个Web应用允许上传.htaccess 文件,那就意味着攻击者可以 更改目标域下的Apache的配置。

局限:首先目标必须使用的是Apache服务,并且Apache配置中开启允许.htaccess文件覆盖掉 Apache配置的属性。即mod_rewrite模块开启,允许重写属性配置成All:AllowOverride All。

分布式配置文件提供了针对目录改变配置的方法, 即在一个特定的文档目录中放置包含一个或多个 指令的文件, 以作用于此目录及其所有子目录。用户可以利用此文件定义解析文件的后缀,从而进行恶意利用。

绕过方法

例如:将.png文件当作PHP文件解析,将以下代码写入文件,并保存成.htaccess文件,放 到目标目录下,该目录下的所有png后缀都会被当做php解析运行。

操作步骤:

白名单-解析漏洞
IIS解析漏洞

目录解析(IIS 6.0)

➢ 形式:xx.asp/xx.jpg

➢ 原理:检测文件名为jpg,但是IIS解析时默认从左到右,会把该文件按照.asp解析。

文件解析

➢ 形式:xx.asp;.jpg

➢ 原理:IIS默认不解析;号后面的内容,因此xx.asp;.jpg便被解析成asp文件了。

Apache解析漏洞

Apache解析文件的规则是从右到左开始判断文件类型,如果后缀名为不可识别的 解析类型,就再往左读取。比如test.php.qwe.asd,“.qwe”和”.asd”这两种后缀是Apache不可 识别类型,直到第三个php,Apache就会把test.php.qwe.asd解析成php。

形式:test.php.et48r4t.h45hh

Apache其余配置问题导致漏洞:

如果在 Apache的conf里有这样一行配置AddHandler php5-script .php这时只要文件名里包 含.php即使文件名是 test2.php.jpg也会按照php来解析。

如果在Apache的conf里有这样一行配置AddType application/x-httpd-php .jpg即使扩展名是 jpg也会按照php来解析。

Nginx解析漏洞

Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置 文件中通过正则匹配设置SCRIPT_FILENAME。当访问www.xx.com/phpinfo.jpg/1.php这 个URL时,$fastcgi_script_name会被设置为“phpinfo.jpg/1.php”,然后构造成 SCRIPT_FILENAME传递给PHP CGI,但是PHP为什么会接受这样的参数,并将 phpinfo.jpg作为PHP文件解析呢?这就要说到fix_pathinfo这个选项了。 如果开启了该选 项,那么就会触发在PHP中的如下逻辑:

PHP会认为SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就会将 phpinfo.jpg按照PATH_INFO的类型,即PHP文件来解析了。

Nginx解析漏洞形式

www.xxxx.com/UploadFiles/image/1.jpg/1.php

www.xxxx.com/UploadFiles/image/1.jpg%00.php

www.xxxx.com/UploadFiles/image/1.jpg/%20\0.php

另外一种手法:上传一个名字为test.jpg的图片马,然后访问test.jpg/.php,在这个目录下就会自动生成一句话木马test.php。

00截断

目录路径检测:检测上传的路径是否合法,一旦程序员在写程序的时候对文件的 上传路径过滤不严格就很有可能产生00截断漏洞。

假设上传的文件名为:test.php.gif,通过抓包截断将test.php后面的 . 换成0x00, 即test.php0x00gif。操作系统在读取文件时,都是读取文件的16进制内容,而 0x00就是NULL、结束的意思。当操作系统读到0x00的时候,会认为文件已经结 束,从而将test.php0x00gif中的内容写入到test.php,从而达到攻击目的。

GET请求截断:%00与0x00截断的原理是一样的,只是GET请求时,服务器会自动 进行URL解码,会将%00解码成0x00。所以直接Burp抓包后修改文件名即可。

POST请求截断:但是当请求方式为POST方式时,没有解码的步骤,需要在提交 数据包时,就要保证文件名中编码已经为0x00。需要Burp抓包后,使用HEX模式 编辑请求包内的文件名,修改点(2e)为00。

但是这两种方式都需要系统有权限能够重新命名文件。即php版本小于5.3.4, php.ini中magic_quotes_gpc为OFF状态。

防护

防护思路:首先,上传的文件能够被Web容器解释执行。所以文件上传后所在的目录要是Web容 器所覆盖到的路径。 其次,用户能够从Web上访问这个文件。如果文件上传了,但用户无法通过 Web访问,或者无法得到Web容器解释这个脚本,也无法利用或对服务器造成危害。 最后,用户 上传的文件若被安全检查、格式化、图片压缩等功能改变了内容,则也可能导致攻击不成功。防 范文件上传漏洞常见的几种方法:

  1. 文件上传的目录设置为不可执行:只要web容器无法解析该目录下面的文件,即使攻击者上传了 脚本文件,服务器本身也不会受到影响,这就需要开发者对于网站目录和文件的权限划分足够细 致。
  2. 判断文件类型:在判断文件类型时,可以结合使用MIME Type、后缀检查等方式。在文件类型检 查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的。此外,对于图片的处理, 可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。
  3. 使用随机数改写文件名和文件路径:文件上传如果要执行代码,则需要用户能够访问到这个文件。 在某些环境中,用户能上传但不能访问。如果应用随机数改写文件名和路径,将极大地增加攻击的 成本。再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击。
  4. 单独设置文件服务器的域名:由于浏览器同源策略的关系,一系列客户端攻击将失效,比如上传 crossdomain.xml、上传包含Javascript的XSS利用等问题将得到解决。

限制上传文件大小:

确保上传文件被访问正确返回:

学习资源

如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你

知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。

1、知识库价值

深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。

广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。

实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。

2、 部分核心内容展示

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。

1、网络安全意识

2、Linux操作系统

3、WEB架构基础与HTTP协议

4、Web渗透测试

5、渗透测试案例分享

6、渗透测试实战技巧

7、攻防对战实战

8、CTF之MISC实战讲解

3、适合学习的人群

一、基础适配人群

  1. 零基础转型者‌:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链‌;
  2. 开发/运维人员‌:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展‌或者转行就业;
  3. 应届毕业生‌:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期‌;

二、能力提升适配

1、‌技术爱好者‌:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者‌;

2、安全从业者‌:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力‌;

3、‌合规需求者‌:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员‌;

因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/22 17:24:37

圣默思线扫描相机选型

Teledyne Dalsa 高性价比线扫描相机圣默思 Teledyne DALSA 的 Tetra 系列相机是具有高性价比的工业相机产品&#xff0c;适用于各种对成本敏感的应用。它采用 Teledyne DALSA 最新的线扫描传感器技术&#xff0c;使用 2.5 GigE Vision 接口进行数据传输。相机功耗低&#xff0c…

作者头像 李华
网站建设 2026/3/12 6:10:51

SpringBoot+Elasticsearch实现高效全文搜索

在现代应用程序中&#xff0c;对于大量数据的高效管理和快速检索是至关重要的。Elasticsearch&#xff08;以下简称ES&#xff09;作为一款开源的全文搜索引擎&#xff0c;为开发者提供了强大而灵活的搜索解决方案。 本文将介绍如何通过Spring Boot框架整合Elasticsearch&…

作者头像 李华
网站建设 2026/3/24 12:32:14

【大模型轻量化新突破】:Open-AutoGLM量化压缩的5个关键步骤

第一章&#xff1a;Open-AutoGLM模型压缩量化概述在大规模语言模型&#xff08;LLM&#xff09;日益普及的背景下&#xff0c;Open-AutoGLM 作为一种高效、可扩展的自动化模型压缩框架&#xff0c;致力于解决模型部署中的资源瓶颈问题。该框架专注于 GLM 系列模型的量化与压缩优…

作者头像 李华
网站建设 2026/3/23 5:15:55

【高精地图开发者必看】:Open-AutoGLM多源融合定位精度优化全攻略

第一章&#xff1a;Open-AutoGLM坐标定位精度控制方法概述Open-AutoGLM 是一种面向地理空间智能建模的自动化坐标定位框架&#xff0c;其核心目标是提升在复杂场景下的位置推理精度与语义理解能力。该方法融合了大语言模型&#xff08;LLM&#xff09;的上下文解析优势与高精地…

作者头像 李华
网站建设 2026/3/24 6:34:44

FaceFusion镜像支持GPU算力预约分配功能

FaceFusion镜像支持GPU算力预约分配功能 在AI视觉应用日益普及的今天&#xff0c;人脸替换技术已从实验室走向影视、直播、数字人等高要求场景。FaceFusion作为当前最受欢迎的人脸融合工具之一&#xff0c;凭借其高质量的换脸效果和灵活的模块化设计&#xff0c;被广泛应用于内…

作者头像 李华