DVWA文件上传漏洞实战:从零到一,逐级攻防(新手友好)

1. 环境准备与靶场搭建:你的第一个“黑客”实验室

嘿,朋友们,我是老张,在安全圈里摸爬滚打了十几年,带过不少新人入门。今天咱们不聊那些虚头巴脑的理论,直接上手,用一个叫DVWA的靶场,来实战演练文件上传漏洞。这玩意儿听起来高大上,其实原理很简单,就是网站让你上传文件时,没做好检查,结果你把一个“坏文件”(比如能控制服务器的脚本)给传上去了。DVWA这个靶场特别适合新手,因为它把漏洞难度分成了四个等级,从“不设防”到“铜墙铁壁”,咱们可以一步步打怪升级,把攻防思路彻底搞明白。

首先,你得有个实验环境。别担心,这就像搭个乐高积木,跟着我做就行。我推荐你用 PHPStudy 或者 XAMPP 这类集成环境,一键就能把PHP、MySQL、Apache这些网站运行需要的“零件”全装好。你可以在自己的Windows电脑上装,也可以装在一台虚拟机里,这样更安全,玩坏了也不心疼。我这里用的环境是:PHP 5.4.45, MySQL 5.7.26, DVWA版本是v1.10。为啥用老一点的PHP版本?因为很多经典漏洞在新版本里被修复了,老版本更能还原真实场景。

安装好PHPStudy后,把DVWA的源码包解压,放到PHPStudy的WWW目录下(比如 C:\phpstudy_pro\WWW\)。然后,你需要根据DVWA的配置说明(一般是一个 config.inc.php.dist 文件,复制一份改名成 config.inc.php),修改里面的数据库连接密码,和你PHPStudy里MySQL的密码对上号。接着,在浏览器里访问 http://127.0.0.1/DVWA/setup.php,点击页面底部的按钮创建数据库。完成之后,默认的登录账号是 admin,密码是 password。登录后,别忘了在左侧的“DVWA Security”里把安全级别调到“Low”,咱们从最简单的开始。

注意:所有实验务必在你自己的本地环境或授权过的靶机上进行。未经授权攻击他人系统是违法行为,切记!

好了,实验室搭好了,咱们的“武器”也得准备一下。我习惯用 Burp Suite Community(社区版免费)来拦截和修改浏览器发送的请求数据包,这是咱们绕过检查的关键工具。你还需要一个能连接“一句话木马”的客户端,比如 中国蚁剑(AntSword) 或者 C刀(Cknife),它们图形化界面做得不错,对新手友好。最后,一个顺手的文本编辑器(Notepad++或VS Code)用来写我们的“特殊”文件。工具齐活,接下来,咱们就正式进入DVWA的“文件上传”漏洞模块,从Low级别开始,看看一个完全不设防的上传点有多危险。

2. Low级别:门户大开的文件上传

把DVWA安全等级调到Low,点开“File Upload”模块,你会看到一个非常朴素的上传界面。在动手之前,咱们先当一回“代码审计员”,看看服务器端到底是怎么处理我们上传的文件的。用编辑器打开 DVWA/vulnerabilities/upload/source/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>Your image was not uploaded.</pre>';
    } else {
        echo "<pre>{$target_path} succesfully uploaded!</pre>";
    }
}

这段代码干了啥?第一行检查表单是否提交了上传请求。然后,它拼接了一个文件保存路径 $target_path,这个路径就是网站的根目录加上 hackable/uploads/ 文件夹,再加上你上传文件的原始文件名。最关键的是第三行 move_uploaded_file 函数,它直接把用户上传的临时文件,原封不动地移动到了目标路径。整个过程中,没有对文件类型、文件内容、文件后缀名做任何检查!这意味着什么?意味着你可以上传任何东西,包括一个包含恶意代码的PHP脚本。

实战开始。咱们先写一个最简单的PHP后门脚本,业内俗称“一句话木马”。新建一个文本文件,改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值