DVWA文件上传漏洞(medium)

本文详细介绍在DVWA平台上利用%00截断技术进行文件上传攻击的过程。通过设置安全级别为中等,并使用特定技巧绕过服务器检测,成功上传包含后门的PHP文件。

DVWA文件上传漏洞

2018/4/6        criedcat

 

***本文需要知道%00截断是怎么个一回事。整体上的思路无非就是上传一个隐藏的木马,然后用菜刀链接***

 

****网络有文章说,%00截断出现在php5.3.4之前版本,但是我的测试环境是5.4.45,却依然可以用%00截断;笔者不知道是否和服务器有什么关系*****

 

首先介绍一下,dvwa是我们平常很熟悉的一个php漏洞集成平台。笔者常用来学习的开源平台就是BWAPP,DVWA,DEDECMS。在这篇文章中笔者将会讲到如何在DVWA这上面进行文件上传木马。level为中,高。

 

首先进行环境介绍,虚拟机win2003,装有phpstudy;真实机,win10最新版(昨天才更新),用火狐浏览器。

 

首先,我的虚拟机开启了“仅主机”模式。


如图,真实机中VMnet1网关192.168.135.1,子网掩码:255.255.255.0;

所以,经过虚拟机网络编辑器的调整后,虚拟机的ip调为192.168.135.128.此时两个系统可以正常通信。

 

-------------------------------------------------后台设置------------------------------------------------------------------

 

 

dvwa比较特殊,因为它纯粹是客户端就能进行后台的设置。比如level的高中低。以下的行为虽然发生在客户端的我进行的设置,但是我依然把以下的行为归类为后台设置。

http://192.168.135.128/dvwa/login.php

我们访问上述URL,

登入,在下图左侧点击左侧“文件上传”

 


在安全级别为low的情况下,我们可以直接上传一个php木马就行(dvwa对上传的大小有限制,我们上传的文件最好不要超过70KB)

但是,这未免太简单了。笔者将会在level=mideum的环境下上传木马,然后用菜刀链接。

在下图我将安全级别设置为了中。

 

 -------------------------------------------------------------------入侵---------------------------------------------------

 很好,我们设置完了作为后台的虚拟机的一切。

接下来,我们开始入侵。

我们登入上图,接下来就是想办法上传php的木马。

笔者将本人的美照贡献了出来。

先将jpg写成php,看看能否上传。

左上角有结果。

然后笔者试试能不能上传空白文本,后缀.jpg

上传成功。(其实我想看到他失败,因为很多情况下,这样上传必须加gif890才能成功)

看来服务器只检测后缀名是否是.jpg了,而不检测文件的内容。

(如果检测内容,需要在文件前面写gif890,如果扫描木马,需要二进制或者copy命令写木马;)

在这里,我直接用菜刀把服务端代码<?php @eval($_POST['caidao']);?>放到jpg文件中,然后把文件名改为111.php%00.jpg

把burp开启,抓包,

把下半部分的filename的值,那个%00,解除url编码(%00是URL编码,本身是截断的意思,我们解码后,就相当于越过了浏览器,直接在应用层下截断了后面的.jpg),然后放包。

然后,

根据路径提示,到那个上传的php文件中。

http://192.168.135.128/dvwa/hackable/uploads/111.php

把这个复制到菜刀,进行php链接,密码caidao写进去

我们进入了服务器。

至此,笔者对dvwa的文件上传漏洞先写在这里。

 

 

 

