Guitjapeo

Máquina "GuitJapeo" de TheHackersLabs

Autor: Lenam

Dificultad: Experto

guitjapeo

RECONOCIMIENTO

En mi caso la ip de la máquina es: 192.168.152.163

Comenzamos con un escaneo de nmap:

El puerto 80 y 443 están corriendo: nginx 1.22.1

El puerto 22 está corriendo: OpenSSH 9.2p1

Y estamos frente a un linux debian.

Puerto 80:

80

Al parecer es una página que hace una animación y podemos escribir para que la haga con la frase o palabra que le digamos.

Ahora usaremos gobuster para ver si encontramos algo útil:

gobuster

Eso es lo que encontramos y lo único que necesitamos, por lo que vamos a /login y veremos un panel de login, como no tenemos usuario nos registraremos y luego iniciaremos sesion. Una vez dentro estaremos en /messages y veremos lo siguiente:

mensajes

Al parecer podemos enviarle mensajes al administrador y con una url, podriamos ponernos con un servidor http.server de python y ver si realmente entra o trata de otra cosa. Para esto haremos lo siguiente:

​ •Primero nos montamos el servidor con python3:

​ •Segundo, le enviamos el siguiente link al administrador (reemplaza la ip por la tuya):

Una vez hecho eso, esperamos y recibiremos lo siguiente:

admin

Como vemos, hemos confirmado que el administrador entra al link. Ahora podriamos probar en robar su cookie, pero el problema es que la cookie tiene activado httponly:

cookie

Esto significa que no podremos robársela al administrador. Explicacion completa

También si nos fijamos con burpsuite, veremos que cuando enviamos un mensaje, envia la peticion a /api/messages. Viendo que existe esa carpeta, podriamos usar gobuster en ella:

gobuster1

Como vemos tenemos un info y users, pero lo que nos importa es info, ya que si entramos desde el navegador veremos lo siguiente:

cookie1

Como vemos, muestra la cookie, por lo que ya tenemos algo muy útil. Ahora si revisamos la página del principio, veremos que en donde se puede poner texto para la animacion es vulnerable a XSS, esto nos podria ayudar a robar la cookie del administrador, pero si nos fijamos, está protegido por un Content-Security-Policy. Si vamos a Csp-evaluator y pegamos las que encontramos, nos dirá lo siguiente:

evaluator

Como vemos tenemos uno crítico el cual nos permitirá robar la cookie del administrador.

INTRUSION

Ahora probaremos si es posible robar la cookie, para esto tendremos que hacer lo siguiente:

• Crearnos una cuenta de github si no tenemos

• Crear un repositorio público (luego lo borramos)

• Crear un archivo .js con el siguiente contenido pero reemplazando la ip por la tuya:

Este código realiza una solicitud GET a https://guitjapeo.thl/api/info, y espera que el servidor responda con un objeto JSON que contenga una propiedad cookie. Una vez que recibe la respuesta, redirige al usuario a http://192.168.56.216/?data=, pasando la cookie obtenida codificada en Base64 como un parámetro de consulta.

• Una vez subido el archivo, montamos un servidor http con python3:

• Ahora solo nos quedaría desde el navegador, poner el siguiente XSS:

En mi caso seria así:

Usaremos "cdn.jsdelivr.net" porque si nos fijamos en el CSP el script-src permitia la carga de scripts desde ese dominio.

Mas información sobre el tema: HackTricks

Una vez hecho todo eso recibiremos esto en el servidor:

cookie2

Como vemos, el robo de cookies es correcto, por lo que ahora simplemente le enviamos este enlace al administrador:

Ahora conseguimos la cookie del administrador:

cookie3

Ahora solo vamos al panel e iniciamos sesion, luego cambiamos nuestra cookie por la del administrador.

Administrador

Como vemos, en su panel hay un nuevo boton para limpiar usuarios, el cual nos manda a https://guitjapeo.thl/api/command/?cmd=clearUsers(), al parecer está ejecutando codigo javascript, por lo que enviaremos una reverse shell con este payload:

Solo que en url encode.

(Claramente antes hay que escuchar con netcat: sudo nc -nlvp 443)

ESCALADA DE PRIVILEGIOS

Lenam

Estando dentro seremos el usuario Lenam.

Si revisamos un poco, veremos que la web tiene un .git, esto significa que pueden haber commits o archivos borrados que todavia se pueden restaurar. Para ver eso ejecutamos en el mismo directorio esto:

Como vemos hay dos archivos borrados, uno es "archivo.zip" y el otro es "password.txt", por lo que los restauramos de la siguiente manera:

Una vez restaurados, tendremos que pasarnos ambos a nuestra máquina atacante, ya que no contamos ni con zip ni 7z. Como tampoco contamos con python3, haremos lo siguiente:

Primero escuchamos con netcat de la siguiente manera:

Luego desde la máquina victima ejecutamos lo siguiente:

y hacemos lo mismo para el password.txt.

Ahora si nos fijamos, el archivo.zip tiene contraseña, pero nos la dan en el password.txt al ejecutar ese archivo con el lenguaje que nos dice en el comentario de la primera línea. El problema de esto, es que parecen ser muchisimos archivos así, y que siempre el password.txt está o en python, ruby, php o javascript, por lo que sabiendo esto crearemos un script en python que lo que haga sea revisar el password.txt, ver en que lenguaje está y luego ejecutar el password.txt según el lenguaje que corresponda.

Script:

Para este script se necesita tener instaladas las siguientes herramientas:

• Node

• Php

• Python

• Ruby

• 7z

Una vez ejecutado veremos lo siguiente:

Al parecer la contraseña del usuario lenam es {[XY2P_oODN). Ahora si ejecutamos sudo -l y ponemos la contraseña, veremos que podemos ejecutar git como root. Por lo que luego de buscar una escalada, encontré esta que en mi caso funcionó:

Una vez hecho eso, ya seremos root y podremos leer las flags:

root

Gracias por leer....

Última actualización