🔴GlasgowSmile
Write-up de la máquina GlasgowSmile de Proving Grounds #writeup #walkthrough
Enumeración
Servicios abiertos
Comenzamos la resolución de la máquina GlasgowSmile enumerando que servicios tiene el sistema objetivo abiertos.
Tenemos dos puertos abiertos: 22 y 80. El siguiente paso será la enumeración profunda de estos servicios.
Servicios abiertos:
Puerto 22 -> SSH -> OpenSSH 7.9
Puerto 80 -> HTTP -> Apache httpd 2.4.38
Enumeración Web
Después de realizar la enumeración de puertos abiertos, determinamos que en la máquina objetivo se está ejecutando un servidor Web. Veamos su contenido en el navegador.
Vemos una gran imagen de fondo. El código fuente tampoco contiene nada interesante. Vamos a continuar con la enumeración de directorios.
Interesante, el directorio "joomla". Puede que tengamos que vulnerar un sitio Web montado con este CMS.
En el directorio /joomla, vemos un login de sesión y un posible nombre de usuario.
En el directorio /joomla/administrator, encontramos el login para iniciar sesión en el Panel de Administrador del CMS.
Vamos a utilizar la herramienta "joomscan", una escáner multitarea para este tipo de CMS con la finalidad de que enumere versiones, plugins, usuarios.... que nos puedan permitir avanzar.
Interesante, la versión de CMS ejecutada y un archivo robots.txt. Si buscamos vulnerabilidades para la versión de Joomla, no encontramos ninguna que se adapte a ella. Dentro del archivo robots.txt encontramos la siguiente información.
Explotación
Después de comprobar que el formulario que encontramos en /joomla no es vulnerable a SQLi, vamos a tratar de realizar un pequeño ataque de fuerza bruta, para lo cual nos vamos a generar unos diccionarios de palabras personalizados, de la siguiente manera:
Tenemos múltiples opciones. Vamos a probarlas, a ver cual nos permite iniciar sesión en el Panel de Administrador.
Después de comprobar todas las credenciales, determinamos que las credenciales correctas son joomla:Gotham.
Ya tenemos acceso al Panel de Administrador.
El siguiente paso será buscar posibles puntos vulnerables. El CMS Joomla está construido en PHP así que vamos a tratar de buscar los archivos php que conforman el sitio Web para modificarlos y en su lugar añadir una reverse shell.
Y añadimos el código de la reverse shell
Y, abrimos el archivo component.php que se encuentra en el siguiente directorio.
Por otro lado, en nuestra máquina de ataque levantamos un oyente nc.
Tenemos la capacidad de acceder al directorio de Joomla. La cuenta de servicio utilizada es "www-data". Nuestro objetivo principal es verificar qué archivos de configuración podemos acceder para obtener un mayor nivel de acceso. Al ejecutar el comando "ls", encontramos el archivo "configuration.php", el cual contiene la información de la base de datos. Procederemos a guardar esta información.
Seleccionamos la base de datos "batjoke".
Copiamos estas credenciales a un archivo y desciframos los hashes de las passwords. Estos hashes están cifrados en base64.
Vamos a buscar que usuarios están en el sistema.
Pivotando a usuario "rob"
Los usuarios del sistema son rob, abner y penguin. El usuario rob coincide con el que encontramos en la base de datos anterior. Vamos a tratar de iniciar sesión en el sistema con este usuario.
Dentro del directorio del usuario "rob" encontramos la flag local.txt
Pivotando a usuario "abner"
Dentro del directorio de este usuario, también encontramos un archivo con un nombre un tanto extraño. Veamos su contenido.
Y, ahora desciframos la última línea del texto, que está cifrada en base64.
Ahora vamos a tratar de conectarnos con el usuario "Abner" y la nueva contraseña.
Vamos a buscar archivos que podamos leer o utilizar.
Copiamos este archivo al directorio /tmp y descomprimimos el archivo.
Pivotando al usuario "penguin"
Dentro del archivo encontramos una posible password para el usuario "penguin". Vamos a tratar de pivotar a este usuario.
Dentro del directorio de ese usuario encontramos una carpeta con un nombre curioso. Vamos a ver su contenido.
Dentro del directorio /SomeoneWhoHidesBehindAMask encontramos el archivo PeopleAreStartingToNotice.txt.
Tambíen puede ser interesante este archivo. Enumeremos su contenido.
Elevación de privilegios
Nada que nos permita avanza. Vamos a realizar diversas enumeraciones para determinar vectores de elevación de privilegios. Vamos a empezar por el archivo crontab.
Vamos a utilizar la herramienta pspy64 vamos enumerar los procesos que se están ejecutando en el sistema. Lo descargamos aquí.
Para enviarlo levantamos un servidor Python en nuestra máquina de ataque. Una vez enviado damos permisos y ejecutamos.
Después de un momento de ejecución, vemos un proceso donde se ejecuta el archivo .trash_old que encontramos anteriormente.
Como podemos escribir en ese archivo, vamos a tratar de ejecutar comandos para entablar una reverse shell.
Modificamos el archivo .trash_old
Por otro lado, en nuestra máquina de ataque levantamos un oyente nc en el puerto 1337. Como es un proceso de sistema tardará un poco en levantar la shell. Transcurrido un momento, tendremos shell con privilegios root.
Solo quedará buscar la flag proof.txt
Y ya estaría acabada la máquina GlasgowSmile de la plataforma Proving Grounds.
Last updated