Scanner Python et proof-of-concept pour CVE-2026-49049, une écriture de fichier arbitraire dans Joomla Helix3 qui permet le téléversement d'un web shell PHP et l'exécution de code à distance.
Ce dépôt contient un scanner en Python et une preuve de concept pour une vulnérabilité dans le composant Joomla Helix3. Le bug est un problème d'écriture arbitraire de fichier qui peut mener à une exécution de code à distance (RCE) lorsqu'un attaquant est capable d'écrire une charge utile PHP dans un emplacement accessible par le web.
Le comportement vulnérable se produit lorsqu'un paramètre de requête est utilisé pour contrôler un chemin de fichier ou le contenu d'un fichier sans validation appropriée. Dans le cas de l'interface AJAX de Helix3, le point de terminaison accepte des données qui peuvent être utilisées pour écrire des fichiers sur le système de fichiers du serveur. Si l'application ne restreint pas le chemin de destination et ne vérifie pas le contenu, un attaquant peut créer un script PHP malveillant dans un emplacement que le serveur web exécute.
En d'autres termes, la vulnérabilité n'est pas simplement « un fichier peut être écrit » — c'est une chaîne dangereuse :
C'est un scénario classique d'écriture arbitraire de fichier menant à un web shell.
Une fois qu'un attaquant peut écrire un fichier PHP à la racine du site ou dans un autre répertoire exécutable, il peut :
L'impact est grave car il permet à un attaquant de transformer une simple faille d'écriture de fichier en compromission totale du serveur.
Le problème de fond est généralement similaire à cette logique :
$file = $_POST['layoutName'];
$content = $_POST['content'];
file_put_contents($file, $content);
Si la valeur de $file est contrôlée par l'attaquant et que le chemin n'est pas restreint, l'application peut écrire du code PHP dans un chemin exécutable. Le script malveillant est alors accessible au navigateur et peut être exécuté par le serveur web.
Ce projet inclut un outil Python multi-thread qui tente de :
Il enregistre les cibles vulnérables dans results.txt et stocke la sortie PHP brute dans raw_result.txt.
La correction doit éliminer les écritures de fichiers non fiables et imposer une validation stricte. Les étapes de remédiation recommandées sont ci-dessous.
Mettez à niveau Joomla et le composant/plugin Helix3 vers la dernière version stable. Les mises à jour de sécurité suppriment ou restreignent souvent le point de terminaison vulnérable qui permet des opérations d'écriture arbitraires.
Si la fonctionnalité AJAX de Helix3 n'est pas nécessaire, désactivez-la entièrement. Supprimer l'accès au point de terminaison non sécurisé réduit considérablement la surface d'attaque.
N'autorisez pas de chemins de système de fichiers arbitraires. L'application ne devrait autoriser les écritures qu'à l'intérieur d'un répertoire fixe et restreint qui n'est pas accessible publiquement et qui n'est pas exécuté en tant que PHP.
La validation doit rejeter :
../Avant d'écrire tout fichier :
Seuls les administrateurs de confiance devraient être autorisés à utiliser les points de terminaison qui écrivent des fichiers. Exigez une authentification et des vérifications de permissions appropriées avant d'accepter toute demande d'écriture.
N'écrivez jamais de contenu brut contrôlé par l'attaquant dans des fichiers exécutables sans validation stricte. En outre, le durcissement du serveur devrait inclure :
requestsCréez un fichier contenant les URL cibles, par exemple targets.txt :
http://example.com
https://joomla-site.local
http://127.0.0.1
Puis exécutez :
python3 cve-2026-49049.py targets.txt
Le script créera :
results.txt — URL vulnérables détectéesraw_result.txt — charges utiles PHP brutes observées pendant les testsCe projet est destiné à des fins éducatives, à la recherche légitime en sécurité et à l'évaluation autorisée de vulnérabilités. Il ne doit pas être utilisé contre des systèmes sans autorisation explicite. Toute utilisation abusive est strictement interdite.
Le contenu de ce dépôt est fourni pour aider les chercheurs et les administrateurs à comprendre, identifier et corriger un problème de sécurité réel. Utilisez-le de manière responsable et uniquement dans des environnements contrôlés où vous disposez de l'autorisation appropriée.