Escáner en Python y prueba de concepto para CVE-2026-49049, una escritura arbitraria de archivos en Joomla Helix3 que permite la carga de un web shell PHP y la ejecución remota de código.
Este repositorio contiene un escáner basado en Python y una prueba de concepto para una vulnerabilidad en el componente Joomla Helix3. El fallo es un problema de escritura arbitraria de archivos que puede conducir a la ejecución remota de código (RCE) cuando un atacante es capaz de escribir una carga útil PHP en una ubicación accesible desde la web.
El comportamiento vulnerable ocurre cuando un parámetro de solicitud se utiliza para controlar una ruta de archivo o el contenido de un archivo sin la validación adecuada. En el caso de la interfaz AJAX de Helix3, el endpoint acepta datos que pueden utilizarse para escribir archivos en el sistema de archivos del servidor. Si la aplicación no restringe la ruta de destino y no verifica el contenido, un atacante puede crear un script PHP malicioso en una ubicación que el servidor web ejecuta.
En otras palabras, la vulnerabilidad no es solo "se puede escribir un archivo" — es una cadena peligrosa:
Este es un escenario clásico de escritura arbitraria de archivos a web shell.
Una vez que un atacante puede escribir un archivo PHP en la raíz del sitio u otro directorio ejecutable, puede:
El impacto es grave porque permite a un atacante convertir un simple fallo de escritura de archivos en un compromiso total del servidor.
El problema de raíz suele ser similar a esta lógica:
$file = $_POST['layoutName'];
$content = $_POST['content'];
file_put_contents($file, $content);
Si el valor de $file está controlado por el atacante y la ruta no está restringida, la aplicación puede escribir código PHP en una ruta ejecutable. El script malicioso queda entonces disponible para el navegador y puede ser ejecutado por el servidor web.
Este proyecto incluye una herramienta Python multihilo que intenta:
Registra los objetivos vulnerables en results.txt y almacena la salida PHP sin procesar en raw_result.txt.
La corrección debe eliminar las escrituras de archivos no confiables e imponer una validación estricta. A continuación se presentan los pasos de remediación recomendados.
Actualice Joomla y el componente/plugin Helix3 a la última versión estable. Las actualizaciones de seguridad a menudo eliminan o restringen el endpoint vulnerable que permite operaciones de escritura arbitrarias.
Si la funcionalidad AJAX de Helix3 no es necesaria, deshabilítela por completo. Eliminar el acceso al endpoint inseguro reduce significativamente la superficie de ataque.
No permita rutas arbitrarias del sistema de archivos. La aplicación solo debe permitir escrituras dentro de un directorio pequeño y fijo que no sea accesible públicamente y que no se ejecute como PHP.
La validación debe rechazar:
../Antes de escribir cualquier archivo:
Solo los administradores de confianza deben poder usar endpoints que escriben archivos. Exija comprobaciones adecuadas de autenticación y permisos antes de aceptar cualquier solicitud de escritura.
Nunca escriba contenido sin procesar controlado por el atacante en archivos ejecutables sin una validación estricta. Además, el endurecimiento del servidor debe incluir:
requestsCree un archivo que contenga las URL objetivo, por ejemplo targets.txt:
http://example.com
https://joomla-site.local
http://127.0.0.1
Luego ejecute:
python3 cve-2026-49049.py targets.txt
El script creará:
results.txt — URL vulnerables detectadasraw_result.txt — cargas útiles PHP sin procesar observadas durante las pruebasEste proyecto está destinado a fines educativos, investigación de seguridad legítima y evaluación de vulnerabilidades autorizada. No debe utilizarse contra sistemas sin permiso explícito. El uso indebido está estrictamente prohibido.
El contenido de este repositorio se proporciona para ayudar a investigadores y administradores a comprender, identificar y remediar un problema de seguridad real. Úselo de manera responsable y solo en entornos controlados donde cuente con la autorización adecuada.