Vulnerabilidad de Redireccionamiento Abierto
Vulnerabilidad de Redireccionamiento Abierto

Detalles: Vulnerabilidad de Redireccionamiento Abierto

Una de las vulnerabilidades más comunes y en gran medida ignoradas por los desarrolladores web es Open Redirect (también conocido como “Redireccionamientos y Reenvíos no Validados“). 

Una redirección abierta (Open Redirect) es cuando una aplicación o servidor web utiliza un enlace no validado enviado por el usuario para redirigirlo a un sitio o página web determinado. Aunque parece una acción inofensiva dejar que el usuario decida a qué página quiere ser redirigido, esa técnica, si se explota, puede tener un grave impacto en la seguridad de la aplicación, especialmente cuando se combina con otras vulnerabilidades y trucos.

Información

Open Redirect está clasificado dentro del Top 10 (A10) de vulnerabilidades por OWASP (2013) y con el código CWE-601 por Common Weakness Enumeration.

Qué es una Vulnerabilidad Open Redirect

Un sitio web es vulnerable a Open Redirect cuando los valores de parámetros (la porción de URL después de “?”) en una solicitud HTTP GET permiten información que redirigirá a un usuario a un nuevo sitio web sin ninguna validación del objetivo de redireccionamiento. Dependiendo de la arquitectura de un sitio web vulnerable, la redirección podría ocurrir después de cierta acción, como el inicio de sesión, y a veces podría ocurrir instantáneamente al cargar una página.

Vulnerabilidad Open Redirect
Vulnerabilidad Open Redirect

Un ejemplo de un enlace de sitio web vulnerable podría verse así:

https://www.ejemplo.com/login.html?RelayState=http%3A%2F%2Fejemplo.com%2Fnuevo

Nota

Ejemplos de Palabras típicas de redireccionamiento: RelayState, ReturnUrl, RedirectUri, Return, Return_url, Redirect, Redirect_uri, Redirect_url, RedirectUrl, Forward, ForwardUrl, Forward_URL, SuccessUrl, Redir, Exit_url, Destination