<think>首先,用户的问题是:“我想查找DVWA文件上传漏洞的修复方法 请问DVWA文件上传漏洞的修复方法”。用户提到了DVWA(Damn Vulnerable Web Application),这是一个故意的易受攻击的web应用,用于安全测试和学习。 用户引用了两个引用:一个是关于文件包含漏洞的修复建议(引用[1]),另一个是关于文件上传漏洞的低级设置描述(引用[2])。用户特别指定:“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。” 但在这个对话中,没有先前的用户问题或我的回答记录,所以这可能是一个新的查询。 用户的实际需求是查找DVWA文件上传漏洞的修复方法。所以,我需要专注于回答这个问题。 我的系统级指令包括: - 使用中文回答。 - 结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 - 在行内数学表达式使用$...$格式,但这个问题似乎没有数学内容,所以我可能不需要使用LaTeX。 - 独立公式使用$$...$$,但同样,可能不适用。 - 生成相关问题。 - 在引用的段落末尾添加引用标识,但用户提供了引用,我应该基于这些引用构建回答。 用户提供的引用: - 引用[1]:关于文件包含漏洞的修复建议。包括输入验证、安全编码、白名单过滤、服务器端包含、最小权限原则、更新软件、安全审计。 - 引用[2]:关于DVWA文件上传漏洞的低级设置描述,显示服务器没有检查文件类型。 用户的问题是专门关于文件上传漏洞的,所以我应该忽略引用[1]中文件包含漏洞的部分,除非有重叠。但用户说“上述引用仅供参考”,所以我可能不需要严格依赖它们。 从引用[2]中,我可以提取信息:在DVWA的低级设置中,文件上传漏洞是由于服务器没有检查文件类型或内容导致的。 为了回答用户的问题,我需要提供DVWA文件上传漏洞的修复方法。基于web安全知识,文件上传漏洞的常见修复方法包括: 1. 验证文件类型:只允许特定的文件类型(如只允许图片)。 2. 检查文件内容:确认文件内容匹配扩展名(例如,使用MIME类型检查)。 3. 重命名文件:防止用户上传恶意脚本。 4. 存储文件在外部目录:避免直接执行上传的文件。 5. 设置权限:限制上传目录的执行权限。 6. 使用白名单:只允许安全文件扩展名。 7. 扫描文件:使用反病毒软件扫描上传的文件。 8. 限制文件大小:防止DoS攻击。 在DVWA的上下文中,修复方法会涉及到修改源代码。DVWA是一个学习工具,所以修复漏洞是教育过程的一部分。 从引用[2]中,低级设置没有检查,所以修复可能包括添加检查逻辑。 结构我的回答: - 先解释问题。 - 然后提供修复方法。 - 最后生成相关问题。 系统指令说:“回答中引用的段落末尾自然地添加引用标识”,但用户提供的引用不是标准来源;它们是用户粘贴的文本。我应该基于内容添加引用标识,可能引用用户提供的[^1]和[^2]。 用户说:“上述引用仅供参考”,所以我应该使用它们作为参考,但不一定依赖。 生成相关问题:指令要求“生成相关问题”,所以在回答结束时添加相关问题。 最终回答结构: 1. 引入:确认用户查询。 2. 解释DVWA文件上传漏洞。 3. 详细修复方法。 4. 添加引用标识。 5. 生成相关问题。 确保使用中文。 </think> ### DVWA文件上传漏洞修复方法 DVWA(Damn Vulnerable Web Application)是一个故意设计为易受攻击的Web应用程序,用于安全测试和学习。文件上传漏洞是常见的Web安全风险,攻击者利用它上传恶意文件(如Web Shell),从而控制服务器或执行任意代码。从您提供的引用中可以看出,在DVWA的"Low"安全级别下,服务器未对上传文件进行任何类型检查或过滤,导致漏洞存在(例如,上传PHP脚本后可直接执行恶意代码)。修复此类漏洞的关键在于实施严格的安全措施。以下是基于Web安全最佳实践的详细修复方法,结合DVWA的上下文: #### 1. **输入验证和过滤** - **文件类型检查**:只允许上传安全的文件类型(例如,仅图片格式如.jpg、.png)。使用白名单机制,避免使用黑名单(如禁止.php、.exe等)。在DVWA中,可以通过修改PHP代码添加扩展名验证。 ```php $allowed_types = ['image/jpeg', 'image/png']; // 定义允许的MIME类型 if (!in_array($_FILES['uploaded_file']['type'], $allowed_types)) { die("无效的文件类型"); // 拒绝上传 } ``` - **内容验证**:检查文件内容是否匹配扩展名(如使用`getimagesize()`函数验证图片文件),防止伪装攻击。 #### 2. **安全编码实践** - **重命名上传文件**:随机生成文件名(如UUID),避免攻击者猜测路径。例如: ```php $new_filename = uniqid() . '.' . pathinfo($_FILES['uploaded_file']['name'], PATHINFO_EXTENSION); move_uploaded_file($_FILES['uploaded_file']['tmp_name'], 'uploads/' . $new_filename); ``` - **禁用执行权限**:将上传目录设置为不可执行(如设置Apache配置`php_flag engine off`),防止恶意脚本运行[^1]。 #### 3. **服务器端处理** - **存储位置隔离**:将上传文件存储在Web根目录之外(如`/var/www/uploads/`),避免直接通过URL访问。DVWA中可修改上传路径设置。 - **文件内容扫描**:集成反病毒工具扫描上传文件(如使用ClamAV库),检测恶意代码[^1]。 #### 4. **最小权限原则** - **限制目录权限**:设置上传目录的权限为只写(例如`chmod 755 uploads/`),确保Web用户无法执行或读取敏感文件。这减少了攻击面。 #### 5. **定期维护和审计** - **更新依赖库**:及时修补DVWA依赖的PHP或服务器软件漏洞(如CVE记录)。参考DVWA官方GitHub仓库获取安全补丁。 - **安全审计**:使用工具(如OWASP ZAP)定期扫描DVWA实例,检测残留漏洞[^1]。 #### 实际DVWA修复示例 在DVWA的源代码中(如`vulnerabilities/upload/source/low.php`),添加以下修复代码: ```php <?php if (isset($_POST['Upload'])) { $target_dir = "uploads/"; $target_file = $target_dir . basename($_FILES["uploaded_file"]["name"]); $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION)); // 白名单验证 $allowed_ext = ['jpg', 'jpeg', 'png', 'gif']; if (!in_array($imageFileType, $allowed_ext)) { die("错误:只允许上传图片文件(JPG, JPEG, PNG, GIF)"); } // MIME类型检查 $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime = finfo_file($finfo, $_FILES["uploaded_file"]["tmp_name"]); finfo_close($finfo); $allowed_mime = ['image/jpeg', 'image/png', 'image/gif']; if (!in_array($mime, $allowed_mime)) { die("错误:文件内容不匹配"); } // 重命名和移动文件 $new_name = uniqid() . '.' . $imageFileType; if (move_uploaded_file($_FILES["uploaded_file"]["tmp_name"], $target_dir . $new_name)) { echo "文件上传成功!"; } else { echo "上传失败"; } } ?> ``` 这些方法基于OWASP指南和DVWA漏洞特性,实施后可显著降低风险。建议在DVWA的更高安全级别(如"Medium"或"High")测试这些修复,以验证其有效性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值