🏁BroScience

Datos
Notas

Nombre de la máquina:

IP de la máquina:

10.10.11.195

Sistema simulado:

Debian

Servicio vulnerado:

CVEs:

1. Enumeración y descubrimiento

Comenzamos el ejercicio lanzando un nmap a la IP de la máquina para comenzar a descubrir los puertos y servicios que hay abiertos.

En este punto vamos a ver el portal web desplegado en el puerto 80 y detectamos que nos redirige automáticamente al 443.

Mediante Wapalizer podremos obtener algo de información sobre la página y su diseño que puede sernos de interés para comenzar.

En este punto tenemos que buscar dentro de la web si encontramos algo interesante. En nuestro caso encontramos que el pos0t "Seated Rows" está escrito por el administrador del servicio, el cual al pulsar sobre su perfil nos proporciona cierta información relevante. Además encontramos los usuarios bill, michael, john y dmytro.

Vamos a intentar realizar descubrimiento mediante FFUF para asegurarnos de que no nos hemos dejado ningún directorio interesante por consultar. Os recuerdo que teneís los diccionarios de SecLists que son de gran utilidad para estas situaciones.

Mediante este fuzzing extraemos varios directorios interesantes con los que podemos trabajar.

Vamos a probar a crear un usuario en https://broscience.htb/register.php y activarlo ya que al probar a iniciar sesión no nos deja.

Al acceder a activate.php nos dice que es necesario un código de activación, por lo que debemos buscar otra manera.

Realizando una enumeración de nuevo localizamos el directorio "includes" el cual vamos a revisar.

Al revisar el fichero img.php nos encontramos con que se busca un parámetro, por lo que vamos a probar con una técnica de LFI....

Al probar nos salta un error y una contramedida por lo que tenemos que reevaluar el ataque...

Parece que se nos resiste un poco... En este punto vamos a buscar un payload mediante el cual hacer bypass y acceder. Usaremos los payloads de Omurugur y hacemos fuzzing para descubrir cuales nos permiten acceder. Descubierto el Payload solo debemos comenzar a lanzar peticiones y seguir con el descubrimiento y encontraremos que mediante doble encoding conseguimos lanzar peticiones maliciosas.. En nuestro caso usaremos el payload ..%252f..%252f..%252f..%252fetc%252fpasswd de cara a localizar el contenido de /etc/passwd .

Dado que tenemos una base de datos de postgresl nos lanzamos a ver que encontramos en ese archivo db_connect.php

En este punto analizamos activate.php para ver como se actividad el usuario creado en register.php mediante burpsuite.

Encontrando la función de generación del código de activación de nuestro usuario. Tenemos en este punto que analizar generate_activation_code .

En este punto encontramos que el string que genera el código de activación depende de la hora en PHP, por lo que hacemos una modificación y empezamos. Para ello usaremos strtotime y generaremos el código de activación mediante la fecha actual. Utilizamos un generador online de PHP, en mi caso busco rápido por internet y encuentro w3school.

En este punto introducimos el código de activación de nuestra cuenta como para activarla, y lo conseguimos !

Hecho esto conseguiremos loguearnos en la web!

2. Escalada a usuarios del sistema

En este punto vamos a hacer un doble encode de la petición que queremos mandar para ver includes.php

En nuetro caso lo hacemos con CyberChef en su formato online e insertamos la petición mediante burpsuite.

Analizamos la parte de la parte de "class Avatar"

Lo vamos a modificar para que ejecute una revershell y nos de acceso a la máquina, generando un payload mediante el cual ejecutarlo, el cual nos queda así.

Al ejecutarlo nos generará una cookie quue usaremos de Payload para ejecutar una shell que desplegaremos en un servidor python.

Crearemos un archivo shell.php el cual contendrá una revershell de PentestMonkey

Y levantamos el servidor python... En este punto generamos el Payload anterior.

En este punto ya debemos sustituir la cookie y se ejecutará la shell conectando con nuestro shell.php y en ese momento obtendremos acceso a una shell dentro de la máquina victima.

Con los datos de la DB de PostgreSQL que teniamos localizada podemos acceder y ver su contenido viendo los hash de los usuarios generados.

3. Escalada de privilegios

En este punto tenemos que intentar sacar las contraseñas mediante los hash de los diferentes usuarios usando JohnThe Ripper. Extraemos las contraseñas de los usuarios bill, dmytro y michael y nos conectamos mediante ssh con el usuario bill a la máquina.

En este punrto ya podremos ver lal flag del usuario y deberemos empezar a trabajar en la escalada al usuario root. Empezamos haciendo un descurimiento dentro de la máquina y encontramos el fichero /opt/renew_cert.sh en el cual podemos obtener una posible escalada de privilegios.

Dentro del código podemos ver que sirve para comprobar la caducidad de un certificado SSL e imprimir cierta información. Esto nos permite que al crear un certificado a punto de caducar root genere un nuevo certificado y con ello ver su nombre.

En un minuto comprobaremos los permisos de /bin/bash y cuando hayan cambiado ejecutaremos bash -p obteniendo acceso como root a la máquina.

Si te he ayudado sígueme y apóyame en Hack The Box

Última actualización

¿Te fue útil?