MrRobot - TryHackMe

Summary

En este caso debemos encontrar tres banderas ubicadas en la maquina MrRobot. Donde a partir del script http-enum de Nmap encontramos varios archivos y directorios ocultos en el directorio raíz del servidor web. El primer recurso que encontré fue el archivo robots.txt. Donde se obtuvo la primera bandera y un lista de palabras, que lo utilizaremos en fases posteriores. El segundo recurso que encontré fue una aplicación web creada con el CMS WordPress. El tercer recurso que encontré fue un formulario para acceder a la plataforma de WordPress. Donde realice fuerza bruta con Burp Suite o WPScan con el fin de encontrar unas credenciales validas. Luego, con las credenciales validas obtenidas logre autenticarme en la plataforma de WordPress. Donde modifique un archivo del código fuente del theme twentyfifteen que utilizaba la aplicación web con el fin de ganar acceso a la maquina MrRobot. Otra manera que encontré para tener acceso es subiendo un plugin, que contenía un script PHP que me generaba un conexión reverse shell desde el sistema objetivo hacia mi maquina. Luego, escale privilegios aprovechando que el archivo binario nmap tenia habilitado el permiso SUID. De esta manera llegue a ser el usuario root en la maquina MrRobot.

Fase Reconocimiento

Para resolver esta ejercicio empezaremos utilizando el comando openvpn con el fin de establecer una conexión VPN con la red virtual dónde está la máquina MrRobot. Para ello utilizaremos el archivo de configuración, que lo podemos descargar en la plataforma de Tryhackme, que puede incluir información como la dirección del servidor VPN, los certificados y claves de seguridad, la configuración de encriptación, etc.

Además, la plataforma de Tryhackme nos muestra la dirección ip de la máquina MrRobot.

Fase Escaneo y Enumeracion

Luego pasaremos a la fase de Escaneo y Enumeración con el fin de poder escanear los puertos del nodo. Además, obtendremos los servicios que se han levantado en los puertos abiertos, las versiones de los servicios, y el sistema operativo de la máquina MrRobot.Para ello utilizaremos Nmap.Donde le pasaremos los siguientes parametros:

  • El parametro -sC o –script=”default” para utilizar todos los scripts de la categoría default con el fin de realizar un escaneo y detección de los puertos de manera avanzada.
  • Los parametros -O y -sV con el fin de conocer el sistemas operativos del nodo y las versiones de los servicios levantados.
  • El parametro -n para evitar la resolución DNS, y el parametro –min-rate para indicarle el número de paquetes por segundo que va utilizar Nmap para el escaneo con el fin de evitar sobrecargar la red con el tráfico generado por Nmap.
  • El parametro -p- para realizar un escaneo de los 65535 puertos del nodo y el parametro –open con el fin de que nos muestre información solo de los puertos abiertos.
  • El parametro -oN para guardar el resultado del escaneo en un archivo de texto plano

Ahora ejecutaremos los scripts de Nmap de la categoría vuln con el fin de conocer las vulnerabilidades de los servicios que están levantados en los puertos abiertos de la máquina MrRobot.

Del resultado obtenido podemos observar que a través del script http-enum.nse de Nmap, que realiza fuerza bruta de directorios con una lista de posibles nombres de archivos y directorios, pude obtener varios directorios y archivos ocultos del directorio raiz de la aplicacion web, que esta alojada en el servidor web de la maquina MrRobot,y que ha sido creado utilizando el CMS WordPress. Esto lo podemos comprobar utilizando Wappalyzer.

Además, WordPress viene a ser un sistema de gestión de contenido(o CMS) por lo que es una plataforma informática que nos va permitir crear y gestionar contenido en línea, ya sea sitios web o aplicaciones web, sin tener conocimientos avanzados de programación o diseño web.

Ahora accederemos al recurso feed, que fue descubierto por el script http-enum.nse de Nmap, a traves de mi navegador web.

Llegamos a observar la versión de CMS WordPress, que ha sido utilizado para la creacion de la aplicaciob web.

Ahora accederemos al recurso robots.txt, que fue descubierto por el script http-enum.nse de Nmap, a traves de mi navegador web.Ademas, debemos saber que este archivo es utilizado por el desarrollador de la aplicacion web con el fin de prohibir que ciertas paginas web del sitio o aplicacion web sean mostradas en los resultados de busqueda de los motores de busqueda.

Llegamos a observar dos archivos.

Ahora a traves del navegador web vamos a observar el contenido de esos dos archivos.

