Comprender cómo un atacante puede leer archivos del servidor o cargar recursos externos a través de una aplicación web es fundamental para cualquier profesional de seguridad. Las vulnerabilidades de Local File Inclusion (LFI) y Remote File Inclusion (RFI) permiten exactamente eso, y su explotación puede comprometer por completo un sistema. A continuación se explica cómo funcionan, paso a paso, usando un entorno controlado de práctica.
¿Qué es file inclusion y por qué es peligrosa?
Las aplicaciones web muchas veces cargan archivos dinámicamente a través de parámetros en la URL. Por ejemplo, un parámetro como page=include.php le indica al servidor qué archivo mostrar [0:28]. Si la aplicación no valida correctamente el valor de ese parámetro, un atacante puede manipularlo para incluir archivos que no deberían ser accesibles.
En el entorno de práctica DVWA (Damn Vulnerable Web Application), la sección de file inclusion presenta tres archivos listados: File1, File2 y File3 [1:06]. Cada uno muestra información distinta, como la IP del usuario o datos del navegador. Sin embargo, al escribir manualmente file4.php en la URL, se carga un archivo oculto que no estaba listado, confirmando que la aplicación permite incluir archivos arbitrarios [1:35].
¿Cómo se explota Local File Inclusion para leer archivos del sistema?
La técnica de LFI consiste en incluir archivos locales del servidor. El truco está en usar secuencias como ..\..\ para retroceder carpetas en la estructura de directorios [1:58]. Cada ..\ representa un nivel hacia atrás.
- Al agregar cinco niveles de retroceso y apuntar a
etc/passwd, se logra leer el archivo de usuarios del sistema operativo [2:14].
- Este archivo revela usuarios como root, games, nobody, bind, administrator, entre otros [2:30].
- Si el servidor web se ejecutara como root, también sería posible leer el archivo
shadow, que contiene las contraseñas cifradas [2:42].
El concepto de directory traversal es justamente esta capacidad de moverse entre carpetas usando ..\ para alcanzar archivos fuera del directorio permitido.
¿Qué otros archivos se pueden leer con LFI?
Más allá de /etc/passwd, un atacante puede obtener información valiosa de múltiples fuentes:
- Los access logs de Apache, que registran todas las peticiones al servidor [2:55].
- Los logs del sistema en general.
- El archivo
/proc/self/environ, que contiene variables de entorno del proceso actual [3:05].
Este último caso es especialmente crítico porque permite realizar un ataque avanzado: inyectar código en las variables de entorno para ejecutar comandos en el servidor y obtener una web shell, es decir, una interfaz remota que permite controlar el sistema [3:10].
¿Cuál es la diferencia entre LFI y RFI?
Mientras LFI carga archivos que ya están en el servidor, Remote File Inclusion (RFI) permite incluir archivos desde servidores externos [3:28]. En el ejemplo práctico, al colocar https://www.youtube.com como valor del parámetro, la aplicación carga el contenido procesado de YouTube directamente dentro del sitio vulnerable [3:36].
Esto puede parecer inofensivo, pero la verdadera amenaza aparece cuando se usa el protocolo FTP:
- Se especifica una IP, una ruta y un archivo en un servidor FTP controlado por el atacante [3:50].
- Si ese archivo es un script PHP, el protocolo FTP no lo procesa y lo entrega como texto plano.
- La aplicación vulnerable sí lo interpreta como PHP y lo ejecuta en el servidor [4:00].
- Esto permite cargar una web shell o un sistema completo de ejecución de comandos remotos.
¿Qué impacto tienen estas vulnerabilidades?
El alcance de LFI y RFI va desde la lectura de información sensible hasta la ejecución remota de código:
- Lectura de archivos de configuración y credenciales.
- Enumeración de usuarios del sistema.
- Inyección de código malicioso a través de logs o variables de entorno.
- Carga y ejecución de web shells remotas.
- Control total del servidor comprometido.
Ambas vulnerabilidades se originan por la misma causa: falta de validación en los parámetros que determinan qué archivos incluye la aplicación. La diferencia radica en el origen del archivo, local o remoto, pero el impacto puede ser igualmente devastador.
Si quieres practicar estas técnicas en un entorno seguro, DVWA es un excelente punto de partida. ¿Has intentado explotar alguna de estas vulnerabilidades? Comparte tu experiencia en los comentarios.