🐈‍⬛
H4CKdotCL
Laboratorio
  • 🪅Bienvenidos al Book
  • Certificaciones
    • ⏳Junior Penetration Tester - eJPTv2
    • 🥉Ethical Hacking Professional Certification - CEHPC
    • 🥉Cybersecurity Awareness Professional Certification - CAPC
  • Metodología y Fases de Hacking Ético
    • Metodologías
      • Metodología OWASP (Open Web Application Security Project)
      • Metodología PTES
      • Metodología ISSAF
      • Metodología OSSTMM
    • Recopilación Pasiva de Información
      • Sublist3r
      • Httpx
      • theHarvester
      • Google Dorks
      • Wafw00f
      • Shodan
      • Whatweb
    • Recopilación Activa de Información
      • enum4linux
      • Guía de uso para Gobuster
      • Nmap (Network Mapper)
      • Wfuzz
      • SecList
      • FFUF
      • SMBClient
      • CrackMapExec
      • SMBMap
      • WPScan
      • Steghide
      • subfinder
    • SQLMap
    • Hydra
  • Utilidades
    • Docker: Potenciando Laboratorios de Pentesting
    • 📖Ejemplos de informes de Hacking Ético y auditoría de seguridad
  • Vulnerabilidades Web
    • IDOR (Insecure Direct Object Reference)
    • SSRF (Server-Side Request Forgery)
    • CSRF (Cross-Site Request Forgery)
    • File Upload Vulnerabilities
    • LFI (Local File Inclusion)
    • RFI (Remote File Inclusion)
    • XSS (Cross-Site Scripting)
    • XXE (XML External Entity)
    • Template Injections
    • Clickjacking
    • Broken Access Control
    • SQL Injection (Inyección SQL)
    • NoSQL Injection (Inyección NoSQL)
    • LDAP Injection (Inyección LDAP)
    • Log Poisoning
    • Open Redirect Bypass
Con tecnología de GitBook
En esta página

¿Te fue útil?

  1. Vulnerabilidades Web

Open Redirect Bypass

🌐 Vulnerabilidad: Open Redirect Bypass


🕵️‍♂️ ¿Qué es un Open Redirect?

Un Open Redirect ocurre cuando una aplicación permite redirigir a una URL externa controlada por un atacante sin validación adecuada. Esto puede ser explotado para engañar a los usuarios, redirigirlos a sitios maliciosos o realizar ataques de phishing.


⚙️ ¿Cómo se produce?

  1. Entrada de usuario en la URL de redirección:

    • La aplicación acepta un parámetro de redirección que especifica la URL a la que debe enviarse al usuario.

    • Ejemplo:

      http://victim.com/redirect?url=http://malicious.com
  2. Falta de validación en el parámetro:

    • El servidor no verifica si la URL proporcionada es confiable.

  3. Uso por parte de un atacante:

    • El atacante utiliza la URL legítima como intermediario para redirigir al usuario hacia un sitio malicioso.


🛠️ Bypass en validación

En muchos casos, las aplicaciones implementan validaciones simples para mitigar los Open Redirects, pero pueden ser burladas mediante técnicas comunes como:

  1. URLs relativas:

    • El atacante usa rutas parciales que el servidor convierte automáticamente:

      /%5C%5Cmalicious.com
  2. Codificación:

    • Codificar caracteres especiales puede evadir validaciones ingenuas:

      http://victim.com/redirect?url=%68%74%74%70%3A%2F%2Fmalicious.com
  3. Uso de protocolos alternativos:

    • Algunos validadores no verifican protocolos como javascript:.

      http://victim.com/redirect?url=javascript:alert('XSS')
  4. Uso de subdominios:

    • Si solo se permiten redirecciones internas, el atacante puede usar subdominios controlados:

      http://trusted.com.malicious.com

🎯 Impacto

  • Phishing: Los usuarios son redirigidos a sitios que imitan aplicaciones legítimas para robar credenciales.

  • Malware: Redirige a sitios que descargan o ejecutan software malicioso.

  • Pérdida de confianza: Los usuarios pierden confianza en el sitio web legítimo al ser redirigidos sin su conocimiento.


📉 Puntaje CVSS v3

  • Vector de ataque: Red (Explotable remotamente)

  • Complejidad del ataque: Baja

  • Impacto en confidencialidad: Medio

  • Impacto en integridad: Bajo

  • Impacto en disponibilidad: Bajo

  • Puntaje CVSS v3: 4.0 - 6.5 (Medio) ⚠️


🧑‍💻 Ejemplo práctico

Código vulnerable en PHP:

<?php
    $url = $_GET['url'];
    header("Location: $url");
?>

📌 Ataque básico:

http://victim.com/redirect?url=http://malicious.com

📌 Bypass usando codificación:

http://victim.com/redirect?url=%68%74%74%70%3A%2F%2Fmalicious.com

📌 Uso de subdominio:

http://victim.com/redirect?url=http://trusted.com.malicious.com

🛡️ ¿Cómo prevenir Open Redirects?

1️⃣ Validación de URLs permitidas

Permitir solo redirecciones hacia una lista blanca de dominios confiables:

<?php
    $allowed_domains = ['example.com', 'trusted.com'];
    $url = $_GET['url'];
    $parsed_url = parse_url($url);

    if (!in_array($parsed_url['host'], $allowed_domains)) {
        die("Redirección no permitida.");
    }

    header("Location: $url");
?>

2️⃣ Uso de rutas relativas seguras

Si las redirecciones son internas, evita permitir URLs absolutas:

<?php
    $url = $_GET['url'];

    // Permitir solo rutas relativas
    if (strpos($url, '/') !== 0) {
        die("Redirección no permitida.");
    }

    header("Location: $url");
?>

3️⃣ Codificación de URLs

Asegúrate de codificar y escapar las entradas antes de procesarlas:

<?php
    $url = htmlspecialchars($_GET['url'], ENT_QUOTES, 'UTF-8');
    header("Location: /$url");
?>

4️⃣ Proveer identificadores en lugar de URLs

Usa identificadores internos para manejar redirecciones:

<?php
    $routes = [
        'home' => '/',
        'profile' => '/user/profile'
    ];
    $key = $_GET['key'];

    if (array_key_exists($key, $routes)) {
        header("Location: " . $routes[$key]);
    } else {
        die("Redirección no válida.");
    }
?>

5️⃣ Auditoría y pruebas

Realiza pruebas de seguridad para identificar patrones de manipulación en las URLs.


💡 Dato extra: Aunque los Open Redirects parecen inofensivos, son comúnmente explotados para ataques de phishing, ya que los usuarios confían en enlaces que contienen dominios legítimos.

🚨 Nota importante: Los navegadores modernos tienen medidas para prevenir redirecciones hacia protocolos peligrosos como javascript:. Sin embargo, no debes depender de estas protecciones.

AnteriorLog Poisoning

Última actualización hace 7 meses

¿Te fue útil?