Llegamos a observar que el primero archivo viene a ser nuestra primera bandera.Ademas, el segundo archivo viene a ser una lista de palabras que puede ser usada para encontrar usuarios y passwords mediante fuerza bruta.

Ahora accederemos al recurso readme.html, que fue descubierto por el script http-enum.nse de Nmap, a traves de mi navegador web.

Llegamos a observar que es un archivo de documentación que está en el directorio raíz del CMS WordPress.

Ahora accederemos al recurso wp-login.php, que fue descubierto por el script http-enum.nse de Nmap, a traves de mi navegador web.

LLegamos a observar que es un formulario para acceder a la plataforma del CMS Wordpress.

Ahora intentaré realizar fuerza bruta con la herramienta Burp Suite con el fin de obtener un usuario y su contraseña, utilizando la lista de palabras que encontramos anteriormente. Para ello utilizaremos el servidor Proxy que viene incluido en Burp Suite con el fin de capturar la solicitud POST HTTP que hacemos desde nuestro navegador cuando nos autenticamos en el formulario.

Luego enviamos la solicitud POST capturada hacia la ventana Intruder con el fin de seleccionar el tipo de ataque, que va ser Cluster bomb ya que no sabemos ningún username y password valido.Además, seleccionamos las variables que representan el username y el password en nuestro formulario.

Luego en la ventana Payloads cargamos las dos listas de palabras, para cada variable, que vam a ser la lista de palabras encontradas anteriormente.Después, damos clic a Start Attack para iniciar el ataque de fuerza bruta.

Llegamos a observar que la herramienta va tener que realizar casi 2 millones de combinaciones por lo que se va tardar mucho,pero para mi suerte logré encontrar unas posibles credenciales en la combinación 145.

Ahora probaremos este username y password en el formulario para acceder a la plataforma del CMS WordPress.

Llegamos a observar que al probar estas credenciales en el formulario, solo el username es válido.

Ahora que tenemos un username válido podemos usar un ataque Sniper con el fin de realizar fuerza bruta con el password.Además, habría menos combinaciones que la herramienta tendría que probar.

Mediante esta manera llegamos a encontrar un username:Ángela, y su password:252Fmrrobot.

Otra herramienta que podemos utilizar para hacer fuerza bruta es WPScan, que viene a ser una herramienta para escanear y auditar sitios o aplicaciones webs basados en WordPress con el fin de identificar posibles vulnerabilidades de los sitios webs.Además, nos permite realizar fuerza bruta para descubrir usernames y sus passwords asociados utilizando un diccionario personalizado.

Llegamos a observar que la herramienta realiza fuerza bruta de directorios para encontrar directorios y archivos ocultos del sitio web basado en WordPress.Además, esta herramienta nos da a conocer las versiones de los Themes y Plugins que está utilizando el sitio o aplicacion web basado en WordPress. Además, también obtenemos la versión del WordPress instalado en la máquina MrRobot.Por ultimo, llegamos a encontrar el password 252Fmrrobot para el username Ángela con esta herramienta.

Otra manera de realizar fuerza bruta en el formulario sería utilizando el archivo xmlrpc.php que está habilitado según el resultado del escaneo de la herramienta WPScan. También lo podemos verificar de forma manual accediendo a la ruta del recurso.

Mediante este archivo xmlrpc.php, aplicaciones externas pueden comunicarse con el CMS WordPress usando el protocolo XML-RPC. Las operaciones que pueden realizar las aplicaciones externas hacia el sitio web es la autenticación, gestión de usuarios que puede ser crear nuevos usuarios, actualizar perfiles y asignar roles). Aprovechando esto realizaremos un ataque de fuerza bruta utilizando Burp Suite.

Luego modificamos la solicitud GET HTTP que capturamos con el proxy de Burp Suite a una solicitud POST HTTP con el fin de solicitar al servidor web que procese los datos que le estaremos enviando.Luego, dirigirnos la solicitud hacia la ventana Repeater con el fin de analizar la respuesta del servidor cuando ingresemos siguientes comandos:

Llegamos a observar todos los métodos que podemos realizar en el CMS WordPress.Ademas, Los métodos que son utilizados para realizar fuerza bruta son wp.getUserBlogs, wp.getCategories or metaWeblog.getUsersBlogs. En esta ocasión utilizaré wp.getUserBlogs,y agregare los siguientes comandos en mi solicitud POST HTTP:

