Blog
dark mode light mode Search Archivos descargables
Search

Cómo proteger tus archivos de accesos no autorizados (LFI / CWE-22)

LFI

En el entorno digital actual, considera que los servidores web son comparables a bibliotecas llenas de cartas, con cada carta representando un archivo o recurso crucial dentro del servidor. Estas cartas están almacenadas de manera organizada en estantes y cada carta tiene información valiosa o detalles específicos. ¿Qué sucedería si alguien tuviera la capacidad de manipular el catálogo de la biblioteca para leer cartas que no deberían ser accesibles públicamente? En lugar de solo tener acceso a las cartas permitidas, una persona maliciosa podría alterar el catálogo para acceder a cartas en estantes restringidos, como correspondencia privada o documentos internos, sensibles y personales de otras personas.

En este artículo, abordaremos el concepto de LFI, proporcionando ejemplos claros y destacando casos en los que esta vulnerabilidad ha representado una amenaza real. Además, ofreceremos recomendaciones prácticas para proteger tu infraestructura digital y asegurar que solo se acceda a los datos y archivos permitidos.

¿Qué significa LFI?

LFI o Local File Inclusión es una vulnerabilidad que ocurre cuando se pueden leer archivos arbitrarios en el servidor que ejecuta la aplicación. Un atacante puede explotar esta vulnerabilidad para acceder a archivos sensibles como código back-end, credenciales, registros u otros archivos sensibles del sistema y en algunos casos, incluso para ejecutar código malicioso en el navegador de los usuarios. Debemos tener en cuenta que esta vulnerabilidad no está presente únicamente en sistemas que usen el lenguaje de programación PHP.

Ejemplo de la vulnerabilidad LFI

Se puede incluir el siguiente archivo de sistemas Linux:

a través de una URL manipulada como la siguiente:

Además, si se han implementado algunos obstáculos como quitar la secuencia transversales “../” para evitar este tipo de vulnerabilidad, se puede eludir con “….//” o “….\/” de la siguiente manera como ejemplo:

Incluso si se ha evitado el uso de caracteres como el punto (.) o la barra inclinada (/), se puede codificar en formato URL o realizar una doble codificación en formato URL para estos caracteres como se ejemplifica a continuación:

Codificación en formato URL simple:

Codificación en formato URL doble:

También es posible que la aplicación no valide correctamente los nombres de archivos, así que podría usarse un valor nulo (Null Byte) para omitir todo lo que hay después de él, por ejemplo:

Ejemplo de código vulnerable:

A continuación podemos ver la implementación de código vulnerable en PHP:

Código mitigado

Para mitigar el anterior código vulnerable, podemos implementar una lista de páginas permitidas (whitelist):

¿Cómo prevenir la vulnerabilidad LFI?

  • Se debe evitar pasar la entrada enviada por el usuario a cualquier endpoint de sistema de archivos.
  • Si lo anterior no es posible debido a cómo se debe manejar las rutas en el aplicativo, se debe validar la entrada del usuario antes de procesarla, por ejemplo con una lista blanca (whitelist).

Conclusiones

En Hackmetrix, la seguridad de tus activos digitales, o “cartas”, es nuestra máxima prioridad. La vulnerabilidad LFI representa una amenaza tangible que podría comprometer la integridad de tu servidor, permitiendo a los atacantes acceder a información confidencial. Nuestro equipo de especialistas en seguridad trabaja incansablemente para reforzar cada punto de acceso de tu sistema, asegurando que únicamente las “cartas” permitidas sean accesibles. A través de nuestros servicios de ethical hacking, no solo defendemos tu negocio contra las amenazas actuales sino que también prevenimos riesgos futuros. Al confiar en nosotros, optas por la tranquilidad de saber que tus datos más sensibles están protegidos contra cualquier vulnerabilidad.

Solicitar demo hackmetrix