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

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

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.jpgshell.php
    • 保持Content-Type: image/jpeg不变

技术原理:

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

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

操作步骤:

  1. 直接上传shell.php文件

  2. Burp拦截请求,修改:

    • Content-Type: text/plainContent-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.phpshell.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绕过,成功突破了看似严密的防御系统。

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

相关文章:

  • NetBackup 10.1 外部CA配置后登录失败:5步排查与证书存储修复
  • Hutool-crypto 5.8.10 密钥管理:从内存硬编码到配置文件安全的3步演进
  • WebDAV 方法实战检测:OPTIONS/PUT/DELETE 等 8 种方法自动化探测与利用
  • Burp Suite 2024.6 与 5款开源插件对比评测:漏洞检出率提升40%实测
  • AOPR 7.21 实战:3种攻击模式破解Office 2019文档,成功率提升80%
  • 多模态Transformer实战:CLIP与BLIP-2模型在图文检索中的3种融合策略对比
  • C语言数组越界漏洞:从缓冲区溢出到密码验证绕过实战分析
  • 业务逻辑漏洞防御指南:基于墨者学院6个靶场案例的3层防护策略
  • 微信消息自动转发终极指南:3步实现跨群信息同步
  • 高校教务系统安全审计实战:基于新正方 8.0 的 5 个常见越权测试点与修复验证
  • Fastjson 1.2.83 安全升级实战:修复 CVE-2022-25845 的 3 种方法与兼容性验证
  • 如何高效遍历数值列表,筛选满足阈值条件的元素
  • XXE漏洞防御:PHP/Java/Python 3种语言5行代码修复方案对比
  • Office文档密码恢复工具对比:AOPR 7.21 vs Passper 4.0 功能与性能实测
  • 宝塔面板 7.9.8 目录权限与安全加固:10个关键目录的权限设置指南
  • iwebsec靶场 XXE漏洞实战:3种外部实体利用方式与Burp Collaborator盲注
  • AppScan 扫描 X-Content-Type-Options 缺失:5步修复与误报排查指南
  • CVE-2019-15107 漏洞深度剖析:Webmin密码重置功能中的1处命令注入逻辑缺陷
  • 如何快速解锁加密音乐:3个实用技巧与完整解密指南
  • D3KeyHelper:基于事件驱动架构的暗黑破坏神3智能按键调度系统
  • vCenter Server 6.7 U1+ 密码安全:2步SSH重置与90天过期策略管理
  • Samba 3.5.0-4.6.4 漏洞防御:3 种缓解措施与 1 个自动化检测脚本
  • EM3080-W条码解码芯片与PIC18LF46K42硬件设计解析
  • Burp Suite 2024.6 主动扫描实战:3步配置精准发现SQL注入与XSS漏洞
  • 钉钉机器人 Webhook 安全配置实战:3步完成阿里云服务器端口与签名验证
  • Android/iOS 隐私合规集成:3步配置极光推送SDK延迟初始化
  • Webmin 1.920 命令执行漏洞(CVE-2019-15107)复现:3步利用password_change.cgi获取Shell
  • 禅道 API 登录鉴权全流程解析:Session、Cookie 与 Token 3种方案对比
  • Flutter/HarmonyOS 实战|中式美食买菜清单勾选状态:checkedIds、统计卡与可点击食材条
  • Cuppa CMS 文件包含漏洞实战:W1R3S 1.0.1靶机从LFI到Root的3步提权