Luego, enviare la solicitud hacia la ventana Intruder. Donde escogeré el ataque Sniper ya que conocemos un username(Ángela), y utilizare la misma lista de palabras utilizadas anteriormente.

También llegamos a encontrar el password 252Fmrrobot para el username Ángela utilizando el archivo xmlrpc.php.

Ahora nos autenticaremos en el formulario con las credenciales encontradas anteriormente.

Llegamos a observar que el usuario Ángela viene a ser el administrador del sitio web.Además, hay otro usuario mich05654 que también podemos obtener sus credenciales utilizando cualquiera de los métodos mencionados anteriormente.

En esta oportunidad utilizaremos WPScan para realizar fuerza bruta sobre el usuario mich05654 con el fin de encontrar sus credenciales.

Fase Ganar Acceso o Explotacion

Teniendo en cuenta los resultados obtenido en WPScan.Sabemos que el sitio web utiliza un theme llamado twentyfifteen (Un theme viene a ser una plantilla prediseñada que determinan la apariencia visual y el diseño del sitio o aplicacion web que se creara).Además, son altamente personalizables, pueden modificar sus aspectos visuales y funcionales desde los archivos de su código fuente.

Aprovechando esto modificaremos un archivo PHP, llamado 404.php, del código fuente del theme twentyfifteen que utiliza el sitio web con el fin de generar una conexión reverse shell hacia nuestra máquina mediante el puerto 1500.

Luego habilitamos el puerto 1500 en nuestra máquina para que esté en escucha y esperando la conexión entrante. Para ello utilizamos la herramienta netcat.Además utilizamos el comando rlwrap para que la shell generada en nuestra máquina presenta funcionalidades como el autocompletado de comandos, historial de comandos, etc.

Ahora, accederemos a la ruta del archivo 404.php a traves del navegador web para que se ejecute el script PHP que contiene, que viene a ser la conexión reverse shell hacia nuestra máquina.

De esta manera llegamos a tener acceso a la máquina MrRobot siendo el usuario daemon.

Otra manera de obtener acceso sería a través de un plugin, que viene a ser piezas de software que se pueden instalar y activar en sitios web basados en WordPress con el fin de agregar funcionalidades adicionales y personalizar la apariencia y comportamiento del sitio web.Para nuestro caso instalaremos un archivo PHP, como plugin, que contiene un comando que nos genera una conexión reverse shell hacia nuestra máquina.

Luego, doy clic a Install Now para instalar nuestro plugin, que vendría a ser nuestro archivo PHP, en el directorio raíz de la aplicacion web.Luego, voy a la sección Media para observar mi archivo subido y observamos el path o ruta de donde se encuentra alojado el plugin que subimos.

Luego, habilitamos el puerto 1700 en nuestra máquina para que esté en escucha y esperando la conexión entrante. Para ello utilizamos la herramienta netcat.Además, utilizamos el comando rlwrap para que la shell generada en nuestra máquina presente funcionalidades como el autocompletado de comandos, historial de comandos, etc.

Ahora, accederemos a la ruta del plugin, que subimos anteriormente, mediante el navegador web con el fin de que se ejecute el script PHP que contiene, que viene a ser la conexión reverse shell hacia nuestra máquina.

Fase Escalada de privilegios

Ahora buscaremos archivos con permisos SUID o SGID con el fin de escalar privilegios, y llegar a ser el superusuario o root. Para ello ejecutamos el comando find, indicando que busque desde el directorio /, archivos con permisos SUID.

LLegamos a observar varios archivos binarios con permiso SUID.

En esta oportunidad utilizaremos el archivo binario nmap para la escalada de privilegios.Para ello vamos a crear un script nse, cuyo codigo va estar escrito en el lenguaje Lua, con el fin de que sea compatible con los scripts de Nmap.Ademas, este script nos generara una shel pero con los privielgios de un usuario root.

Pero nos topamos con un problema, y es que el parametro –script no está disponible para la versión 3.81 de Nmap que está instalada en la máquina MrRobot, pero buscando en el navgador web llegamos a saber que para las versiones 2.02-5.21 de Nmap se tiene el parametro --interactive que nos permite entrar en un modo interactivo. Donde podemos ejecutar comando(En nuestro caso siendo el usuario root).

LLegamos a observar que a traves del comando !sh obtenemos una shell sh siendo el usuario root.

Ahora con el comando find buscaremos en el directorio /, archivos que comienzen con la palabra bandera.De esta manera encontramos la segunda y tercera bandera. Luego con el comando cat vemos el contenido de ambas banderas.