Scanner Python en un seul fichier pour CVE-2026-48907 (JCE Editor RCE de Joomla). Détecte Joomla/JCE, effectue un test de charge utile intrusif vérifié mathématiquement, prend en charge le scanning en masse avec threads, la détection WAF et génère des rapports Excel stylisés.
Scanner autonome et monofichier pour Joomla! JCE Editor < 2.9.99.5 — Exécution de code à distance non authentifiée (CVE-2026-48907)
Auteur : Hussein Mohamed (masta ghimau)
[!CAUTION]
🚨 AVERTISSEMENT — À LIRE AVANT UTILISATION
CECI EST UN OUTIL DE TEST DE SÉCURITÉ INTRUSIF.
THIS TOOL IS FOR AUTHORIZED SECURITY ASSESSMENTS ONLY.
Scanning systems you do NOT own or have WRITTEN PERMISSION to test is ILLEGAL in most jurisdictions.
The author (Hussein Mohamed masta ghimau) accepts ABSOLUTELY NO liability for any misuse, damage, legal action, or data loss arising from the use of this tool.
By running this scanner you agree to:
Only scan assets YOU OWN or have EXPLICIT WRITTEN CONSENT.
Understand that uploads a harmless POC PHP file to the target server as part of the intrusive accuracy check.
Manually delete every uploaded POC file immediately after use.
USE AT YOUR OWN RISK.
[!IMPORTANT] Pourquoi l'aspect « intrusif » est important pour la précision : Pour atteindre le plus haut niveau de confiance possible et éliminer les faux positifs, cet outil effectue un . Il télécharge une ligne de preuve de concept PHP sécurisée, puis confirme l'exécution de code à distance en vérifiant le résultat mathématique exact calculé renvoyé par le serveur. Les scanners non intrusifs qui ne lisent que les chaînes de version peuvent manquer des correctifs rétroportés ou des correctifs personnalisés. Par conséquent, il est intrusif par conception — utilisez-le avec sagesse et avec une autorisation complète.
masta-cve-2026-48907.py est un scanner Python complètement original et monofichier conçu pour détecter CVE-2026-48907 dans les instances Joomla! exécutant le composant JCE Editor de versions antérieures à 2.9.99.5.
requests/httpx..py que vous pouvez déposer n'importe où.openpyxl ni rich, mais s'affiche magnifiquement lorsqu'ils sont installés.ThreadPoolExecutor..xlsx) stylisés avec des couleurs conditionnelles.| Fonctionnalité | Description |
|---|---|
| 🔍 Empreinte multi-source | Détecte Joomla! et JCE via les balises meta, les manifestes, les ressources statiques, les fichiers de langue et les points de terminaison spécifiques à JCE |
| 🛡 Détection WAF | Identifie les blocages Cloudflare, Incapsula, Sucuri et ModSecurity |
| 🧪 POC intrusif sécurisé | Télécharge un vérificateur mathématique PHP inoffensif (attribué + étiqueté explicitement pour le nettoyage) |
| 📊 Interface terminale basée sur des cartes | Cartes Panel + Table Rich (ou bascule ANSI) par cible |
| 📁 Rapport Excel | .xlsx auto-généré avec en-têtes, volets figés, largeurs de colonnes et cellules de statut colorées |
| ⚙️ Support proxy | Achemine tout le trafic via Burp / ZAP / tout proxy HTTP |
| 🧵 Multithread | Threads de travail configurables pour les listes en masse |
openpyxl pour les rapports Excelrich pour les belles cartes terminalesTout le reste provient de la bibliothèque standard Python (urllib, http.cookiejar, argparse, threading, etc.).
# 1. Clone the repo
git clone https://github.com/YOUR_USERNAME/masta-cve-2026-48907.git
cd masta-cve-2026-48907
# 2. (Optional but recommended) install extras
pip install -r requirements.txt
Vous pouvez également exécuter le script directement sans rien installer (sortie terminal uniquement, pas d'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 Single target URL
-l FILE File containing URLs (one per line)
-o OUTPUT Custom Excel output path
-t THREADS Concurrent threads (default: 5)
-p PROXY Proxy URL (e.g. http://127.0.0.1:8080)
--timeout N Request timeout in seconds (default: 12)
--verify-ssl Enable SSL certificate verification (default: disabled)
-v, --verbose Show full per-target result cards during scan
-d, --debug Show internal HTTP request traces
--no-color Disable colored terminal output
Vous trouverez ci-dessous la logique de scan complète, de l'entrée au rapport final.
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| Statut | Signification | Confiance |
|---|---|---|
| VULNÉRABLE | Charge utile PHP exécutée et preuve mathématique vérifiée. La RCE est réelle. | CONFIRMÉ |
| VULNÉRABLE_UNIQUEMENT_TÉLÉCHARGEMENT | Fichier téléchargé avec succès, mais l'exécution PHP a été bloquée. Exploitable mais RCE non confirmée. | HAUTE |
| CORRIGÉ | Joomla! / JCE détecté et version >= 2.9.99.5, ou CSRF renforcé. | HAUTE / MOYENNE |
| SÛR | JCE non installé, ou vecteurs d'exploitation échoués (probablement corrigé/renforcé). | HAUTE |
| BLOQUÉ_PAR_WAF | Un pare-feu d'application Web a bloqué le test. | BASSE |
| PAS_JOOMLA | La cible ne semble pas être un site Joomla!. | CERTAIN |
| ERREUR | Réseau / connectivité / exception non gérée. | BASSE |
Remplacez l'image ci-dessous par votre capture d'écran réelle du terminal.

Remplacez l'image ci-dessous par votre capture d'écran réelle du rapport Excel.

Astuce : Exécutez le scanner sur une instance Joomla! de test locale pour générer de vraies captures d'écran. Placez-les dans le dossier assets/ et elles s'afficheront automatiquement sur GitHub.
Ce scanner télécharge une preuve de concept PHP inoffensive sur le serveur cible pour confirmer la vulnérabilité. L'outil imprime toujours un rappel à la fin de l'analyse listant tous les fichiers téléchargés. Vous devez les supprimer manuellement après le test. Ces fichiers sont nommés masta-{random}.xml.php ou similaire et contiennent la ligne d'attribution en texte clair :
masta-cve-2026-48907-poc. This test is done as part of Security Assessment - masta ghimau.
En utilisant ce logiciel, vous reconnaissez l'entière responsabilité de vos actions. Le code est fourni « en l'état » sans aucune garantie. Si vous ne comprenez pas les implications de l'exécution d'un scanner de vérification RCE intrusif, n'utilisez pas cet outil.
🛡 Use it to protect your own assets. Not to harm others.