إرشادات التحقق المخبري الدفاعي والكشف عبر مركز العمليات الأمنية (SOC) لثغرة CVE-2026-48907 في Joomla JCE <= 2.9.99.4، بما في ذلك بيانات تيليمتري Apache/Joomla/auditd، وآثار الويب شل، وقواعد Sigma، والربط مع MITRE ATT&CK وتوصيات التخفيف.
تقرير تحقق دفاعي وملاحظات كشف موجّهة لفرق SOC بشأن CVE-2026-48907 الذي يؤثر على إصدارات محرر محتوى جوملا (JCE) حتى 2.9.99.4.
يوثّق هذا المستودع تحققًا معمليًا خاضعًا للرقابة من CVE-2026-48907 في Joomla JCE، ويركّز على هندسة الكشف العملية لفرق SOC.
الهدف ليس تقديم إرشادات للاستغلال. الهدف هو إظهار مصادر الرصد التي كانت مفيدة أثناء التحقق، والآثار التي أُنشئت، وكيف يمكن للمدافعين كشف هذا النشاط والاستجابة له.
| المجال | النتيجة |
|---|---|
| الثغرة | CVE-2026-48907 في محرر محتوى جوملا (JCE)؛ سير عمل إنشاء/استيراد الملفات التعريفية دون مصادقة قد يؤدي إلى رفع ملفات PHP وتنفيذ أكواد. |
| الإصدار المختبر | JCE 2.9.99.4. أظهرت لوحة إدارة جوملا توفر تحديث إلى 2.9.99.7. |
| نتيجة المختبر | أكّد التحقق من الـ PoC العام حدوث RCE وأنشأ ويبشيل PHP في /tmp الخاص بجوملا باسم jce*.xml.php. نُفذت الأوامر بصلاحيات المستخدم www-data. |
| أكثر مصادر الرصد قيمة | سجل access.log لخادم Apache، وسجل error.log لـ Apache/PHP، وبيانات execve من auditd، وآثار على نظام الملفات في joomla_html/tmp. |
| سجلات جوملا | مفيدة كسياق داعم، لكنها غير كافية وحدها. لم تعِد سجلات تطبيق جوملا بناء السلسلة الكاملة: استغلال → ويبشيل → تنفيذ أوامر. |
| أولوية SOC | حرجة بالنسبة لنسخ جوملا المواجهة للإنترنت أو تلك التي يمكن الوصول إليها من شبكات داخلية أقل موثوقية. |
| المعامل | القيمة |
|---|---|
| رابط التطبيق | http://172.20.10.3:9999 |
| حاوية جوملا | joomla-jce-lab، الصورة joomla:5-apache |
| حاوية قاعدة البيانات | joomla-jce-db، الصورة mariadb:11 |
| تعيين المنفذ | 0.0.0.0:9999 -> 80/tcp |
| Apache | Apache/2.4.67 (Debian) |
| PHP | PHP 8.3.31 |
| MariaDB | 11.8.8-MariaDB |
| Joomla | Joomla 5.4.6 Stable |
| JCE | 2.9.99.4 |
| مصدر الاختبار | Windows 11، عنوان IP 172.20.10.2 |
| التسجيل | سجلات وصول/أخطاء Apache، سجلات جوملا، auditd، سجلات Docker، آثار على نظام الملفات |







