Alert

Reconnaissance
Realizaremos un reconocimiento con Nmap para ver los puertos que están expuestos en la máquina Alert. Este resultado lo almacenaremos en un archivo llamado allPorts.
A través de la herramienta de extractPorts, la utilizaremos para extraer los puertos del archivo que nos generó el primer escaneo a través de Nmap. Esta herramienta nos copiará en la clipboard los puertos encontrados.
Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. Verificamos que al parecer se trata de una máquina Ubuntu que dispone de una página de Apachey servicioSSH.
Transformaremos el archivo generado targetedXML para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.
Accederemos a http://localhost y verificaremos el resultado en un formato más cómodo para su análisis
Añadiremos la siguiente entrada en nuestro archivo /etc/hosts, debido a que en el resultado de Nmap, nos aparecía que el sitio web nos redirigía a http://alert.htb
Web Enumeration
Accedemos al sitio web http://alert.htb en el cual parece ser un visualizado de archivos .MD (Markdown). Vemos que nos permite subir archivos en el sitio web.

Por otro lado, también comprobamos que disponemos de una página para contactar con los administradores del sitio web.

Crearemos el siguiente archivo example.md para subirlo al sitio web y visualizar el comportamiento de este.
Subiremos este archivo example.md en el sitio web y le daremos a la opción de View Markdown.

Comprobaremos que ha interpretado el archivo de Markdown correctamente

Realizaremos fuzzing en el sitio web y logramos encontrar un nuevo subdominio llamado statistics.
Añadiremos esta nueva entrada en el archivo /etc/passwd.
Probaremos de acceder a http://statistics.alert.htb y vemos que nos requiere de credenciales de acceso que no disponemos.

Realizaremos una enumeración de directorios y archivos PHP en el sitio web, y nos encontramos con la siguientes páginas.
Initial Access
Performing XSS injection to obtain .htpasswd with MarkDown file
En el siguiente artículo nos habla de los archivos .htpasswd. En la enumeración inicial, descubrimos que el sitio web se encontraba en un Apache. En el sitio web de statistics.alert.htb nos requería de credenciales de acceso.
Lo cual nos hace pensar que si lograramos llegar a visualizar el archivo .htpasswd, lograríamos obtener las contraseñas en formato hash.
Crearemos un archivo payload.md que contenga el siguiente contenido JavaScript. El objetivo de este script, es realizar un Local File Inclusion para visualizar el contenido .htpasswd de la página web statistics.alert.htb y otorgarnos el resultado en nuestro servidor web que montaremos posteriormente.
El archivo lo subiremos en el visualizador Markdown del sitio web.

Al subir el archivo, nos da la opción de Share Markdown el cual nos porporciona un enlace.

Probaremos de acceder al apartado de Contact Us para validar si enviando este enlace a los administradores del sitio web, algún usuario llegase a ejecutarlo.

Desde nuestro servidor Web, verificaremos que hemos recibido el contenido del archivo .htpasswd.
Descodificaremos el contenido obtenido a través de Cyberchef y logramos tener el archivo en texto plano. Comprobamos que nos aparece el usuario albert y su contraseña en formato hash.

Cracking Hashes
Comprobaremos el tipo de hash del cual se trata, nos muestra que es un hash de Apache MD5. Miraremos en hashcat cual es el modo del tipo de hash y al ejecutar la herramienta logramos crackear el hash y obtener la contraseña en texto plano.
SSH connection with the new password cracked
Nos conectaremos mediante el servicio SSH con el usuario albert y verificamos que logramos acceder y visualizar la flag de user.txt.
Privilege Escalation
Reviewing of the processes running on the machine
Revisando los puertos internos que se encuentran en el equipo, verificamos que el puerto 8080 se encuentra abierto, lo cual parece ser que haya un servicio HTTP en dicho puerto.
Revisando los procesos que se encuentran en ejecución, visualizamos que el usuario root tiene en ejecución este proceso que se ejecuta en la ruta /opt/website-monitor.
Realizaremos SSH Port Forwarding sobre el puerto 8080 hacía nuestro equipo local.
Accederemos desde nuestro navegador al puerto 8080 y comprobamos que se trata de la siguiente página web que no nos proporciona ningún tipo de información relevante.

Abusing Group Permissions to Create a PHP File on a Website and Gain Access as Root User
Accediendo a la ruta que encontramos que el usuario root tenía en ejecución esta página web, nos encontramos en el directorio config disponemos de permisos para leer y ejecutar archivos en esta ruta, dado que el usuario actual, dispone del grupo management.
Crearemos en este directorio que disponemos de acceso, un archivo PHP que nos establezca una Reverse Shell hacía nuestro equipo. Verificaremos que hemos logrado crear el archivo gzzcoo.php en la ruta /opt/website-monitor/config.
Desde nuestra terminal de atacante, nos pondremos en escucha por el puerto especificado en el payload creado.
Realizaremos una petición por GET a través de la herramienta cURL sobre 127.0.0.1:8080/config/gzzcoo.php
Dado que el servicio se ejecuta con los permisos del usuario root, al haber subido ese archivo PHP en la ruta donde teníamos acceso de escritura, su ejecución sería realizada por el mismo usuario root. Esto nos permitió que el usuario root ejecutara el payload de la Reverse Shell que subimos, dándonos así control total del sistema.
Comprobamos que podemos visualizar la flag de root.txt.
Última actualización
¿Te fue útil?