Daily Bugle – TryHackMe Walkthrough

Daily Bugle – TryHackMe Walkthrough

Hoy toca resolver la maquina Daily Bugle de TryHackMe, donde, a través de explotar un Joomla vulnerable a través de una inyección SQL, se podrá acceder en primera instancia al sistema y, luego, a través de una reutilización de credenciales y al binario yum, se podrá escalar privilegios hasta llegar al usuario root.

Ip de la máquina en mi caso: 10.10.101.14

Dificultad asignada por la plataforma: Difícil 

Reconocimiento

Lo primero, lanzar el script rec0ldd (un script que hice para automatiazr el escaneo con la herramienta furious, que al final copia todos los puertos abiertos al portapepeles con xclip):

rec0ldd <ip>
clear ya funciona

Escaneo con rec0ldd

Ahora, procedo a hacer un escaneo con Nmap, con los parámetros típicos, -sC para lanzar todos los scripts NSE que estén en la categoría “default”, -sV para detectar las versiones de los servicios, -T4 ya que estamos en entornos controlados para acelerar el escaneo y -oN para que la salida del comando, además de mostrarla por pantalla, nos las envíe a un fichero llamado “nmapScan”:

nmap -sC -sV -T4 22,80,3306 <ip> -oN nmapScan
clear ya funciona

Escaneo con nmap

Con el escaneo, podemos ver que estamos frente de un puerto 22 (SSH), un 80 (HTTP (Posible Joomla)) y un 3306 (SGBD (MariaDB)), bien, en este punto hay que enumerar aún más el servicio web, partiremos de herramientas como whatweb y wafw00f para obtener más información del servidor y, detectar si tiene algún WAF activo respectivamente:

whatweb <url>
wafw00f <url>
clear ya funciona

Escaneo con whatweb

clear ya funciona

Escaneo con wafw00f

Ya podemos hacernos una mejor idea de la aplicación web y, no tenemos ningún WAF aparentemente, bien, entramos ahora a la aplicación en cuestión:

clear ya funciona

Página principal del sitio web

Que decir, es un Joomla con uno de los temas que vienen por defecto, ahora bien, hay que detectar la versión para buscar posibles vulnerabilidades y, por consiguiente, exploits. Usualmente en Joomla, hay un fichero llamado “README.txt” que suele contener información jugosa para nosotros como pentester’s, en este caso, contendrá la versión del CMS:

clear ya funciona

Fichero README.txt 

Partiendo de esta versión, buscamos exploits públicos, vemos que hay muchos relacionados con la SQLi:

clear ya funciona

Búsqueda de exploit’s 

Indagando un poco más dentro de algunos exploits públicos que, nos pedían usar sqlmap para explotar la vulnerabilidad, pude darme cuenta de que el CVE que identifica la posible vulnerabilidad es el CVE-2017-8917, así que para este ejemplo partiré de otros exploits, no los que estén en ExploitDB y nos los muestre searchsploit ni de los que estén en metasploit, usaré uno que encontré por github que responde a este CVE

clear ya funciona

Código del exploit

Explotación

Vemos que está hecho en Python, por lo cual podemos copiar todo el código, crear un fichero, pegar el código y ejecutarlo, en mi caso lo llamaré “exploit.py”.

Al intentar ejecutarlo, veremos que nos pide un argumento que sería la URL del objetivo:

clear ya funciona

Parámetros del exploit

clear ya funciona

Ejecución del exploit

Al ser ejecutado, podemos ver que ha identificado una tabla en la base de datos de la aplicación y, dentro de dicha tabla, ha sacado la información de la columna “users”, ahora mismo tenemos tanto un posible nombre de usuario, email y un hash de una contraseña correspondiente a dicho usuario.

Bien, tenemos un hash, ahora, para identificarlo podemos hacer uso de la herramienta hashid que esta preinstalada en Kali:

clear ya funciona

Detección del tipo de hash

Vemos que tenemos 3 posibles algoritmos de cifrado con los que se cifro esta contraseña, en este caso el prefijo $2y$ es propio de bcrypt, aunque también lo son $2a$ y $2b$, por lo que, partiendo de esto, usaremos john, para ello guardamos el hash en un fichero, por ejemplo pass.txt y ejecutamos john indicándole el formato y la wordlist:

john --wordlist=/usr/share/wordlists/rockyou.txt --format=bcrypt pass.txt

Después de un rato, veremos que conseguimos la contraseña:

clear ya funciona

Ahora el comando clear y Ctrl + L funciona

