一、前置

  1. %all嵌套原因:XML同一层级无法解析%file参数,嵌套参数实体才能正常调用变量,避免解析报错。

  2. 引用外部DTD文件原因:XML内部子集不允许在标记声明中引用参数实体,必须使用独立外部DTD文件。

  3. %含义:是百分号%的HTML实体编码,直接写%会触发语法报错,需编码替代。

二、文件上传漏洞基础

1. 核心概念

  • 漏洞成因:服务端未对上传文件做严格校验、过滤,攻击者可上传恶意脚本,进而控制网站/服务器。

  • 应用场景:头像、相册、附件、论坛、邮箱、文件管理器等所有文件上传功能,均为高危点。

  • 正常上传vs恶意上传:正常用户传图片/附件;攻击者上传一句话木马等恶意脚本。

2. 基础木马与实操

  1. 基础测试木马<?php phpinfo(); ?>,用于探测服务器环境信息。

  2. 一句话木马(核心)<?php @eval($_POST[cmd]); ?>

    • @:屏蔽错误,保证代码持续执行;

    • eval():将传入字符串当作PHP代码执行;

    • $_POST[cmd]:接收POST请求中cmd参数的指令。

  3. 蚁剑联动:蚁剑连接一句话木马(填写木马URL+连接密码cmd),可实现文件管理、命令执行、篡改网站等远程控制操作。

3. 基础绕过思路(前端校验)

前端JS校验可直接篡改页面代码、或使用Burp Suite(BP)抓包修改数据包绕过;先伪装文件后缀,抓包后替换为恶意脚本。

三、upload-labs 基础关卡(Pass01-Pass10)绕过技巧

针对服务端不同校验规则,对应绕过方法,是本章节核心实操点:

  1. Pass01 JS前端校验:保存网页、删除前端校验代码;或BP抓包直接上传PHP文件。

  2. Pass02 校验Content-Type:BP抓包,将文件类型改为image/png/image/jpeg等图片类型。

  3. Pass03 黑名单后缀:利用Apache特性,上传.php3/.phtml等可被解析的后缀。

  4. Pass04 黑名单+.htaccess:上传.htaccess文件,配置Apache将图片解析为PHP,再上传图片后缀木马。

  5. Pass05 大小写绕过:黑名单未转小写,上传info.PHP,Windows系统不区分文件名大小写。

  6. Pass06 末尾空格绕过:代码无首尾去空格逻辑,文件名后加空格(如info.php)。

  7. Pass07 末尾点绕过:代码无删除末尾点逻辑,文件名后加点(如info.php.)。

  8. Pass08 ::$DATA绕过:Windows特性,文件名添加::$DATA,系统会截断该字符串,保留原后缀。

  9. Pass09 代码逻辑缺陷deldot函数遇空格停止删点,构造xxx.php.(点+空格)绕过。

  10. Pass10 字符串替换绕过str_ireplace全局替换黑名单后缀,构造pphphp,替换后剩余php

四、文件上传漏洞进阶(Pass11-Pass20 + 拓展漏洞)

1. 高阶上传绕过(Pass11-Pass20)

  1. Pass11-Pass12 0x00截断

    • 原理:C语言字符串以\0(0x00)为结束符,系统读到0x00直接截断文件名。

    • 区分:GET请求%00自动解码;POST请求需手动URL解码%00

  2. Pass13-Pass15 图片马

    • 制作:copy 图片.png /b + 木马.php /a 图片马.png,将脚本嵌入图片。

    • 利用:配合文件包含漏洞,把图片当作PHP代码执行。

    • 校验类型:分别绕过文件头部校验、getimagesize()exif_imagetype()图片检测。

  3. Pass16 二次渲染绕过:服务器重绘图片会清除内嵌脚本,用010编辑器在图片不变区域植入木马,再上传。

  4. Pass17 条件竞争:服务器先保存文件再校验删除,利用BP爆破高频访问文件,在删除前执行木马。

  5. Pass18 解析漏洞+条件竞争:结合中间件解析漏洞,上传xxx.php.jpg等双后缀文件,配合竞争访问执行。

  6. Pass19 黑名单可控文件名:使用0x00截断、构造php/.路径绕过后缀检测。

  7. Pass20 白名单数组绕过:利用PHP数组特性,拆分文件名参数,绕过后缀拼接规则。

2. 三大中间件解析漏洞(高频考点)

解析漏洞本质:中间件对多后缀文件解析逻辑异常,白名单场景下可间接执行脚本。

  1. Apache解析漏洞:从右往左识别后缀,文件含.php就会按PHP解析(例:shell.php.png)。

  2. Nginx解析漏洞:访问图片.jpg/.php,会将图片路径当作PHP文件解析。

  3. Tomcat解析漏洞(CVE-2017-12615):开启PUT方法时,上传xxx.jsp/可绕过校验,执行JSP脚本。

3. FCKEditor编辑器上传漏洞

  • 环境:开启编辑器文件上传连接器$Config['Enabled']=true

  • 利用:结合0x00截断,构造特殊文件名上传木马,实现任意文件上传。

五、通用总结与安全提示

  1. 核心规律:客户端校验(JS、文件后缀、类型)均可被抓包/改代码绕过;服务端校验存在逻辑缺陷,也存在各类绕过方式。

  2. 攻击链路:上传恶意文件 → 绕过服务端校验 → 中间件解析/文件包含执行脚本 → 远程控制服务器。

  3. 安全警示:本内容仅限合法靶场学习,严禁针对公网真实网站实施攻击,触犯法律法规。

  4. 防御方向(反向考点):服务端白名单校验、过滤特殊字符(空格/点/%00)、重命名上传文件、禁用危险中间件配置、限制文件执行权限。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