Darkside
En este artículo, vamos a abordar la resolución de la máquina Darkside de la plataforma HackMyVm. Iniciamos con una exhaustiva enumeración del sitio web, lo que nos lleva al descubrimiento de un archivo que contiene varios nombres de usuario. Entre ellos, destacamos el usuario kevin
, que será crucial para obtener acceso al sistema web mediante un ataque de fuerza bruta. Una vez dentro, nos enfrentamos a la tarea de decodificar una cadena proporcionada, que al decodificarla nos permite acceder a otro sitio web.
Además, al analizar el código fuente de este nuevo sitio, encontramos una ruta que nos lleva a unas credenciales para iniciar sesión vía SSH como el usuario kevin
. Una vez dentro del sistema, procedemos a movernos de forma lateral hacia el usuario rijaba
. Finalmente, para elevar nuestros privilegios, nos aprovechamos de una configuración inadecuada de sudo
, lo que nos permite llevar a cabo una escalada de privilegios exitosa.
Reconocimiento
Comenzamos lanzando una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.
Reconocimento usando el comando ping
Podemos observar, que responde al envío de nuestro paquete, verificando de esta manera que tenemos conectividad. Por otra parte, confirmamos que estamos frente a una máquina Linux basandonos en el TTL (Time To Live).
Enumeración
Descubrimiento de puertos abiertos
Realizamos un escaneo con nmap para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.
1
nmap -sS -p- --open --min-rate 5000 -Pn -n -oG scanPorts 192.168.1.10 -vvv
Descubrimiento de puertos abiertos
ver la Cheatsheet para más detalle sobre los parámetros utilizados.
Enumeración de versión y servicio
Lanzamos una serie de script básicos de enumeración propios de nmap, para conocer la versión y servicio que esta corriendo bajo los puertos abiertos.
1
nmap -sCV -p22,80 -vvv -oN targeted 192.168.1.10
Descubrimiento de versión y servicio con nmap
ver la Cheatsheet para más detalle sobre los parámetros utilizados.
Enumeración del servicio web
Comenzamos realizando una enumeración básica del servicio web que esta corriendo en el puerto 80.
Hacemos uso de la utilidad wathweb
para conocer algo de información sobre las tecnologías utilizadas en el sitio web.
1
2
❯ whatweb http://192.168.1.10
http://192.168.1.10 [200 OK] Apache[2.4.56], Cookies[PHPSESSID], Country[RESERVED][ZZ], HTML5, HTTPServer[Debian Linux][Apache/2.4.56 (Debian)], IP[192.168.1.10], PasswordField[pass], Title[The DarkSide]
Vemos que esta utilizando Apache(2.4.56)
como servidor web.
Si ingresamos al sitio web, nos encontramos con el siguiente formulario de login, donde se solicita el ingreso de un usuario y contraseña:
Si probamos ingresar las tipicas credenciales por defecto, como son, admin:admin
, admin:password
, admin:password123
, etc, vemos que no tenemos éxito, al igual que si intentamos ralizar alguna inyección SQL.
Podemos hacer uso del plugin Wappalyzer
para conocer más información.
Uso de Wappalyzer para conocer las tecnologías utilizadas en el sitio web
Observamos en este caso, que además de indicarnos que Apache
es el servidor web que esta alojando el sitio, nos indica que el lenguaje de programación utilizado es PHP
, del cual no sabemos la versión especifica.
Al realizar un poco de web fuzzing, descubrimos la ruta /backup
.
Si ingresamos a la misma, nos encontramos con el archivo vote.txt
.
Y dentro del archivo vote.txt
encontramos lo siguiente:
Al parecer es una especie de votación, donde el usuario kevin
a logrado entrar al grupo Darkside.
Esto nos hace pensar, que el usuario kevin
como nuevo miembro del grupo tiene acceso al sitio de darkside, es decir, que tiene credenciales validas.
Explotación
Usuario kevin
En nuestro caso, solo conocemos el nombre de usuario, por lo que podemos hacer uso de la herramienta hydra
para aplicar fuerza bruta sobre el formulario y ver si encontramos la contraseña.
Fuerza bruta con hydra al formulario web
Genial!, logramos descubrir las credenciales del usuario Kevin, kevin:iloveyou
.
Utilizamos las credenciales para iniciar sesión en el sitio web. Sitio web de Darkside
Vemos que nos comparten una cadena en base58
.
Podemos hacer uso de la web CyberChef para aplicar la decodificación de la misma.
Al realizar la decodificación, observamos que obtenemos una cadena en formato base64
. Luego, procedemos a aplicar la decodificación adecuada.
El cual nos das como resultado el siguiente dominio: sfqekmgncutjhbypvxda.onion
Si ingresamos a este, descubrimos el siguiente sitio:
Mirando el código fuente de la web, decubrimos otra ruta del sitio: hwvhysntovtanj.password
Accedemos a la ruta indicada y nos encontramos con las sigiuientes credenciales: kevin:ILoveCalisthenics
.
Si recordamos nuestro escaneo de puertos inicial, el puerto 22 (SSH)
estaba abierto, por lo que podemos probar estas credenciales para conectarnos como el usuario kevin
a la máquina víctima.
Vemos que tenemos éxito y logramos conectarnos al sistema y leer la flag de user.txt
Usuario rijaba
Si hacemos un poco de enumeración básica del sistema, nos encontramos con las credenciales del usuario rijaba
dentro del archivo .history
del usuario kevin
.
Utilizamos estas credenciales para movernos de forma lateral al usuario rijaba
.
Escalación de privilegios
Volvemos a realizar un poco de enumeración básica, pero en este caso, con el usuario rijaba
y nos encontramos con que podemos ejecutar con sudo
y sin proporcionar contraseña el binario nano
.
Si hacemos una búsqueda rápida en GTFOBins, vemos que tenemos una vía potencial para escalar nuestros privilegios.
Utilizamos este medio para elevar nuestros privilegios y leer la flag de root.txt
.
De esta forma, concluimos el Writeup de la máquina Darkside.
Espero que los conceptos hayan quedado claros. En caso de tener alguna duda, te invito a realizar nuevamente la máquina para afianzar tus conocimientos.
¡Gracias por leer!
Happy Hacking!