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后门脚本,业内俗称“一句话木马”。新建一个文本文件,改

&spm=1001.2101.3001.5002&articleId=149036010&d=1&t=3&u=a35b5732b0be4804a9cc9673affdb477)
703

被折叠的 条评论
为什么被折叠?



