简介
在本实验中,我们将学习 Web 应用程序渗透测试,这是信息安全的一个关键领域。Web 应用程序广泛应用于各个领域,因此其安全性是重中之重。本实验旨在提供在目标机器上托管的易受攻击的 Web 应用程序中识别并利用漏洞的实践经验。我们的目标是深入了解常见的 Web 应用程序漏洞以及用于利用这些漏洞的技术。
设置环境
在这一步中,我们将设置实验环境,并熟悉相关工具和目标系统。
首先,我们需要获取 Kali Linux 镜像的 ID。双击桌面上的 xfce 终端并运行以下命令即可查看:
docker images
我们需要启动 Kali Linux 容器,它将作为我们的攻击机。打开终端并运行以下命令:
docker run -ti --network host image-id bash
该命令将启动一个新的 Kali Linux 容器,并允许你与其 shell 进行交互。
接下来,打开一个新的终端,我们需要启动目标机器,即一个名为 Metasploitable2 的易受攻击系统。运行以下命令启动虚拟机:
sudo virsh start Metasploitable2
等待目标机器启动,这可能需要 1-3 分钟。
虚拟机运行后,验证是否可以从 Kali Linux 容器 ping 通目标机器:
ping 192.168.122.102
侦察与信息收集
在这一步中,我们将执行侦察并使用各种技术收集有关目标系统的信息。
首先,我们在 Kali Linux 容器中使用 nmap 工具扫描目标机器,以识别开放端口和运行的服务:
nmap -sV -sC -oN nmap_scan.txt 192.168.122.102
该命令将执行 TCP 连接扫描(-sC)以确定哪些端口是开放的,并进行版本扫描(-sV)以识别每个开放端口上运行的服务及其版本。输出结果将保存到名为 nmap_scan.txt 的文件中(-oN)。
扫描需要一些时间。扫描完成后,使用 cat 命令查看 nmap_scan.txt 文件,根据开放端口和服务识别潜在的攻击向量:
cat nmap_scan.txt
接下来,我们将使用 gobuster 工具对目标 Web 服务器进行目录和文件枚举:
gobuster dir -u http://192.168.122.102 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 30 -o gobuster_scan.txt
该命令将使用指定的字典文件(-w)对目标 Web 服务器上的目录和文件进行暴力破解。-t 选项指定并发线程数,-o 选项将输出保存到名为 gobuster_scan.txt 的文件中。
分析 gobuster_scan.txt 文件,找出任何可能提供额外信息或攻击向量的有趣目录或文件。
漏洞利用
在这一步中,我们将尝试利用在上一步中识别出的漏洞。
根据从 nmap 和 gobuster 扫描中收集到的信息,识别目标系统中的潜在漏洞。Metasploitable2 包含易受攻击的 Mutillidae 训练应用程序,因此在这一步中,我们将测试该应用程序中的真实页面,而不是使用占位符 URL。
Web 应用程序中常见的漏洞之一是 SQL 注入。Mutillidae 中的 user-info.php 页面接受查询字符串中的 username 参数,这为我们在 Kali Linux 容器中使用 sqlmap 提供了一个具体的攻击目标。
sqlmap -u "http://192.168.122.102/mutillidae/index.php?page=user-info.php&username=admin&password=admin&user-info-php-submit-button=View+Account+Details" -p username --batch --risk=3 --level=5 --random-agent --dbs
该命令测试目标虚拟机上真实的 Mutillidae 端点。-u 选项提供完整的易受攻击 URL,-p username 告诉 sqlmap 重点关注哪个参数,--batch 以非交互方式运行,--risk=3 和 --level=5 启用更深入的测试,--random-agent 会轮换用户代理字符串,--dbs 则要求 sqlmap 在利用成功后枚举数据库名称。
根据你尝试利用的漏洞,你可能需要使用不同的工具或技术。请参考特定漏洞和工具的文档及资源。
后渗透与权限提升
在这一步中,我们将利用侦察期间发现的服务暴露情况,确认目标系统上的 shell 访问权限,并获取基本的后渗透证据。
Metasploitable2 的 nmap 扫描通常显示 TCP 端口 1524 是开放的。在此虚拟机上,该服务提供了一个 root shell,因此我们可以直接从 Kali Linux 容器连接到它,而无需假设已经存在单独的反向 shell。
在 Kali Linux 容器中运行以下命令:
printf 'id\nuname -a\nexit\n' | nc 192.168.122.102 1524
这会向目标虚拟机上暴露的 shell 服务发送三条命令。id 命令确认该服务赋予你的账户权限,uname -a 记录内核信息,exit 在输出打印到终端后干净地关闭 shell。
如果连接成功,你应该会看到包含 uid=0(root) 和 Metasploitable2 内核详细信息的输出。这些输出足以证明在后渗透阶段成功获得了 shell 访问权限。
在实际评估中,你会将此暴露的服务记录为关键发现,因为它无需任何额外的利用链即可直接获得特权访问权限。
总结
在本实验中,我们学习了 Web 应用程序渗透测试,并获得了在目标机器上托管的易受攻击的 Web 应用程序中识别并利用漏洞的实践经验。我们涵盖了侦察、Web 应用程序枚举、使用 sqlmap 进行 SQL 注入测试以及基本的后渗透验证。
本实验提供了一个受控环境,用于练习现实场景并培养 Web 应用程序安全技能。通过遵循这些步骤,我们学习了如何设置实验环境、执行侦察和信息收集、测试真实的 Mutillidae 端点以进行 SQL 注入,以及通过目标系统上暴露的服务确认 shell 访问权限。
本实验使我们掌握了 Web 应用程序渗透测试的实用知识和经验,这对于保护 Web 应用程序并在恶意攻击者利用漏洞之前识别潜在风险至关重要。



