Hat Vulnyx (Intermediate - 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-08-16 12:32 EDT
Nmap scan report for 192.168.5.81
Host is up (0.00060s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Apache2 Debian Default Page: It works
65535/tcp open ftp pyftpdlib 1.5.4
| ftp-syst:
| STAT:
| FTP server status:
| Connected to: 192.168.5.81:65535
| Waiting for username.
| TYPE: ASCII; STRUcture: File; MODE: Stream
| Data connection closed.
|_End of status.
MAC Address: 08:00:27:AA:22:5B (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.98 secondsVeremos varias cosas interesantes entre ellas el puerto 65535 que en este caso por lo que parece corresponde a un puerto FTP por lo que vamos a probar si se pudiera entrar de forma anonima.
Pero veremos que no nos deja, si entramos en la pagina web veremos una pagina de apache2 normal sin nada interesantes, vamos a realizar un poco de fuzzing a ver que vemos.
Gobuster
Info:
Estamos viendo cosas interesantes, vamos a entrar por ejemplo en php-scripts o logs veremos una pantalla en blanco, lo que significa que algo hay por detras, vamos a realizar ese fuzzing en los 2 a ver que vemos.
Info:
Encontraremos algo interesante en esta parte, veremos un file.php, si entramos no veremos nada, pero vamos a probar a ver si tuviera algun parametro vulnerable en el que se pueda leer archivos del sistema LFI.
FFUF
Info:
Veremos que aparentemente a funcionado, vamos a ver si es cierto probandolo de forma manual.
Info:
Vemos que esta funcionando, por lo que vamos a utilizar wrappers de LFI para poder realizar un RCE de la siguiente forma:
Wrappers de LFI
URL_Script = https://github.com/synacktiv/php_filter_chains_oracle_exploit/blob/main/filters_chain_oracle_exploit.py
Si queremos por ejemplo crear un parametro llamado cmd que ejecute cualquier comando que le pongamos, seria de la siguiente forma...
Info:
Copiamos eso y lo metemos despues del igual de la siguiente manera...
Info:
Veremos que esta funcionando, por lo que vamos a generarnos una reverse shell para acceder al servidor.
Nos ponemos a la escucha antes de enviarlo.
Ahora si enviamos lo de antes de la URL y volvemos a donde tenemos la escucha veremos lo siguiente:
Vemos que ha funcionado y seremos dicho usuario, por lo que vamos a sanitizar la shell.
Sanitización de shell (TTY)
Escalate user cromiphi
Si exploramos un poco nos encontraremos con unos archivos interesantes en la carpeta /opt.
Si listamos veremos lo siguiente:
note.txt
id_rsa
Vemos lo que parece ser la id_rsa del usuario cromiphi pero esta cifrada, vamos a probar a decodificarla a ver si hay suerte.
Info:
Veremos que hemos decodificado de forma exitosa el id_rsa por lo que obtendremos la contraseña del mismo, pero vemos que no tenemos SSH para utilizarlo, si nos vamos dentro de la maquina victima a la carpeta logs que vimos antes, veremos un archivo llamado vsftpd.log que si lo leemos veremos lo siguiente:
Info:
Vemos informacion bastante interesante, entre ello vemos que hay un usuario que consiguo iniciar sesion de forma exitosa llamado admin_ftp por lo que ya tenemos un usuario detectado.
Vamos a probar a realizar un ataque de fuerza bruta por FTP con dicho usuario.
Hydra
Info:
Veremos que hemos encontrado las credenciales de forma correcta, por lo que vamos a iniciar sesion en dicho servidor.
Metemos como contraseña cowboy y veremos que estaremos dentro.
Si listamos la carpeta share que vemos dentro del servidor, veremos los archivos id_rsa y note que hemos visto antes en la carpeta /opt, pero seguimos sin tener el SSH, vamos a enumerar los puertos por su IPv6 a lo mejor esta filtrado solamente pro ese protocolo.
Info:
Con ese comando lo que hemos echo es hacer que respondan las ips en la red local de eth0 de nuestra interfaz de red, a la llamada de ping pero con el protocolo IPv6, nos respondieron 2 IPs por lo que vamos a crear un script para automatizar el saber que IP corresponde a la del SSH.
recon.sh
Lo ejecutamos de esta forma:
Info:
Vemos que la segunda IP si tiene el SSH abierto, por lo que vamos a conectarnos por dicha IPv6 al SSH con el id_rsa que obtuvimos.
SSH
Metemos como contraseña ilovemyself...
Info:
Veremos que estaremos dentro, por lo que leeremos la flag del usuario.
user.txt
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar el binario nmap como el usuario root, por lo que haremos lo siguiente:
Info:
Con esto veremos que ya seremos root, por lo que leeremos la flag de root.
root.txt
Last updated