🔴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.

nmap -p- --open --min-rate 2000 -Pn -n -vvv 192.168.207.79

Tenemos dos puertos abiertos: 22 y 80. El siguiente paso será la enumeración profunda de estos servicios.

nmap -p22,80 -Pn -n -sVC 192.168.207.79

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.

dirsearch -u "http://192.168.207.79/" -i 200,301 -t 20

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.

joomscan -u http://192.168.207.79/joomla/

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:

nmap -sV --script http-joomla-brute --script-args 'userdb=usernames.txt,passdb=diccionario.txt,http-joomla-brute.hostname=192.168.207.79,http-joomla-brute.uri=/joomla/administrator/index.php,http-joomla-brute.threads=3' -Pn 192.168.207.79

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.

http://192.168.207.79/joomla/templates/protostar/component.php

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.

mysql -u joomla -p babyjoker
show databases;

Seleccionamos la base de datos "batjoke".

USE batjoke;
SELECT * FROM taskforce;

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.

cat /etc/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