Open redirect - URL redirect
web hacking
Una redirección abierta (open redirect) es una vulnerabilidad de seguridad en una aplicación web que permite a un atacante redirigir a los usuarios a una URL maliciosa, utilizando la reputación del sitio web legítimo. Esto se logra porque la aplicación permite que un parámetro controlado por el usuario determine el destino de una redirección sin validar que sea seguro. Los atacantes la usan para crear enlaces de phishing que parecen legítimos para engañar a las víctimas y hacer que visiten sitios maliciosos.
Formas de open redirect
para entender mejor el funcionamiento del open redirect, supongamos que una página web utiliza un parámetro de redirección como href o window.location para redireccionar al usuario a paginas dentro del dominio, por ejemplo:
https://example.com/page?redirect_uri=/home
https://example.com/page?url=/homeo talvez por ejemplo para redireccionar a un video de YouTube:
https://example.com/page?redirect_uri=https://youtube.com/watch?v=.......estas funciones pueden ser explotadas al introducir una URL a un dominio externo el cual no era el esperado originalmente:
https://example.com/page?redirect_uri=https://atacante.compodemos encontrar estas funciones de redireccionamiento al analizar cuidadosamente el frontend
Open redirect Evitando regex
a veces como medida de seguridad se utilizan regex, lo que bloquea el uso de ciertos caracteres específicos por coincidencia. Esto puede dificultar bastante introducir nuevas URLs, pero podemos utilizar ciertas técnicas para evitar la detección:
Usar Doble URL encode en puntos "
."Usar Doble URL encode en la doble barra oblicua o componente "
://"
para evitar utilizar el componente en una URL podemos aplicar otro truco (solo funcional en webs HTTPS) el cuál consiste en introducir solo el doble punto:
https://atacante.com -> https:atacante.comOpen redirect a XSS
gracias a la naturaleza de las funciones utilizadas en el Open redirect como href podemos derivar el open redirect a un XSS, esto se hace escribiendo javascript:alert() es un método de JavaScript que muestra un cuadro de diálogo emergente, ejemplo de uso:
https://example.com/page?url=javascript:alert()Last updated