Ahora toca logearse, para ello nos vamos al directorio /administrator dentro de la aplicación, esto lo podemos detectar gracias a fuzzing con herramientas como gobuster, dirbuster, wfuzz, etc, aunque, en el escaneo con nmap ya nos figuraba este directorio en el robots.txt:

clear ya funciona

Entradas deshabilitadas en el robots.txt

Así que accedemos y nos logeamos con las credenciales que encontramos, en este punto ya estamos dentro del CMS:

clear ya funciona

Acceso a la administración de Joomla

Bien, ahora toca ver cómo podemos de alguna forma ejecutar código malicioso para que, podamos acceder al sistema como tal, esto es muy variado y puede ser desde añadir un fragmento pequeño de código en PHP (PHP porque es el lenguaje con el que opera este CMS), subir una extensión maliciosa, modificar un tema, etc, en mi caso, haremos lo primero, insertaré un código corto en PHP que permitirá obtener una shell reversa, lo hare modificando el fichero “error.php”, para ello, nos vamos a Templates > Tempates nuevamente > Protostar Details and Files (selecciono esta porque es la que está activa)  > error.php:

clear ya funciona

Localización del fichero

clear ya funciona

Inyección del código y netcat puesto a la escucha

Y una vez añadido, solamente queda visitar la página en cuestión para que el código se ejecute y podamos obtener la shell, para ello, podemos conocer la estructura de Joomla, por ejemplo, viendo su Github o, usando un poco la lógica, si estamos dentro de templates y usando protostar, pues lo más probable es que la ruta para acceder al recurso en cuestión sea /templates/protostar/error.php:

clear ya funciona

Primer acceso obtenido

En este punto ya estamos dentro, ahora, haremos un tratamiento de la tty para que tengamos una shell más interactiva.

Escalación de privilegios

En este punto toca escalar privilegios, vemos que hay un usuario en el sistema llamado “jjameson” pero no podemos acceder a su directorio home porque no tenemos los permisos:

clear ya funciona

Información sobre el usuario

Entonces, en este tipo de CTF, cuando se usa un CMS, es muy normal conseguir ficheros de configuración, en los cuales, suelen haber credenciales, si nos documentamos un poco sobre Joomla, veremos que esta información sensible suele guardarse en el fichero “configuration.php” que es un fichero que está en la misma ruta donde está instalado Joomla, en este caso en /var/www/html:

clear ya funciona

Fichero con credenciales

Al leerlo, veremos que, evidentemente tenemos unas credenciales:

clear ya funciona

Ahora el comando clear y Ctrl + L funciona

En este caso, estas credenciales son las de acceso a la base de datos, no al sistema, pero puede que haya reutilización de credenciales, por ende, podemos probar esa contraseña para acceder como root o como “jjameson”, y como este último ha funcionado:

clear ya funciona

Acceso como jjameson

Bien, una vez dentro como este usuario, hay que escalar al usuario root y bueno, ya que estamos leer la bandera de usuario:

clear ya funciona

Lectura de user.txt

Ahora sí que si, a escalar a root, lo que se me ocurrió fue hacer lo básico en privesc en Linux, un sudo -l para ver que recursos podemos ejecutar con permisos elevados a nivel de sudoers, en este caso tenemos que podemos usar yum, yum es en pocas palabras un gestor de paquetes:

clear ya funciona

Permisos del usuario a nivel de sudoers

Para escalar, podemos hacer uso de la información que nos provee GTFOBins:

clear ya funciona

Contenido en GFOBins

Al hacerlo, ya estamos dentro como root:

clear ya funciona

Ejecución de los comandos

Y se finaliza la máquina leyendo el root.txt:

clear ya funciona

Lectura de root.txt

Únete al servidor de Discord de Coldd Security y aprende ciberseguridad cada día.

Calificación

  • Dificultad de acceso: 35% 35%
  • Dificultad de escalación de privilegios: 31% 31%

He hecho esta puntuación basándome en estos valores propios:

Fácil1% – 30%

Medio: 31% – 70%

Difícil: 71% – 100%

Anuncio

Sobre el Autor

Martin Frias

Founder of Coldd Security

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información adicional sobre protección de datos:
Responsable: Martin Frias.
Finalidad: Moderar los comentarios de este sitio web.
Cesión: NO se cederán a nadie, salvo obligación legal.
Derechos: Acceso, rectificación, cancelación y borrado de tus datos.
Legitimación: Tu consentido expreso.

REDES SOCIALES

Newsletter

Estadísticas

  • 106.286
  • 51

TheHackerSnow

0

Share This