Scanner Python a file singolo per CVE-2026-48907 (RCE Joomla JCE Editor). Rileva Joomla/JCE, esegue test di payload intrusivo verificato matematicamente, supporta scansione batch multi-thread, rilevamento WAF e genera report Excel stilizzati.
Scanner autonomo in un unico file per Joomla! JCE Editor < 2.9.99.5 — Esecuzione Remota di Codice non autenticata (CVE-2026-48907)
Autore: Hussein Mohamed (masta ghimau)
[!CAUTION]
🚨 AVVISO — LEGGERE PRIMA DELL'USO
QUESTO È UNO STRUMENTO DI TEST DI SICUREZZA INVASIVO.
QUESTO STRUMENTO È ESCLUSIVAMENTE PER VALUTAZIONI DI SICUREZZA AUTORIZZATE.
La scansione di sistemi di cui NON si possiede la proprietà o per cui NON si ha AUTORIZZAZIONE SCRITTA è ILLEGALE nella maggior parte delle giurisdizioni.
L'autore (Hussein Mohamed masta ghimau) NON ACCETTA ASSOLUTAMENTE ALCUNA responsabilità per usi impropri, danni, azioni legali o perdita di dati derivanti dall'uso di questo strumento.
Eseguendo questo scanner accetti di:
Eseguire la scansione SOLO di asset di TUA proprietà o per cui hai ESPLICITO CONSENSO SCRITTO.
Comprendere che carica un file PHP POC innocuo sul server target come parte del controllo intrusivo di accuratezza.
Cancellare manualmente ogni file POC caricato immediatamente dopo l'uso.
USALO A TUO RISCHIO.
[!IMPORTANT] Perché "intrusivo" è importante per l'accuratezza: Per ottenere il massimo livello di confidenza ed eliminare i falsi positivi, questo strumento esegue un test di payload con verifica matematica in tempo reale. Carica una riga PHP sicura di proof-of-concept e poi conferma l'Esecuzione Remota di Codice verificando il risultato matematico esatto restituito dal server. Gli scanner non intrusivi che leggono solo le stringhe di versione possono perdere patch backportate o hotfix personalizzati. Questo strumento verifica che la vulnerabilità esista realmente. Pertanto è intrusivo per progettazione — usalo con saggezza e con piena autorizzazione.
masta-cve-2026-48907.py è uno scanner Python completamente originale in un unico file, progettato per rilevare CVE-2026-48907 in istanze Joomla! che eseguono il componente JCE Editor di versione precedente a 2.9.99.5.
requests/httpx..py che puoi posizionare ovunque.openpyxl o rich, ma offre un bell'aspetto quando sono installati.ThreadPoolExecutor..xlsx) formattati con colori condizionali.| Caratteristica | Descrizione |
|---|---|
| 🔍 Rilevamento multi-fonte | Rileva Joomla! e JCE tramite meta tag, manifest, asset statici, file di lingua ed endpoint JCE-specifici |
| 🛡 Rilevamento WAF | Identifica blocchi di Cloudflare, Incapsula, Sucuri e ModSecurity |
| 🧪 POC intrusivo sicuro | Carica un innocuo verificatore matematico PHP (attribuito + esplicitamente etichettato per la pulizia) |
| 📊 Interfaccia terminale a schede | Schede Panel + Table di Rich (o fallback ANSI) per ogni target |
| 📁 Report Excel | .xlsx generato automaticamente con intestazioni, blocchi dei riquadri, larghezze delle colonne e celle di stato con codifica colore |
| ⚙️ Supporto proxy | Instrada tutto il traffico attraverso Burp / ZAP / qualsiasi proxy HTTP |
| 🧵 Multi-thread | Thread worker configurabili per liste bulk |
openpyxl per i report Excelrich per le schede terminali elegantiTutto il resto è libreria standard Python (urllib, http.cookiejar, argparse, threading, ecc.).
# 1. Clona il repository
git clone https://github.com/YOUR_USERNAME/masta-cve-2026-48907.git
cd masta-cve-2026-48907
# 2. (Opzionale ma consigliato) installa i pacchetti aggiuntivi
pip install -r requirements.txt
Puoi anche eseguire lo script direttamente senza installare nulla (solo output terminale, nessun Excel):
python masta-cve-2026-48907.py -u https://target.com
python masta-cve-2026-48907.py -u https://target.com/joomla
python masta-cve-2026-48907.py -l targets.txt -t 10
python masta-cve-2026-48907.py -u https://target.com -p http://127.0.0.1:8080
python masta-cve-2026-48907.py -h
-u URL URL target singolo
-l FILE File contenente URL (uno per riga)
-o OUTPUT Percorso Excel personalizzato
-t THREADS Thread concorrenti (default: 5)
-p PROXY URL del proxy (es. http://127.0.0.1:8080)
--timeout N Timeout richiesta in secondi (default: 12)
--verify-ssl Abilita verifica certificato SSL (default: disabilitato)
-v, --verbose Mostra schede risultato complete per target durante la scansione
-d, --debug Mostra tracce delle richieste HTTP interne
--no-color Disabilita output terminale colorato
Di seguito è riportata la logica di scansione completa dall'input al report finale.
flowchart TD
A[L'utente fornisce -u URL o -l FILE] --> B[Normalizza & deduplica i target]
B --> C[Avvia ThreadPoolExecutor]
C --> D[Per ogni target]
D --> E1[probe_joomla<br/>GET /, meta, manifest,<br/>asset statici, README]
E1 --> F1{Joomla! rilevato?}
F1 -- No --> R1[Stato: NOT_JOOMLA]
F1 -- Sì --> E2[probe_jce<br/>GET jce.xml, endpoint,<br/>marcatori JCE-specifici]
E2 --> F2{JCE rilevato?}
F2 -- No --> R2[Stato: SAFE<br/>JCE non installato]
F2 -- Sì --> F3{Versione >= 2.9.99.5?}
F3 -- Sì --> R3[Stato: PATCHED]
F3 -- No --> E3[extract_csrf<br/>Analizza token CSRF Joomla!]
E3 --> F4{Token trovato?}
F4 -- No --> R4[Stato: PATCHED<br/>CSRF mancante → probabilmente rafforzato]
F4 -- Sì --> E5[Crea payload di verifica matematica<br/>masta-cve-2026-48907-poc ...]
E5 --> E6[Vettore 1: POST Multipart<br/>carica profile_file su tmp/]
E6 --> F5{HTTP 200?}
F5 -- Sì --> E7["GET /tmp/masta-{rand}.xml.php"]
E7 --> F6{Il corpo contiene<br/>MATHOK:3105:END ?}
F6 -- Sì --> R5[Stato: VULNERABLE<br/>Confidenza: CONFIRMED]
F6 -- No --> E8[Vettore 2: Catena browser<br/>carica + rinomina tramite RPC]
E8 --> F7{RCE confermata?}
F7 -- Sì --> R5
F7 -- No --> E9[Controlla pagina di blocco WAF]
E9 --> F8{WAF rilevato?}
F8 -- Sì --> R6[Stato: BLOCKED_BY_WAF]
F8 -- No --> R7[Stato: SAFE]
F5 -- No --> E8
R1 --> S[Aggiungi risultato a Excel + scheda terminale]
R2 --> S
R3 --> S
R4 --> S
R5 --> S
R6 --> S
R7 --> S
S --> D
D --> T[Stampa Dashboard di riepilogo]
T --> U[Salva Report Excel in reports/]
U --> V[Stampa promemoria pulizia per<br/>tutti i file POC caricati]
style R5 fill:#ff0000,stroke:#333,color:#fff
style R3 fill:#32CD32,stroke:#333,color:#000
style R6 fill:#FFD700,stroke:#333,color:#000| Stato | Significato | Confidenza |
|---|---|---|
| VULNERABLE | Payload PHP eseguito e prova matematica verificata. RCE reale. | CONFIRMED |
| VULNERABLE_UPLOAD_ONLY | File caricato con successo, ma l'esecuzione PHP è stata bloccata. Sfruttabile ma RCE non confermata. | HIGH |
| PATCHED | Joomla! / JCE rilevato e versione >= 2.9.99.5, oppure CSRF rafforzato. | HIGH / MEDIUM |
| SAFE | JCE non installato, o vettori di sfruttamento falliti (probabilmente patchato/rafforzato). | HIGH |
| BLOCKED_BY_WAF | Un Web Application Firewall ha bloccato il test. | LOW |
| NOT_JOOMLA | Il target non sembra essere un sito Joomla!. | CERTAIN |
| ERROR | Errore di rete / connettività / eccezione non gestita. | LOW |
Sostituisci l'immagine sottostante con il tuo screenshot terminale reale.

Sostituisci l'immagine sottostante con il tuo screenshot del report Excel reale.

Suggerimento: Esegui lo scanner su un'istanza Joomla! di test locale per generare screenshot reali. Inseriscili nella cartella assets/ e verranno renderizzati automaticamente su GitHub.
Questo scanner carica un innocuo proof-of-concept PHP sul server target per confermare la vulnerabilità. Lo strumento stamperà sempre un promemoria al termine della scansione elencando tutti i file caricati. Devi eliminarli manualmente dopo il test. Questi file si chiamano masta-{random}.xml.php o simili e contengono la riga di attribuzione in testo chiaro:
masta-cve-2026-48907-poc. Questo test è eseguito come parte della Valutazione di Sicurezza - masta ghimau.
Usando questo software accetti la piena responsabilità delle tue azioni. Il codice è fornito "così com'è" senza garanzie. Se non comprendi le implicazioni dell'esecuzione di uno scanner invasivo di verifica RCE, non utilizzare questo strumento.
🛡 Usalo per proteggere i tuoi asset. Non per danneggiare gli altri.