本文仅用于技术研究,禁止用于非法用途。
Author:枷锁
文章目录
以下是针对 DVWA File Upload(Medium 级别)配合冰蝎(Behinder)的终极详细教程,涵盖环境配置、绕过技巧、实战步骤及防御方案,结合最新漏洞利用技术更新:
一、环境准备(关键细节)
- DVWA 配置
- 将安全级别设为 Medium(访问
http://靶机IP/dvwa/security.php
)
- 将安全级别设为 Medium(访问
Linux上传目录权限(必做):
bash chmod 777 /var/www/html/dvwa/hackable/uploads # Linux
Windows 需手动设置 uploads
文件夹 完全控制权限(右键属性→安全→编辑→勾选“完全控制”)。
- 冰蝎 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-Type
为 image/jpeg
或 image/png
,同时保留文件后缀为 .php
。
三、分步攻击流程(冰蝎实战)
1. 制作冰蝎图片马
文件准备(避坑关键)
- 图片选择
选普通.jpg
图片(避免含EXIF数据的复杂图片,否则可能被二次渲染破坏WebShell代码)。 - 冰蝎WebShell
解压冰蝎包 →server/php/shell.php
→ 用记事本打开,确认默认密码$key = 'e45e329feb5d925b'
。
CMD合成操作(分步详解)
-
文件存放
将normal.jpg
(正常图片)和shell.php
(冰蝎木马)放在同一文件夹(如C:\hack
)。
。webshell.jpg.php
:文件名必须保留.php
后缀(否则服务器不解析),但用.jpg
迷惑检查。
- 验证合成效果
- 用记事本打开
webshell.jpg.php
→ 滚动到文件底部 → 应看到完整的PHP代码(以<?php ... ?>
结尾)。 - 文件大小:
shell.php大小 + normal.jpg大小 = webshell.jpg.php大小
(若不符则合并失败)。
- 用记事本打开
- 方法 2:Hex 编辑器(通用)
- 用 010 Editor 打开正常图片(如
panda.jpg
)。 - 在文件末尾 追加冰蝎 WebShell 代码(默认密码
rebeyond
)。 - 另存为
webshell.jpg.php
。
- 用 010 Editor 打开正常图片(如
2. BurpSuite 拦截篡改(关键操作)
-
上传
webshell.jpg.php
→ 启动 Burp 拦截请求。
上传时会出现下面的问题
我们去找我们刚刚上传操作的流量包
把它发送到重放板块 -
修改以下字段:
只需要修改 文件块的 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
- 获取上传路径:
http://靶机IP/dvwa/hackable/uploads/webshell.jpg.php
- 冰蝎配置:
- URL:上述路径
- 密码:
rebeyond
(若自定义密码需提前修改 WebShell 中的$key
值) - 脚本类型:PHP
- 连接成功标志:状态显示 “已连接” → 可操作文件/命令/数据库。
四、高级绕过技巧(应对严格环境)
场景 | Payload 示例 | 原理 | 适用性 |
---|---|---|---|
双扩展名绕过 | shell.php.jpg | 利用解析顺序差异 | Apache/IIS 解析漏洞 |
空格截断 | shell.php .jpg | 旧版本 Apache 截断空格 | PHP < 5.3 |
.htaccess 覆盖 | 上传包含 AddType application/x-httpd-php .xyz 的 .htaccess | 自定义解析规则 | 需 mod_rewrite 权限 |
大小写混淆 | shell.PhP | Windows 系统大小写不敏感 | 跨平台有效 |
五、防御方案(开发者视角)
// 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; }
六、常见错误排查
- 冰蝎连接超时:
- 关闭防火墙(Windows Defender/iptables)或放行冰蝎流量。
- 检查 WebShell 路径是否包含中文(改用纯英文路径)。
- 上传失败:
- 错误提示
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.免责范围:作者、平台及关联方明确拒绝承担因读者行为导致的任何直接、间接、附带或惩罚性损害责任。
🔐 安全研究的正确姿势:
✅ 先授权,再测试
✅ 只针对自己拥有或有权测试的系统
✅ 发现漏洞后,及时报告并协助修复
✅ 尊重隐私,不越界
⚠️ 警告:技术无善恶,人心有黑白。请明智选择你的道路。
希望这个教程对你有所帮助!记得负责任地进行安全测试。