尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Upload-Labs Pass-02/03 实战:Content-Type与黑名单绕过,2种方法成功率100%

Upload-Labs Pass-02/03 实战:Content-Type与黑名单绕过,2种方法成功率100%
📅 发布时间:2026/7/8 20:42:40

Upload-Labs靶场实战:Content-Type与黑名单绕过的双保险策略

在Web安全领域,文件上传漏洞始终是渗透测试中的重点突破口。本文将深入剖析Upload-Labs靶场中Pass-02和Pass-03关卡的核心防御机制,通过两种成功率100%的实战绕过方法,带您掌握文件上传漏洞的攻防精髓。

1. 环境准备与靶场搭建

Upload-Labs是一个专门用于文件上传漏洞练习的PHP靶场,包含21个不同防御等级的挑战关卡。在开始实战前,我们需要完成以下准备工作:

实验环境要求:

  • PHP 5.4+ 运行环境
  • Apache/Nginx Web服务器
  • Burp Suite Community/Professional
  • 浏览器(推荐Chrome/Firefox)

靶场部署步骤:

  1. 从GitHub下载Upload-Labs源码:
git clone https://github.com/c0ny1/upload-labs.git
  1. 将项目部署到Web服务器根目录:
cp -r upload-labs /var/www/html/
  1. 确保uploads目录可写:
chmod -R 777 /var/www/html/upload-labs/uploads/

提示:Windows系统可使用XAMPP/WAMP等集成环境,Linux系统建议使用Docker快速部署。

2. Content-Type绕过实战(Pass-02)

Pass-02关卡采用了基于MIME类型的验证机制,这是Web应用中最基础的文件上传防御手段之一。让我们通过解剖其防御原理来寻找突破口。

2.1 防御机制分析

查看靶场源代码可见关键验证逻辑:

if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) { // 允许上传 } else { $msg = '文件类型不正确,请重新上传!'; }

验证特点:

  • 仅检查HTTP请求中的Content-Type头
  • 未校验文件实际内容
  • 客户端完全可控该字段

2.2 绕过方法一:伪装图片上传

操作步骤:

  1. 准备测试脚本shell.php:
<?php phpinfo(); ?>
  1. 将文件重命名为shell.jpg并上传

  2. Burp拦截请求,修改两个关键位置:

    • 文件名shell.jpg→shell.php
    • 保持Content-Type: image/jpeg不变

技术原理:

  • 原始上传时Content-Type自动设置为图片类型
  • 修改后缀不影响已设置的MIME类型
  • 服务器仅验证Content-Type字段

2.3 绕过方法二:直接修改Content-Type

操作步骤:

  1. 直接上传shell.php文件

  2. Burp拦截请求,修改:

    • Content-Type: text/plain→Content-Type: image/png
  3. 放行请求完成上传

对比分析:

方法操作复杂度隐蔽性适用场景
伪装图片上传中等较高严格检查文件名场景
直接修改类型简单较低快速测试场景

3. 黑名单绕过实战(Pass-03)

Pass-03采用了更严格的黑名单机制,让我们看看如何突破这种防御。

3.1 防御机制深度剖析

关键源代码片段:

$deny_ext = array('.asp','.aspx','.php','.jsp'); $file_ext = strtolower(strrchr($file_name, '.')); if(!in_array($file_ext, $deny_ext)) { // 允许上传 }

防御特点分析:

  • 黑名单包含常见脚本后缀
  • 进行了后缀名小写统一处理
  • 未覆盖所有可执行后缀

3.2 绕过方法:非常规后缀利用

可尝试的后缀列表:

后缀适用环境启用要求
.phtmlApache/PHP需配置AddType映射
.php5PHP 5+默认支持
.phpsPHP源代码展示需服务器配置
.inc包含文件需配合文件包含漏洞

实战操作:

  1. 修改shell.php为shell.phtml

  2. 检查Apache配置(httpd.conf):

AddType application/x-httpd-php .php .phtml .php3
  1. 上传并访问http://target/uploads/shell.phtml

特殊场景处理:

当服务器未配置.phtml解析时,可采用双重攻击链:

  1. 先上传.htaccess文件:
<FilesMatch "shell"> SetHandler application/x-httpd-php </FilesMatch>
  1. 再上传名为shell.jpg的PHP脚本

注意:该方法需要服务器允许.htaccess文件上传且配置了AllowOverride All

4. 防御机制强化建议

针对本文介绍的绕过方法,企业级防御应当采用多层验证策略:

防御矩阵建议:

防御层具体措施有效性
前端验证文件扩展名白名单★★☆
内容验证文件头+二次渲染★★★
存储处理文件重命名+随机目录★★★
服务器配置禁用危险解析+严格权限控制★★★

PHP安全配置示例:

// 白名单验证 $allowed = ['jpg', 'png', 'gif']; $ext = pathinfo($filename, PATHINFO_EXTENSION); if (!in_array($ext, $allowed)) { die('非法文件类型'); } // 内容检测 if (!@getimagesize($tmp_name)) { die('文件内容不合法'); } // 重命名存储 $new_name = md5(uniqid()).'.'.$ext; move_uploaded_file($tmp_name, '/safe_dir/'.$new_name);

5. 高级绕过技术延伸

对于更严格的安全防护,攻击者可能采用以下进阶技术:

复合绕过技术:

  1. 图片马+文件包含漏洞
  2. 条件竞争攻击
  3. 特殊编码绕过(UTF-7/BOM头)
  4. 垃圾数据填充绕过WAF

Apache解析特性利用:

# 非常规解析顺序测试 shell.php.xxx shell.php.jpg shell.php.jpeg

在实际渗透测试中,这些方法往往需要根据目标环境进行组合使用。我曾在一个真实项目中,通过组合.htaccess攻击与Content-Type绕过,成功突破了看似严密的防御系统。

相关新闻

  • 微信消息自动转发终极指南:3步实现跨群信息同步
  • AOPR 7.21 实战:3种攻击模式破解Office 2019文档,成功率提升80%
  • iwebsec靶场 XXE漏洞实战:3种外部实体利用方式与Burp Collaborator盲注

最新新闻

  • K-S检验法实战:3步验证数据是否符合泊松/均匀/指数分布
  • LibTV本地部署指南:AI视频生成从环境配置到生产实践
  • MindSpore Serving 1.5 部署实战:5 分钟搭建 ResNet-50 模型 gRPC/RESTful 推理服务
  • 决策树算法实战:ID3/C4.5/CART 3大经典算法对比与Python实现
  • JPEG 压缩原理深度解析:10:1 到 40:1 压缩比下,图片大小差异的量化分析
  • MindSpore 2.3.0 GPU 环境部署:Windows 11 下 Conda 与 Pip 源切换 3 步避坑

日新闻

  • PROPKA 3深度解析:蛋白质pKa预测的实战指南与算法原理
  • 微信小程序 globalData 监听:基于 Object.defineProperty 的 3 种实现方案对比
  • MySQL 8.0 数据清洗实战:3类异常值识别与 UPDATE/DELETE 批量处理

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号