Vulnerabilidad Local File Inclusion (LFI); Explicación y PoC

    La vulnerabilidad de seguridad denominada Local File Inclusion (LFI) ocurre cuando una aplicación web no verifica de forma adecuada las entradas de usuario, lo que posibilita que un atacante acceda a archivos locales en el servidor web.

    Los atacantes suelen aprovechar esta vulnerabilidad manipulando los parámetros de entrada de la aplicación web, como las URL o los campos de formulario, utilizando una técnica conocida como "Path Traversal". En este tipo de ataques, los atacantes emplean caracteres especiales y de escape en los parámetros de entrada para navegar por los directorios del servidor web y acceder a archivos en ubicaciones sensibles del sistema.

    Por ejemplo, al incluir "../" en los parámetros de entrada, un atacante puede ascender en la estructura de directorios y acceder a archivos en ubicaciones críticas del sistema.

    Para prevenir estos ataques, es crucial que los desarrolladores validen y filtren adecuadamente las entradas de usuario, restringiendo el acceso a los recursos del sistema y asegurándose de que los archivos solo se incluyan desde ubicaciones permitidas. Además, las empresas deben implementar medidas de seguridad adicionales, como el cifrado de archivos y la restricción del acceso de usuarios no autorizados a los recursos del sistema.

    Además de validar y filtrar adecuadamente las entradas de usuario, así como restringir el acceso a recursos del sistema y asegurar la inclusión de archivos solo desde ubicaciones permitidas, existen otras medidas importantes para prevenir y mitigar los ataques de LFI:

        • Principio de mínimo privilegio: Limitar los privilegios de los usuarios y procesos en el servidor web. Esto implica asignar solo los permisos necesarios para cada usuario o proceso, reduciendo así el impacto en caso de una explotación exitosa de LFI.

        •  Actualizaciones y parches: Mantener actualizados tanto el software de la aplicación web como el sistema operativo del servidor. Los desarrolladores y administradores deben estar al tanto de las actualizaciones de seguridad y aplicar los parches correspondientes para corregir vulnerabilidades conocidas.

        Auditorías de seguridad: Realizar auditorías regulares de seguridad en el código de la aplicación web y en la configuración del servidor. Estas auditorías pueden identificar posibles puntos débiles y ayudar a implementar medidas preventivas antes de que se produzcan ataques.

        • Monitoreo de registros: Establecer sistemas de monitoreo de registros (logs) para detectar actividades sospechosas o intentos de explotación de vulnerabilidades, incluyendo patrones de acceso inusuales a archivos del sistema.

        Protección de acceso a archivos sensibles: Aplicar medidas de protección adicionales, como el uso de listas blancas para restringir explícitamente qué archivos pueden ser accesibles a través de la aplicación web y limitar el acceso a archivos sensibles mediante mecanismos de autenticación y autorización.

        • Educación y concienciación: Capacitar a los desarrolladores, administradores y usuarios finales sobre las buenas prácticas de seguridad informática, incluyendo la importancia de validar entradas de usuario y de mantener la seguridad de las aplicaciones web.

    Al implementar estas medidas en conjunto con la validación adecuada de entradas de usuario y la restricción de acceso a recursos del sistema, las organizaciones pueden reducir significativamente el riesgo de explotación de la vulnerabilidad de LFI y mejorar la seguridad de sus aplicaciones web.


PoC

    Para esta prueba de concepto estaremos utilizando el laboratorio Chain de Vulnyx que iremos retocando para dificultarla
    
    Nada mas entrar en la maquina vamos a probar acceder al archivo "/etc/passwd", de manera que vamos a ir retrocediendo entre directorios "../../../../../etc/passwd"


    Como acabamos de ver tenemos la vulnerabilidad LFI presente, de la misma manera podríamos hacerlo fuzzeando


    Vamos a intentar vemos si podemos inyectar comando mediante wrappers(filtros).


    Este wrapper nos va a convertir en base64 el archivo /etc/passwd, lo importante de esto , es que sabemos que podemos ejecutar comandos

    Con la herramienta php filter chain generator que hace cadenas de filtros para poder introducir comandos eludiendo posibles reglas, vamos a indicar que ejecute el comando ls-l mediante php system para que ejecute comandos en el sistema 


    Ahora añadimos toda esta cadena ;


    Y como vemos hemos conseguido listar archivos, si de la misma manera intentamos lanzar una reverse shell;


    La cadena se va a alargar tanto que nos va a indicar que la petición es muy larga.


    Pero si nos creamos un archivo con una reverse shell;


    E indicamos mediante una cadena que nos descargue ese archivo, teniendo un servidor en Python por ejemplo levantado;


    Y la ejecutamos en el navegador;


    Y vemos que la petición se efecto correctamente;


    Y de la misma manera creamos una cadena para que ejecute dicho archivo, e indicamos index.html.1 puesto que el archivo index.html ya existe;


     Antes de ejecutarlo en el navegador nos ponemos en escucha con netcat, copiamos la cadena, la pegamos en el navegador y obtenemos una reverse shell;


    De esta misma manera podríamos efectuar un Log Poisoning, os dejo un articulo sobre esta explotación que escribí anteriormente;




    En ocasiones esta vulnerabilidad se nos va a presentar con algunas reglas establecidas y con códigos "bien" sanitizados, en este caso nos encontramos con las función str_replace que sustituira "../" por nada es decir ""


    Pero podríamos eludirlo de la siguiente manera;


    Ya que solo elimina "../" si duplicamos los caracteres se quedara igual: "../"


    De la misma manera de esta forma con la función  pregt_match bloquea la palabra passwd


    Pero siguen habiendo formas de eludirla:


    De la misma manera con el empleo de wrappers podríamos utilizar una conversión a rot13


    Y posteriormente a utf8


    Otra forma es url-encodear la cadena para eludir posibles "reglas"


    El empleo de wrappers y cadenas de filtros es esencial para "bypasear" algunas restricciones al igual que las técnicas mostradas anteriormente.


    Os dejo un recurso para que veáis la infinidad de técnicas que hay para "bypasear" algunas restricciones y de las misma manera os recomiendo que veáis el video de el compañero El Pingüino de Mario donde explica esta vulnerabilidad


Y además un video del compañero CondorHacks donde se le presenta vulnerabilidad LFI y explica las diferencias en la que entrar a la maquina victima.




2 comentarios:

  1. Muy bien explicado, muy didáctico. Gracias por compartir.

    ResponderEliminar