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
Paso 1: El atacante identifica un parámetro vulnerable (por ejemplo,
?page=
) que utiliza para incluir archivos.Paso 2: Explora la aplicación para determinar si acepta rutas de URL externas.
Paso 3: Aloja un archivo malicioso (e.g.,
http://attacker.com/malicious.php
) que contiene código malicioso.Paso 4: Realiza una solicitud como esta:
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:
📌 Ataque:
Ejemplo de archivo malicioso (malicious.php
):
🛡️ ¿Cómo prevenir un ataque RFI?
1️⃣ Validación estricta de entradas
Asegúrate de que las entradas del usuario solo acepten valores predefinidos:
2️⃣ Deshabilitar inclusión remota
En el archivo php.ini
, desactiva la capacidad de incluir archivos remotos:
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.
Última actualización
¿Te fue útil?