BroScience
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Nombre de la máquina:
IP de la máquina:
10.10.11.195
Sistema simulado:
Debian
Servicio vulnerado:
CVEs:
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.
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 probar nos salta un error y una contramedida por lo que tenemos que reevaluar el ataque...
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 introducimos el código de activación de nuestra cuenta como para activarla, y lo conseguimos !
Hecho esto conseguiremos loguearnos en la web!
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.
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.
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.
Vamos a intentar realizar descubrimiento mediante para asegurarnos de que no nos hemos dejado ningún directorio interesante por consultar. Os recuerdo que teneís los diccionarios de que son de gran utilidad para estas situaciones.
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 ....
Parece que se nos resiste un poco... En este punto vamos a buscar un payload mediante el cual hacer bypass y acceder. Usaremos los 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 conseguimos lanzar peticiones maliciosas.. En nuestro caso usaremos el payload ..%252f..%252f..%252f..%252fetc%252fpasswd
de cara a localizar el contenido de /etc/passwd .
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 .
Crearemos un archivo shell.php el cual contendrá una revershell de
Si te he ayudado sígueme y apóyame en