WriteUp CTF Daily-Bugle de Try Hack Me

Introducción

Este artículo trata sobre la sala de Daily Bugle creada por TryHackMe. Esta máquina se encuentra disponible en https://tryhackme.com

Enumeración

El escaneo Nmap es imprescindible para todos los pentester. Esta es una de las formas de obtener información sobre una máquina. Ingrese el siguiente comando para realizar el escaneo.

Tenemos un total de 6 puertos abiertos disponibles en la máquina que son:

  • SSH (puerto 22)
  • HTTP (puerto 80)
  • SQL (puerto 3306)

Enumeración de directorios ocultos

Vamos a usar joomscan para encontrar el directorio oculto del servidor HTTP. Utilice el siguiente comando.

Aquí encontramos la versión de joomla que se utiliza (3.7.0), así como alguna otra información. Una verificación con searchsploit muestra que la versión es vulnerable a la inyección de SQL.

Descargamos el exploit 42033.txt y lo abrimos.

Ahora se nos abren dos opciones, realizar la inyección sql utilizando sqlmap o utilizar un script desarrollado en Python, llamado joomblah (https://github.com/XiphosResearch/exploits/tree/master/Joomblah) basado en la vulnerabilidad existente en la versión 3.7.0 de joomla.

Vamos a utilizar la herramienta joomblah. Ahora debería tener la tabla de usuarios volcada, lo que significa que tendrá el siguiente resultado:

Tenemos un hash de contraseña para Jonah. ¡Vamos a romperlo!

Descifrado de contraseñas

Vamos a usar John para descifrar la contraseña de Jonah (o al menos yo lo haré. Si prefieres otra cosa, siéntete libre de usarla). Sin embargo, antes de que podamos hacer eso, vale la pena verificar dos veces para asegurarnos de que sabemos qué tipo de hash es este. Para esto estoy usando name-that-hash –f hash.txt.

Sí, exactamente como se veía: este es un hash de Bcrypt. Parece que nos espera una larga espera…

Seriamente; si haces esto con rockyou, no se completará en los primeros cinco minutos, como suele ser la regla para los CTF. Dependiendo de los hashes por segundo de su computadora, podría tomar entre 7 y 8 minutos y más de media hora.

El comando para descifrar la contraseña es el siguiente:

La contraseña para el usuario jonah es……

Shell reversa

Genial, entonces tenemos credenciales para iniciar sesión en el sitio web. ¿Ahora qué?

Hagamos uso de ellos.

Vuelva a mirar los resultados de su escaneo joomscan.  Notarás que había un directorio interesante llamado /administrator. Vayamos allí y echemos un vistazo:

Inicie sesión con el nombre de usuario “jonah” y la contraseña que encontró anteriormente. Nos recibe la pantalla de administración de CMS:

Con un poco de investigación, descubrí que es posible cargar un shell inverso en el servidor web. Dirigirse a Extensions -> Templates -> Templates en la barra de menú superior:

Haga clic en el enlace a la segunda plantilla: “Detalles y archivos de Protostar”, luego seleccione “Nuevo archivo”:

Elija un nombre de archivo y seleccione php como el tipo de archivo, luego haga clic en “Crear”

Ahora, copie y pegue el PHP Reverse Shell de Pentestmonkey en el nuevo archivo (recordando cambiar la IP y el puerto predeterminados), luego haga clic en “Guardar y cerrar”.

¡Estamos listos para ejecutar!

Encienda un oyente de netcat en su puerto elegido, luego navegue hasta el archivo que cargó. Estoy usando curl pero hacerlo en su navegador web también funcionaría. De cualquier manera, la URL es http://<machine-ip>/templates/protostar/error.php.

Explotación

Indague un poco en esta máquina y vea lo que puede encontrar. Puedes ver que en el directorio /home hay un usuario llamado jjameson:

Esto es genial, pero aún no tenemos su contraseña, así que sigamos buscando.

Después de husmear un poco, encontré un archivo en el /var/html/www (es decir, servidor web) directorio:

Como el nombre sugiere, configuration.php se utiliza para configurar Joomla, que incluye elementos como el nombre de usuario y la contraseña de la base de datos. Como mínimo, esto podría llevarnos al servidor MariaDB, entonces, ¿lo comprobamos?

Después de comprobarlo, esta contraseña también funciona en SSH por lo que ahora tenemos credenciales para iniciar sesión como jjameson:

Y dentro del perfil jjameson encontramos el user.txt.

Escalada de privilegios

Como siempre, lo primero que vamos a probar es sudo -l para obtener una lista de comandos que podemos ejecutar como sudo:

Parece que podemos usar sudo para ejecutar Yum: el administrador de paquetes predeterminado para el cuadro de CentOS en el que estamos. Perfecto. Una búsqueda rápida de gtfobins revela que hay un privesc que usa yum que debería funcionar muy bien en este caso:

Y haciendo comprobaciones, vemos que ya tenemos privilegios root. Buscamos la carpeta root donde se encuentra la flag y ya tendremos finalizada la máquina.

Tags:

No responses yet

Deja una respuesta

Tu dirección de correo electrónico no será publicada.