En este ejemplo, el parámetro “RelayState” indica dónde enviar al usuario después de un inicio de sesión exitoso (en nuestro ejemplo es ” http://ejemplo.com/nuevo”). Si el sitio web no valida el valor del parámetro “RelayState” para asegurarse de que la página web de destino es legítima y prevista, el atacante podría manipular ese parámetro para enviar a la víctima a una página falsa creada por el atacante:

 https://www.ejemplo.com/login.html?RelayState=http%3A%2F%2FSitioFalso.com

Las vulnerabilidades de Open Redirect no reciben suficiente atención de los desarrolladores porque no dañan directamente el sitio web y no permiten que un atacante robe directamente los datos que pertenecen a la empresa. Sin embargo, eso no significa que los ataques Open Redirect no sean una amenaza. Uno de los principales usos de esta vulnerabilidad es hacer que los ataques de phishing sean más creíbles y efectivos.

¿Cómo Explotar una Vulnerabilidad Web de Open Redirect?

Hubiera sido injusto señalar que cualquier sitio web o compañía específica es vulnerable a Open Redirect porque muchas compañías lo tienen. En cambio, es más útil demostrar cuán comunes son esos sitios web y lo fácil que es encontrarlos.

Hacer una búsqueda en la web es una de las mejores herramientas para encontrar Open Redirect en tu propio sitio web y en un Internet más amplio. Por ejemplo:

allinurl:"RelayState=https"
allinurl:"RelayState=http"
allinurl:"RelayState=https" site:intel.com

Lo siguiente está lejos de ser una lista completa, pero podría actuar como un ejemplo de lo que es posible:

  • Abusar de la confianza del usuario: Un atacante puede abusar la confianza del nombre de dominio en una URL para explotar una vulnerabilidad de redireccionamiento abierto en el sitio web vulnerable y redirigir al usuario a un sitio malicioso sitio para ejecutar más ataques, como se explica en las siguientes secciones.
  • Explotación para un ataque de phishing: Cuando un usuario hace clic en un enlace de un sitio web legítimo, a menudo no sospechará si de repente aparece un mensaje de inicio de sesión. Para lanzar una estafa de phishing exitosa, el atacante envía a la víctima un enlace, por ejemplo, por correo electrónico, que explota la vulnerabilidad en el sitio web vulnerable ejemplo.com: https://ejemplo.com/redirect.php?redirecturl=http://atacante.com/phishing/

Probabilidad de éxito

La probabilidad de intentos de phishing exitosos es bastante alta ya que el nombre del servidor ejemplo.com se muestra cuando el usuario hace clic en el enlace.

Ejemplo Explotar Vulnerabilidad Open Redirect
Ejemplo Explotar Vulnerabilidad Open Redirect
  • Redirección a sitios web maliciosos: También es posible redirigir a un usuario de Internet, de otro modo cuidadoso, a un sitio que aloja contenido controlado por atacantes.
  • Explotación para ejecutar código: También se puede utilizar para ejecutar una payload XSS redirigiendo a JavaScript: URI en lugar de páginas HTML. Esos se pueden usar para ejecutar directamente código JavaScript en el contexto del sitio web vulnerable. Un ejemplo sería este:
https://ejemplo.com/index.php?redirecturl=javascript:alert(document.domain)

Lo anterior mostraría una ventana de alerta con el contenido de ejemplo.com. Sin embargo, en la mayoría de los navegadores modernos esto solo funciona cuando la redirección está basada en JavaScript.

¿Cuál es el Impacto de una Vulnerabilidad de Open Redirect?

Como se mencionó anteriormente, los impactos pueden ser muchos y varían desde el robo de información y credenciales hasta la redirección a sitios web maliciosos que contienen contenido controlado por atacantes, que en algunos casos incluso causan ataques XSS. Entonces, aunque una redirección abierta puede parecer inofensiva al principio, los impactos de esta pueden ser severos en caso de ser explotables.

¿Cómo Prevenir Vulnerabilidades de Open Redirect?

Consejo

La forma más fácil y efectiva de prevenir redireccionamientos abiertos vulnerables sería no permitir que el usuario controle hacia dónde los redirige la página

Hay algunas formas posibles de remediar este problema.

  • Intenta evitar las redirecciones por completo. En la mayoría de los casos, no son necesarios.
  • Si es necesaria una redirección, no confíes en la entrada del usuario para su destino.
  • Asigna la entrada de destino a un valor que el servidor luego traduzca al valor original antes de realizar la redirección. Esto evita que el atacante lo cambie.
  • Ten una lista blanca de URL: esto puede hacerse con expresiones regulares si es necesario. Ten cuidado con esto, ya que es fácil cometer errores sin darse cuenta.

Si nada de lo anterior es posible, fuerce todos los redireccionamientos a una página donde el usuario tendrá que hacer clic en un botón para confirmar que está abandonando el sitio de confianza.

Palabras Finales

Algunos miembros de la comunidad de seguridad argumentan que los redireccionadores ayudan a la suplantación de identidad (phishing), porque los usuarios pueden estar inclinados a confiar en la información sobre herramientas de desplazamiento del mouse en un enlace y luego no examinar la barra de direcciones una vez que se realiza la navegación.

Mientras que algunas compañías consideran que esto es un riesgo legítimo, otras no.

Nuestra opinión sobre esto es no es un indicador de seguridad confiable y puede ser manipulado de muchas maneras; Por lo tanto, invertimos en tecnologías para detectar y alertar a los usuarios sobre el phishing y el abuso, pero generalmente sostenemos que un pequeño número de redireccionadores monitoreados adecuadamente ofrece beneficios bastante claros y plantea muy poco riesgo práctico.

https://sites.google.com/site/bughunteruniversity/nonvuln/open-redirect

Si deseas compartir algunas de tus consultas de Google favoritas que utilizas para el descubrimiento de vulnerabilidades, publícalas en la sección de comentarios.

Más artículos
PhantomDoor Hacking Windows Linux macOS Android backdoor
PhantomDoor: Hacking Windows/Linux/macOS/Android con backdoor