
cve-2026-48907 scanner
Scanner autonomo e contenuto in un unico file per Joomla! JCE Editor < 2.9.99.5 — Remote Code Execution non autenticata (CVE-2026-48907)
Autore: Alma
[!CAUTION]
🚨 DICHIARAZIONE DI NON RESPONSABILITÀ — LEGGERE PRIMA DELL'USO
QUESTO È UNO STRUMENTO DI TEST DI SICUREZZA INTRUSIVO.
QUESTO STRUMENTO È SOLO PER VALUTAZIONI DI SICUREZZA AUTORIZZATE.
Scansionare sistemi di cui NON si è proprietari o per i quali NON si ha un'AUTORIZZAZIONE SCRITTA è ILLEGALE nella maggior parte delle giurisdizioni.
L'autore (Hussein Mohamed masta ghimau) NON ACCETTA ALCUNA responsabilità per qualsiasi uso improprio, danno, azione legale o perdita di dati derivante dall'uso di questo strumento.
Eseguendo questo scanner accetti:
Di scansionare SOLO risorse di TUA PROPRIETÀ o per le quali hai un CONSENSO ESPLICITO SCRITTO.
Di comprendere che viene caricato un file PHP POC innocuo sul server target come parte del controllo di accuratezza intrusivo.
Di eliminare manualmente ogni file POC caricato immediatamente dopo l'uso.
UTILIZZO A PROPRIO RISCHIO.
[!IMPORTANT] Perché "intrusivo" è importante per l'accuratezza: Per ottenere la massima confidenza possibile ed eliminare i falsi positivi, questo strumento esegue un test di payload di verifica matematica in tempo reale. Carica una riga PHP di proof-of-concept sicura e quindi conferma la Remote Code Execution verificando il risultato matematico esatto calcolato restituito dal server. Gli scanner non intrusivi che leggono solo le stringhe di versione possono perdere patch backportate o hot-fix personalizzati. Questo strumento verifica che la vulnerabilità esista effettivamente. 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 versioni precedenti alla 2.9.99.5.
requests/httpx..py che puoi posizionare ovunque.openpyxl o rich, ma ha un bell'aspetto quando sono installati.ThreadPoolExecutor..xlsx) con colori condizionali.openpyxl per report Excelrich per schede terminale 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 gli extra
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 singolo del target
-l FILE File contenente gli URL (uno per riga)
-o OUTPUT Percorso personalizzato per l'output Excel
-t THREADS Thread concorrenti (default: 5)
-p PROXY URL del proxy (es. http://127.0.0.1:8080)
--timeout N Timeout delle richieste in secondi (default: 12)
--verify-ssl Abilita verifica certificato SSL (default: disabilitato)
-v, --verbose Mostra schede complete per target durante la scansione
-d, --debug Mostra tracce interne delle richieste HTTP
--no-color Disabilita output terminale colorato
Di seguito è riportata la logica di scansione completa dall'input al report finale.
flowchart TD
A[User provides -u URL or -l FILE] --> B[Normalize & deduplicate targets]
B --> C[Launch ThreadPoolExecutor]
C --> D[For each target]
D --> E1[probe_joomla<br/>GET /, meta, manifest,<br/>static assets, README]
E1 --> F1{Joomla! detected?}
F1 -- No --> R1[Status: NOT_JOOMLA]
F1 -- Yes --> E2[probe_jce<br/>GET jce.xml, endpoints,<br/>JCE-specific markers]
E2 --> F2{JCE detected?}
F2 -- No --> R2[Status: SAFE<br/>JCE not installed]
F2 -- Yes --> F3{Version >= 2.9.99.5?}
F3 -- Yes --> R3[Status: PATCHED]
F3 -- No --> E3[extract_csrf<br/>Parse Joomla! CSRF token]
E3 --> F4{Token found?}
F4 -- No --> R4[Status: PATCHED<br/>CSRF missing → likely hardened]
F4 -- Yes --> E5[Build math-verifier payload<br/>masta-cve-2026-48907-poc ...]
E5 --> E6[Vector 1: Multipart POST<br/>profile_file upload to tmp/]
E6 --> F5{HTTP 200?}
F5 -- Yes --> E7["GET /tmp/masta-{rand}.xml.php"]
E7 --> F6{Body contains<br/>MATHOK:3105:END ?}
F6 -- Yes --> R5[Status: VULNERABLE<br/>Confidence: CONFIRMED]
F6 -- No --> E8[Vector 2: Browser chain<br/>upload + rename via RPC]
E8 --> F7{RCE confirmed?}
F7 -- Yes --> R5
F7 -- No --> E9[Check for WAF block page]
E9 --> F8{WAF detected?}
F8 -- Yes --> R6[Status: BLOCKED_BY_WAF]
F8 -- No --> R7[Status: SAFE]
F5 -- No --> E8
R1 --> S[Append result to Excel + Terminal card]
R2 --> S
R3 --> S
R4 --> S
R5 --> S
R6 --> S
R7 --> S
S --> D
D --> T[Print Summary Dashboard]
T --> U[Save Excel Report to reports/]
U --> V[Print cleanup reminder for<br/>all uploaded POC files]
style R5 fill:#ff0000,stroke:#333,color:#fff
style R3 fill:#32CD32,stroke:#333,color:#000
style R6 fill:#FFD700,stroke:#333,color:#000
Sostituisci l'immagine qui sotto con il tuo screenshot reale del terminale.
Placeholder Screenshot Terminale
Sostituisci l'immagine qui sotto con il tuo screenshot reale del report Excel.
Placeholder Report Excel
Consiglio: esegui lo scanner contro un'istanza Joomla! di test locale per generare screenshot reali. Caricali nella cartella assets/ e verranno renderizzati automaticamente su GitHub.
Questo scanner carica un PHP proof-of-concept innocuo sul server target per confermare la vulnerabilità. Lo strumento stamperà sempre un promemoria alla fine della scansione elencando tutti i file caricati. Devi eliminarli manualmente dopo il test. Questi file sono denominati masta-{random}.xml.php o simili e contengono la riga di attribuzione in chiaro:
masta-cve-2026-48907-poc. This test is done as part of Security Assessment - masta ghimau.
Usando questo software riconosci la piena responsabilità per le tue azioni. Il codice è fornito "così com'è" senza garanzie. Se non comprendi le implicazioni dell'esecuzione di uno scanner di verifica RCE intrusivo, non utilizzare questo strumento.
🛡 Usalo per proteggere le tue risorse. Non per danneggiare altri.
| Funzionalità | Descrizione |
|---|
| 🔍 Riconoscimento multi-fonte | Rileva Joomla! e JCE tramite meta tag, manifest, asset statici, file lingua ed endpoint specifici di JCE |
| 🛡 Rilevamento WAF | Identifica blocchi di Cloudflare, Incapsula, Sucuri e ModSecurity |
| 🧪 POC intrusivo sicuro | Carica un verificatore matematico PHP innocuo (attribuito ed esplicitamente etichettato per la pulizia) |
| 📊 Interfaccia terminale a schede | Panel + Table di Rich (o fallback ANSI) per ogni target |
| 📁 Report Excel | .xlsx generato automaticamente con intestazioni, riquadri di blocco, larghezze colonne e celle colorate in base allo stato |
| ⚙️ Supporto proxy | Instrada tutto il traffico attraverso Burp / ZAP / qualsiasi proxy HTTP |
| 🧵 Multi-thread | Thread worker configurabili per liste bulk |
| Stato | Significato | Confidenza |
|---|
| VULNERABLE | Payload PHP eseguito e prova matematica verificata. La 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 exploit 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 | Eccezione di rete/connettività/non gestita. | LOW |