من النتائج التشغيلية الرئيسية أن سجلات تطبيق جوملا لم تكن كافية.
خلال الاختبار المختبري، سجّلت سجلات جوملا سياقًا على مستوى التطبيق مثل حدث joomlafailure، لكنها لم تُظهر سلسلة الاستغلال الكاملة. كانت السلسلة المفيدة واضحة بشكل أساسي في:
access.log لخادم Apacheerror.log لـ Apache/PHPexecve من auditdjoomla_html/tmpبالنسبة لمراقبة SOC، ينبغي التعامل مع سجلات جوملا بوصفها مصدر رصد داعمًا، وليس بوصفها مصدر الكشف الأساسي لهذه الثغرة.
سلسلة عالية المستوى رُصدت أثناء الاختبار الخاضع للرقابة:
JCE version discovery
↓
POST to Joomla JCE component
↓
PHP webshell written to Joomla /tmp
↓
HTTP request to /tmp/jce*.xml.php
↓
Command execution through webshell
↓
auditd confirms /usr/bin/dash and commands executed as www-data
كانت أوضح الأدلة موجودة في سجل access.log الخاص بـ Apache:
GET /plugins/editors/jce/jce.xml
GET /
POST /index.php?option=com_jce
GET /tmp/jceolxtshs3.xml.php
GET /plugins/editors/jce/jce.xml
POST /index.php?option=com_jce
GET /tmp/jce624jdcfx.xml.php
GET /tmp/jce624jdcfx.xml.php?c=id%20%26%26%20hostname%20%26%26%20pwd
GET /tmp/jce624jdcfx.xml.php?c=whoami
GET /tmp/jce624jdcfx.xml.php?c=hostname
GET /tmp/jce624jdcfx.xml.php?c=id
GET /tmp/jce624jdcfx.xml.php?c=pwd
احتوى سجل أخطاء Apache/PHP على آثار قيّمة متعلقة بالمحلل (parser):
simplexml_load_string()
administrator/components/com_jce/helpers/profiles.php
RXST
RXEND
كانت العلامتان RXST وRXEND مؤشرين مفيدين بشكل خاص لعائلة الـ PoC هذه تحديدًا لأنهما ظهرتا في مسار معالجة الحمولة (payload).
أكّدت سجلات جوملا أن تسجيل التطبيق كان نشطًا، لكنها لم تعِد بناء عملية الاستغلال:
#Software: Joomla! 5.4.6 Stable [ Kutegemea ] 26-May-2026 16:00 GMT
#Fields: datetime priority clientip category message
2026-06-18T20:37:57+00:00 INFO 172.20.10.2 joomlafailure Username and password do not match or you do not have an account yet.
هذا يعني أن جمع سجلات جوملا فقط قد يفوت أهم الأدلة على استغلال CVE-2026-48907.
أنشأ الاختبار ملفات ويبشيل PHP في tmp الخاص بجوملا:
/var/www/html/tmp/jce624jdcfx.xml.php
/var/www/html/tmp/jceolxtshs3.xml.php
المسارات على جانب المضيف في المختبر:
/home/user/joomla-jce-lab/joomla_html/tmp/jce624jdcfx.xml.php
/home/user/joomla-jce-lab/joomla_html/tmp/jceolxtshs3.xml.php
قيم تجزئة SHA256 المرصودة:
b6fa303daef8aa8cb39566c73d2cb4a458efb2b1fba48052dd039d45c3beb0aa jce624jdcfx.xml.php
f8bcc802ab56b845c968ed6727228f200f8f4bcd332b8ce82c6980d93ac228fd jceolxtshs3.xml.php
ينبغي التعامل مع الكشف المعتمد على التجزئة بوصفه منخفض المتانة لأن أسماء الملفات والحمولات قد تختلف. الارتباط عبر المسار والامتداد والملكية والسلوك أكثر فائدة.
أكّد auditd أن مستخدم خادم الويب نفّذ أوامر من دليل tmp الخاص بجوملا:
CWD=/var/www/html/tmp uid=www-data comm=sh exe=/usr/bin/dash
CWD=/var/www/html/tmp uid=www-data comm=id exe=/usr/bin/id
CWD=/var/www/html/tmp uid=www-data comm=hostname exe=/usr/bin/hostname
CWD=/var/www/html/tmp uid=www-data comm=whoami exe=/usr/bin/whoami
هذا أقوى تأكيد على أن النشاط لم يكن مجرد فحص، بل تنفيذًا فعليًا لأكواد عن بُعد.
أقوى كشف يعتمد على الارتباط بين الأحداث:
GET /plugins/editors/jce/jce.xml
followed by
POST /index.php?option=com_jce
followed by
GET /tmp/jce*.xml.php
followed by
GET /tmp/jce*.xml.php?c=
and/or
auditd: www-data executes /usr/bin/dash from /var/www/html/tmp