Cómo Detectar Vulnerabilidades de Inclusión de Archivos Local (LFI) en Plugins y Temas de WordPress

Cómo Detectar Vulnerabilidades de Inclusión de Archivos Local (LFI) en Plugins y Temas de WordPress

Cómo encontrar vulnerabilidades de Inclusión de Archivos Locales (LFI) en WordPress

La Inclusión de Archivos Locales (LFI) ocurre cuando una aplicación utiliza datos controlados por el usuario para construir una ruta hacia un archivo que luego es incluido por la aplicación. En el ecosistema de WordPress (y en general en aplicaciones web PHP), esto puede implicar que valores provenientes de $_GET, $_POST, $_REQUEST, o fuentes controladas por el usuario terminan en funciones como include(), require(), include_once(), o require_once(). Aunque esta vulnerabilidad es bien conocida y lleva años presente, sigue siendo un tema relevante en WordPress. De hecho, según el informe anual de vulnerabilidades y amenazas de 2024 de Wordfence, la LFI se posicionó como el séptimo tipo de vulnerabilidad más común.

¿Por qué debería importarte esto?

El impacto principal de una LFI es la divulgación no autorizada de archivos y, en muchos casos, la ejecución de código arbitrario si el archivo incluido contiene PHP. En el contexto de WordPress, esto puede habilitar a un atacante a leer archivos sensibles o ejecutar código PHP arbitrario. En condiciones específicas, las vulnerabilidades LFI pueden combinarse con técnicas de Ejecución Remota de Código (RCE) mediante técnicas como la inyección de registros o el abuso de herramientas específicas. Aunque estas combinaciones requieren cierto conocimiento del entorno, se constituyen como una grave amenaza.

Metodología para encontrar vulnerabilidades LFI

En este artículo analizaremos cómo se presentan comúnmente las LFI en los plugins y temas de WordPress, además de mostrar un método eficiente para localizarlas mediante la técnica de trazado de fuente a destino. También abordaremos cómo prevenir estas vulnerabilidades, ayudando a los desarrolladores a evitar introducir estos errores desde el principio.

Cómo funciona la Inclusión de Archivos Locales

La LFI ocurre cuando una aplicación incluye un archivo desde el sistema de archivos local utilizando una ruta que puede influir el usuario. En PHP, esto comúnmente significa que un parámetro de solicitud se concatena en una ruta que se pasa a las funciones include() o require().

Ejemplo vulnerado:

// El usuario controla el nombre del archivo que se incluye
include($_GET['template']);

Aunque este ejemplo es intencionadamente simple, en plugins o temas reales la ruta a menudo se construye a partir de un directorio base más un valor del usuario.

Ejemplos del mundo real

Una vulnerabilidad notable de LFI es la CVE-2024-10871 en el plugin Category Ajax Filter. Este plugin expuso una vulnerabilidad de LFI no autenticada a través de la acción AJAX get_filter_posts. El manejador aceptaba un valor params[caf-post-layout] y lo usaba para construir una ruta a un archivo de diseño que se incluía en tiempo de ejecución.

De la fuente al destino: Un análisis de traza

En este caso, el código vulnerable concatenaba un $_POST['params']['caf-post-layout'] con un camino base al incluir un archivo PHP. Esto creaba la posibilidad de utilizar un payload de ../../ para evadir la estructura de directorios prevista y acceder a archivos sensibles.

Cómo encontrar LFI en WordPress

La mejor manera de empezar a buscar este tipo de vulnerabilidades es mediante análisis estático. La búsqueda de LFI en plugins y temas de WordPress es relativamente sencilla debido a que existe un conjunto limitado de funciones de inclusión (las funciones require y include). Puedes restringir tu búsqueda a los directorios

Puedes consultar el artículo original aquí: https://www.wordfence.com/blog/2025/10/how-to-find-local-file-inclusion-lfi-vulnerabilities-in-wordpress-plugins-and-themes/

Este contenido ha sido generado automáticamente con el plugin Autoblog AI. Desarrollado por Zonsai.