文件上传漏洞 重点知识总结
一、前置
-
%all嵌套原因:XML同一层级无法解析
%file参数,嵌套参数实体才能正常调用变量,避免解析报错。 -
引用外部DTD文件原因:XML内部子集不允许在标记声明中引用参数实体,必须使用独立外部DTD文件。
-
%含义:是百分号%的HTML实体编码,直接写%会触发语法报错,需编码替代。
二、文件上传漏洞基础
1. 核心概念
-
漏洞成因:服务端未对上传文件做严格校验、过滤,攻击者可上传恶意脚本,进而控制网站/服务器。
-
应用场景:头像、相册、附件、论坛、邮箱、文件管理器等所有文件上传功能,均为高危点。
-
正常上传vs恶意上传:正常用户传图片/附件;攻击者上传一句话木马等恶意脚本。
2. 基础木马与实操
-
基础测试木马:
<?php phpinfo(); ?>,用于探测服务器环境信息。 -
一句话木马(核心):
<?php @eval($_POST[cmd]); ?>-
@:屏蔽错误,保证代码持续执行; -
eval():将传入字符串当作PHP代码执行; -
$_POST[cmd]:接收POST请求中cmd参数的指令。
-
-
蚁剑联动:蚁剑连接一句话木马(填写木马URL+连接密码
cmd),可实现文件管理、命令执行、篡改网站等远程控制操作。
3. 基础绕过思路(前端校验)
前端JS校验可直接篡改页面代码、或使用Burp Suite(BP)抓包修改数据包绕过;先伪装文件后缀,抓包后替换为恶意脚本。
三、upload-labs 基础关卡(Pass01-Pass10)绕过技巧
针对服务端不同校验规则,对应绕过方法,是本章节核心实操点:
-
Pass01 JS前端校验:保存网页、删除前端校验代码;或BP抓包直接上传PHP文件。
-
Pass02 校验Content-Type:BP抓包,将文件类型改为
image/png/image/jpeg等图片类型。 -
Pass03 黑名单后缀:利用Apache特性,上传
.php3/.phtml等可被解析的后缀。 -
Pass04 黑名单+.htaccess:上传
.htaccess文件,配置Apache将图片解析为PHP,再上传图片后缀木马。 -
Pass05 大小写绕过:黑名单未转小写,上传
info.PHP,Windows系统不区分文件名大小写。 -
Pass06 末尾空格绕过:代码无首尾去空格逻辑,文件名后加空格(如
info.php)。 -
Pass07 末尾点绕过:代码无删除末尾点逻辑,文件名后加点(如
info.php.)。 -
Pass08 ::$DATA绕过:Windows特性,文件名添加
::$DATA,系统会截断该字符串,保留原后缀。 -
Pass09 代码逻辑缺陷:
deldot函数遇空格停止删点,构造xxx.php.(点+空格)绕过。 -
Pass10 字符串替换绕过:
str_ireplace全局替换黑名单后缀,构造pphphp,替换后剩余php。
四、文件上传漏洞进阶(Pass11-Pass20 + 拓展漏洞)
1. 高阶上传绕过(Pass11-Pass20)
-
Pass11-Pass12 0x00截断
-
原理:C语言字符串以
\0(0x00)为结束符,系统读到0x00直接截断文件名。 -
区分:GET请求
%00自动解码;POST请求需手动URL解码%00。
-
-
Pass13-Pass15 图片马
-
制作:
copy 图片.png /b + 木马.php /a 图片马.png,将脚本嵌入图片。 -
利用:配合文件包含漏洞,把图片当作PHP代码执行。
-
校验类型:分别绕过文件头部校验、
getimagesize()、exif_imagetype()图片检测。
-
-
Pass16 二次渲染绕过:服务器重绘图片会清除内嵌脚本,用010编辑器在图片不变区域植入木马,再上传。
-
Pass17 条件竞争:服务器先保存文件再校验删除,利用BP爆破高频访问文件,在删除前执行木马。
-
Pass18 解析漏洞+条件竞争:结合中间件解析漏洞,上传
xxx.php.jpg等双后缀文件,配合竞争访问执行。 -
Pass19 黑名单可控文件名:使用
0x00截断、构造php/.路径绕过后缀检测。 -
Pass20 白名单数组绕过:利用PHP数组特性,拆分文件名参数,绕过后缀拼接规则。
2. 三大中间件解析漏洞(高频考点)
解析漏洞本质:中间件对多后缀文件解析逻辑异常,白名单场景下可间接执行脚本。
-
Apache解析漏洞:从右往左识别后缀,文件含
.php就会按PHP解析(例:shell.php.png)。 -
Nginx解析漏洞:访问
图片.jpg/.php,会将图片路径当作PHP文件解析。 -
Tomcat解析漏洞(CVE-2017-12615):开启PUT方法时,上传
xxx.jsp/可绕过校验,执行JSP脚本。
3. FCKEditor编辑器上传漏洞
-
环境:开启编辑器文件上传连接器
$Config['Enabled']=true。 -
利用:结合
0x00截断,构造特殊文件名上传木马,实现任意文件上传。
五、通用总结与安全提示
-
核心规律:客户端校验(JS、文件后缀、类型)均可被抓包/改代码绕过;服务端校验存在逻辑缺陷,也存在各类绕过方式。
-
攻击链路:上传恶意文件 → 绕过服务端校验 → 中间件解析/文件包含执行脚本 → 远程控制服务器。
-
安全警示:本内容仅限合法靶场学习,严禁针对公网真实网站实施攻击,触犯法律法规。
-
防御方向(反向考点):服务端白名单校验、过滤特殊字符(空格/点/%00)、重命名上传文件、禁用危险中间件配置、限制文件执行权限。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)