LFI (Local File Inclusion)
🌐 Vulnerabilidad: Local File Inclusion (LFI)
🕵️♂️ ¿Qué es LFI?
Local File Inclusion (LFI) es una vulnerabilidad que permite a un atacante incluir archivos locales del servidor en la ejecución de una aplicación web. Esto ocurre debido a una falta de validación en las entradas del usuario al manejar rutas de archivos.
⚙️ ¿Cómo se produce?
El problema surge cuando la aplicación permite que un usuario especifique la ruta de un archivo, y esta ruta no es validada o restringida correctamente. El atacante puede manipular la entrada para leer archivos confidenciales o ejecutar scripts no autorizados.
🛠️ Mecanismo de ataque
Identificación del parámetro vulnerable: Una URL como esta puede indicar una posible vulnerabilidad LFI:
Explotación del parámetro: El atacante manipula el parámetro para incluir archivos sensibles del servidor:
Si el servidor es vulnerable, mostrará el contenido del archivo
/etc/passwd
.Ejecución de código (en algunos casos): Si el atacante encuentra un archivo que contiene código PHP, puede ejecutarlo utilizando LFI combinado con otros métodos, como la inyección de logs o la carga de archivos maliciosos.
🎯 Impacto
Acceso a archivos sensibles: Contraseñas, configuraciones de bases de datos, claves API.
Ejecución de código: En algunos casos, puede usarse para ejecutar scripts maliciosos.
Exposición de información interna: Revela la estructura y configuración del sistema.
Escalada de privilegios: Si el atacante accede a archivos críticos.
📉 Puntaje CVSS v3
Vector de ataque: Red (Explotable remotamente)
Complejidad del ataque: Media (requiere manipulación específica de rutas)
Impacto en la confidencialidad: Alto
Impacto en la integridad: Medio
Impacto en la disponibilidad: Bajo a medio
Puntaje CVSS v3: 7.0 - 8.0 (Alto) ⚠️
🧑💻 Ejemplo práctico
Código vulnerable en PHP:
Ataque: El atacante puede manipular la ruta del archivo utilizando una técnica conocida como traversal directory:
Si el archivo existe, el servidor mostrará su contenido. Para entornos Windows, podrían acceder a:
🛡️ ¿Cómo prevenir LFI?
1️⃣ Validación estricta de las entradas
Asegúrate de que las entradas del usuario sean seguras y no permitan rutas personalizadas:
2️⃣ Uso de rutas absolutas
Evita usar rutas relativas y utiliza rutas absolutas definidas en el código.
3️⃣ Evitar include
dinámico
Si es posible, evita usar include
, require
o funciones similares con entradas de usuario.
4️⃣ Deshabilitar el acceso a directorios sensibles
Asegúrate de que los directorios críticos no sean accesibles desde la web mediante la configuración del servidor.
Ejemplo en Apache (archivo .htaccess
):
5️⃣ Aplicar un WAF
Un Web Application Firewall puede bloquear solicitudes maliciosas que intenten explotar LFI.
💡 Dato extra: LFI suele combinarse con vulnerabilidades como RCE (Remote Code Execution) o RFI (Remote File Inclusion), aumentando el impacto del ataque.
🚨 Nota importante: En servidores con registros de acceso o error mal configurados, los atacantes pueden inyectar código malicioso en los logs y luego usar LFI para ejecutarlo.
Última actualización
¿Te fue útil?