Daily Bugle Walkthrough - TryHackMe [ES]

Write-up of the room Daily Bugle - TryHackMe. Difficulty: Hard 🔴

Daily Bugle Walkthrough [ES]

[Task 1] Deploy

En esta primera tarea únicamente debemos desplegar la máquina y esperar 5 minutos a que se configure:

ping

Después realizamos un escaneo inicial con Nmap para saber puertos abiertos y servicios/versiones:

nmap
nmap

Y finalmente, para resolver esta tarea, simplemente debemos acceder a la máquina con el navegador para saber “¿Quien robó el banco?”.

Pista: Personaje de Marvel que le pica una araña.

[Task 2] Obtain user and root

Esta segunda tarea es la que realmente tiene toda la dificultad de la sala, dado que debemos conseguir tanto la flag del user como de root. Tras el análisis que hemos realizado de servicios y puertos, vemos como la web de la máquina utiliza el CMS Joomla!, por lo tanto, pasamos a utilizar la herramienta especializada joomscan para buscar la versión, etc…

joomscan
joomscan

En este caso, encontramos que la versión de Joomla! que corre en el sitio es una versión antigua, por lo que, nos disponemos a buscar vulnerabilidades y sus exploits. Para esta versión en concreto (3.7.0) existe una vulnerabilidad de SQLI recogida en el CVE-2017-8917. Con una simple búsqueda por internet nos topamos con una infinidad de exploits para esta vulnerabilidad, en mi caso haré uso de este.

exploit
exploit

Con este exploit somos capaces de volcar la base de datos del Joomla! y sacar un usuario junto a su contraseña hasheada. Para romper el hash haremos uso de nuestro amigo John pero en este caso reduciremos el Rockyou dado que la contraseña no se encuentra en las primeras posiciones y podría tardar más de 10 minutos, por lo que, como yo ya se cual es, nos quedaremos con una versión reducida.

john

Teniendo ya el usuario y la contraseña podemos loguearnos en el Joomla!. Ya podemos desde aquí entablarnos una reverse shell a nuestra máquina, para ello, debemos editar el tema que esté en uso, y ya sea editando un php existente o un fichero php nuevo que subamos, deberemos de ponerle la reverse shell de php que queramos ejecutar. En mi caso, y dado que no encontraba la ruta por la que acceder a un fichero nuevo subido (más tarde, y leyendo otros writeups me di cuenta de cómo hacerlo dado que no es simplemente de la forma http://IP/reverseshell.php, si no que tienes que indicar el tema y alguna cosa más), no me rompí la cabeza y cambié totalmente el index.php para obtener la reverse shell. Después de editar el fichero, y teniendo el netcat en escucha, debemos de acceder al fichero php. A continuación incluyo las capturas para que sea más descriptivo.

reverse
reverse
reverse
reverse
reverse

En este momento tenemos una shell del usuario “apache” por lo que es probable que estemos muy restringidos. Por otra parte, sabemos que es una sala marcada como difícil por lo que seguramente haya que hacer un movimiento lateral antes de pelearnos por el root. En estos casos, lo que debemos hacer en primera instancia, es revisar todos los ficheros y carpetas que se encuentren cerca del directorio en el que estamos, es decir, toda la información respecto a la web y otras posibles webs que encontremos. En las siguientes capturas podemos ver como nos topamos con un fichero de configuración que contiene una posible contraseña, por lo que tras mirar que usuarios tiene el sistema, podemos probar a ver si podemos convertirnos en alguno de ellos. En este caso funciona, y nos convertimos en el usuario “jjameson”.

lateralMovement

Ahora dado que ya somos el usuario del sistema, podemos leer la flag de User. User Flag:

userFlag

Una de las primeras cosas que se prueban al ser un usuario es saber que privilegios de Sudo tiene este usuario ejecutando un “sudo -l”. En este caso, nos encontramos que podemos ejecutar un binario llamado “yum” como root. Siempre que esto nos reporte alguna cosa, debemos de tirar de GTFOBins. Haciendo uso de GTFOBins podemos ser root en esta máquina.

root
root
root

Root Flag:

root

Conclusión

Esta ha sido una máquina bastante interesante, sobretodo, por la primera parte en la que hacemos un análisis básico sobre el Joomla! y explotamos una vulnerabilidad de esa versión. En mi caso, era la primera vez que hacía uso de la herramienta Joomscan y me he dado cuenta que es bastante similar a otras como WPScan. Respecto al movimiento lateral, es una parte sencilla pero que en algunas ocasiones, si pasas por alto el revisar los directorios puede que no te fijes. Aún así, yo creo que haciendo uso de enumeradores como LinPeas o LinEnum problamente nos lo reporte. Finalmente, la escalada a root es muy básica por lo que no debería de darnos ningún tipo de problema.

En definitiva, es una máquina que aunque este caracterizada como difícil, en mi opinión es como mucho de dificultad media. La parte que menos me ha gustado y que me ha puesto un poco de los nervios, ha sido en el momento de crackear la contraseña del Joomla!, dado que al realizarlo tirando del Rockyou completo, me ha tardado muchísimo tiempo.

Alberto Fernandez-de-Retana
Alberto Fernandez-de-Retana
PhD Student

Kaixo! PhD Student at University of Deusto under supervision of Igor Santos-Grueiro and Pablo G. Bringas. My research interests include web security & privacy. In my free time I love to be pizzaiolo.