🐈‍⬛
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

SSRF (Server-Side Request Forgery)

AnteriorIDOR (Insecure Direct Object Reference)SiguienteCSRF (Cross-Site Request Forgery)

Última actualización hace 6 meses

¿Te fue útil?

🌐 Vulnerabilidad: Server-Side Request Forgery (SSRF)


🕵️‍♂️ ¿Qué es SSRF?

Server-Side Request Forgery (SSRF) es una vulnerabilidad que permite a un atacante manipular a un servidor para que realice solicitudes HTTP (o de otro protocolo) hacia recursos internos o externos. Esto puede permitir al atacante acceder a servicios internos, exfiltrar información sensible, o incluso ejecutar comandos en ciertos casos.


⚙️ ¿Cómo se produce?

SSRF ocurre cuando una aplicación web permite al usuario proporcionar una URL o dirección que el servidor utiliza para realizar solicitudes sin validar adecuadamente la entrada. Si el servidor tiene acceso a recursos internos o sensibles, el atacante puede aprovechar esto para acceder a ellos.


🛠️ Mecanismo de ataque

  1. El atacante identifica un parámetro que realiza una solicitud externa:

    http://victim.com/fetch?url=http://example.com
  2. Manipula la URL para acceder a recursos internos o privados:

    http://victim.com/fetch?url=http://127.0.0.1:80/admin
  3. Resultados posibles:

    • Acceso a servicios internos.

    • Lectura de metadatos de infraestructura en servicios en la nube, como:

      http://169.254.169.254/latest/meta-data/
    • Escaneo de puertos en la red interna:

      http://victim.com/fetch?url=http://192.168.1.1:22
  4. Uso avanzado: En algunos casos, el atacante puede combinar SSRF con vulnerabilidades adicionales (como RCE) para comprometer aún más el sistema.


🎯 Impacto

  • Acceso no autorizado: Exposición de servicios internos, como bases de datos o APIs privadas.

  • Exfiltración de datos: Robo de información sensible, como credenciales o configuraciones.

  • Escaneo interno: Identificación de hosts y servicios en la red interna.

  • Ejecución remota de comandos: En ciertos casos, puede derivar en RCE (Remote Code Execution).


📉 Puntaje CVSS v3

  • Vector de ataque: Red (Explotable remotamente)

  • Complejidad del ataque: Media

  • Impacto en confidencialidad: Alto

  • Impacto en integridad: Medio

  • Impacto en disponibilidad: Bajo a alto (dependiendo del ataque)

  • Puntaje CVSS v3: 8.0 - 9.5 (Crítico) 🔥


🧑‍💻 Ejemplo práctico

Código vulnerable:

<?php
    $url = $_GET['url'];
    $content = file_get_contents($url); // Solicitud sin validar
    echo $content;
?>

Ataque: El atacante envía una URL maliciosa para acceder a metadatos del servidor en AWS:

http://victim.com/fetch?url=http://169.254.169.254/latest/meta-data/

📌 Esto puede devolver información sensible como claves de acceso de la instancia.


🛡️ ¿Cómo prevenir SSRF?

1️⃣ Validar y sanitizar entradas

Restringe las URLs que los usuarios pueden proporcionar:

<?php
    $url = $_GET['url'];
    $allowed_domains = ['example.com', 'api.example.com'];
    
    $parsed_url = parse_url($url);
    if (!in_array($parsed_url['host'], $allowed_domains)) {
        die("URL no permitida.");
    }
?>

2️⃣ Bloquear acceso a direcciones internas

Implementa reglas para evitar que las solicitudes accedan a direcciones IP privadas o localhost:

  • Rango IPv4 prohibido:

    • 127.0.0.0/8 (localhost)

    • 10.0.0.0/8 (redes privadas)

    • 192.168.0.0/16 (redes privadas)

  • Rango IPv6 prohibido: ::1

3️⃣ Uso de listas blancas

Permite solo URLs específicas aprobadas:

$allowed_urls = ['https://example.com/api', 'https://trusted.com'];
if (!in_array($url, $allowed_urls)) {
    die("URL no válida.");
}

4️⃣ Deshabilitar redirecciones

Evita que el servidor siga redirecciones en las solicitudes.

5️⃣ Uso de servicios proxy

Usa un proxy para manejar las solicitudes externas y controlar el acceso.

6️⃣ Configuración de cortafuegos

Configura un firewall para bloquear solicitudes desde el servidor hacia direcciones no autorizadas.

7️⃣ Límites de tiempo y tamaño

Aplica límites a las solicitudes realizadas para evitar abuso.

8️⃣ Monitoreo y auditoría

Implementa herramientas para detectar comportamientos anómalos en el servidor, como solicitudes a direcciones IP internas.


💡 Dato extra: SSRF es especialmente peligroso en entornos de nube, donde los metadatos de las instancias pueden ser explotados para obtener credenciales y comprometer más recursos.

🚨 Nota importante: Aunque SSRF afecta principalmente a HTTP, puede usarse en otros protocolos, como FTP o SMTP, dependiendo de las capacidades del servidor.


¿Te gustaría un ejemplo adaptado a otro lenguaje o un caso más específico? 😊

SSRF