Scanner Python de arquivo único para CVE-2026-48907 (JCE Editor RCE no Joomla). Detecta Joomla/JCE, realiza teste de payload intrusivo verificado matematicamente, suporta escaneamento em lote com threads, detecção de WAF e gera relatórios Excel estilizados.
Scanner autossuficiente em arquivo único para Joomla! JCE Editor < 2.9.99.5 — Execução Remota de Código Não Autenticada (CVE-2026-48907)
Autor: Hussein Mohamed (masta ghimau)
[!CAUTION]
🚨 AVISO — LEIA ANTES DE USAR
ESTA É UMA FERRAMENTA DE TESTE DE SEGURANÇA INTRUSIVA.
ESTA FERRAMENTA É APENAS PARA AVALIAÇÕES DE SEGURANÇA AUTORIZADAS.
Escaneiar sistemas que você NÃO possui ou para os quais NÃO tem PERMISSÃO POR ESCRITO é ILEGAL na maioria das jurisdições.
O autor (Hussein Mohamed masta ghimau) NÃO aceita NENHUMA responsabilidade por qualquer uso indevido, dano, ação judicial ou perda de dados decorrentes do uso desta ferramenta.
Ao executar este scanner, você concorda em:
Escaneiar apenas ativos que VOCÊ POSSUI ou para os quais tem CONSENTIMENTO POR ESCRITO EXPLÍCITO.
Entender que um arquivo PHP POC inofensivo é enviado ao servidor alvo como parte da verificação intrusiva de precisão.
Excluir manualmente cada arquivo POC enviado imediatamente após o uso.
USE POR SUA CONTA E RISCO.
[!IMPORTANT] Por que "intrusivo" importa para a precisão: Para atingir o mais alto nível de confiança e eliminar falsos positivos, esta ferramenta realiza um teste de payload com verificação matemática ao vivo. Ela envia uma linha PHP de prova de conceito segura e, em seguida, confirma a Execução Remota de Código verificando o resultado matemático exato computado retornado pelo servidor. Scanners não intrusivos que apenas leem strings de versão podem perder patches retroativos ou correções personalizadas. Esta ferramenta verifica se a vulnerabilidade realmente existe. Portanto, é intrusiva por design — use com sabedoria e com autorização total.
masta-cve-2026-48907.py é um scanner Python completamente original, de arquivo único, projetado para detectar CVE-2026-48907 em instâncias Joomla! executando o componente JCE Editor em versões anteriores a 2.9.99.5.
requests/httpx..py que você pode colocar em qualquer lugar.openpyxl ou rich, mas fica bonito quando estão instalados.ThreadPoolExecutor..xlsx) estilizados com cores condicionais.| Recurso | Descrição |
|---|---|
| 🔍 Identificação por múltiplas fontes | Detecta Joomla! e JCE via meta tags, manifestos, ativos estáticos, arquivos de idioma e endpoints específicos do JCE |
| 🛡 Detecção de WAF | Identifica bloqueios de Cloudflare, Incapsula, Sucuri e ModSecurity |
| 🧪 POC intrusivo seguro | Envia um verificador matemático PHP inofensivo (atribuído e explicitamente marcado para limpeza) |
| 📊 Interface de terminal em cartões | Painéis Rich Panel + Table (ou fallback ANSI) por alvo |
| 📁 Relatório Excel | .xlsx gerado automaticamente com cabeçalhos, painéis congelados, larguras de coluna e células de status coloridas |
| ⚙️ Suporte a proxy | Roteie todo o tráfego através de Burp / ZAP / qualquer proxy HTTP |
| 🧵 Com threads | Workers configuráveis para listas em lote |
openpyxl para relatórios Excelrich para cartões bonitos no terminalTodo o resto é da biblioteca padrão Python (urllib, http.cookiejar, argparse, threading, etc.).
# 1. Clone o repositório
git clone https://github.com/YOUR_USERNAME/masta-cve-2026-48907.git
cd masta-cve-2026-48907
# 2. (Opcional, mas recomendado) instale extras
pip install -r requirements.txt
Você também pode executar o script diretamente sem instalar nada (apenas saída no terminal, sem 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 do alvo único
-l FILE Arquivo contendo URLs (uma por linha)
-o OUTPUT Caminho personalizado para saída Excel
-t THREADS Threads concorrentes (padrão: 5)
-p PROXY URL do proxy (ex.: http://127.0.0.1:8080)
--timeout N Tempo limite da requisição em segundos (padrão: 12)
--verify-ssl Ativar verificação do certificado SSL (padrão: desabilitado)
-v, --verbose Mostrar cartões de resultado completos por alvo durante o escaneamento
-d, --debug Mostrar rastros internos de requisições HTTP
--no-color Desabilitar saída colorida no terminal
Abaixo está a lógica completa do escaneamento, desde a entrada até o relatório final.
flowchart TD
A[Usuário fornece -u URL ou -l FILE] --> B[Normalizar & deduplicar alvos]
B --> C[Iniciar ThreadPoolExecutor]
C --> D[Para cada alvo]
D --> E1[probe_joomla<br/>GET /, meta, manifesto,<br/>ativos estáticos, README]
E1 --> F1{Joomla! detectado?}
F1 -- Não --> R1[Status: NOT_JOOMLA]
F1 -- Sim --> E2[probe_jce<br/>GET jce.xml, endpoints,<br/>marcadores específicos do JCE]
E2 --> F2{JCE detectado?}
F2 -- Não --> R2[Status: SAFE<br/>JCE não instalado]
F2 -- Sim --> F3{Versão >= 2.9.99.5?}
F3 -- Sim --> R3[Status: PATCHED]
F3 -- Não --> E3[extract_csrf<br/>Analisar token CSRF do Joomla!]
E3 --> F4{Token encontrado?}
F4 -- Não --> R4[Status: PATCHED<br/>CSRF ausente → provavelmente reforçado]
F4 -- Sim --> E5[Construir payload verificador matemático<br/>masta-cve-2026-48907-poc ...]
E5 --> E6[Vetor 1: POST Multipart<br/>upload profile_file para tmp/]
E6 --> F5{HTTP 200?}
F5 -- Sim --> E7["GET /tmp/masta-{rand}.xml.php"]
E7 --> F6{Corpo contém<br/>MATHOK:3105:END ?}
F6 -- Sim --> R5[Status: VULNERABLE<br/>Confiança: CONFIRMED]
F6 -- Não --> E8[Vetor 2: Cadeia do navegador<br/>upload + renomear via RPC]
E8 --> F7{RCE confirmado?}
F7 -- Sim --> R5
F7 -- Não --> E9[Verificar página de bloqueio do WAF]
E9 --> F8{WAF detectado?}
F8 -- Sim --> R6[Status: BLOCKED_BY_WAF]
F8 -- Não --> R7[Status: SAFE]
F5 -- Não --> E8
R1 --> S[Adicionar resultado ao Excel + cartão do terminal]
R2 --> S
R3 --> S
R4 --> S
R5 --> S
R6 --> S
R7 --> S
S --> D
D --> T[Imprimir Painel de Resumo]
T --> U[Salvar Relatório Excel em reports/]
U --> V[Imprimir lembrete de limpeza para<br/>todos os arquivos POC enviados]
style R5 fill:#ff0000,stroke:#333,color:#fff
style R3 fill:#32CD32,stroke:#333,color:#000
style R6 fill:#FFD700,stroke:#333,color:#000| Status | Significado | Confiança |
|---|---|---|
| VULNERABLE | Payload PHP executado e prova matemática verificada. RCE é real. | CONFIRMED |
| VULNERABLE_UPLOAD_ONLY | Arquivo enviado com sucesso, mas a execução PHP foi bloqueada. Explorável, mas RCE não confirmado. | HIGH |
| PATCHED | Joomla! / JCE detectado e versão é >= 2.9.99.5, ou CSRF está reforçado. | HIGH / MEDIUM |
| SAFE | JCE não instalado, ou vetores de exploração falharam (provavelmente corrigido/reforçado). | HIGH |
| BLOCKED_BY_WAF | Um Firewall de Aplicação Web bloqueou o teste. | LOW |
| NOT_JOOMLA | O alvo não parece ser um site Joomla!. | CERTAIN |
| ERROR | Rede / conectividade / exceção não tratada. | LOW |
Substitua a imagem abaixo pela sua captura de tela real do terminal.

Substitua a imagem abaixo pela sua captura de tela real do relatório Excel.

Dica: Execute o scanner contra uma instância Joomla! de teste local para gerar capturas de tela reais. Adicione-as à pasta assets/ e elas serão renderizadas automaticamente no GitHub.
Este scanner envia uma prova de conceito PHP inofensiva ao servidor alvo para confirmar a vulnerabilidade. A ferramenta sempre exibirá um lembrete ao final do escaneamento listando todos os arquivos enviados. Você deve excluí-los manualmente após o teste. Esses arquivos são nomeados masta-{random}.xml.php ou similar e contêm a linha de atribuição clara:
masta-cve-2026-48907-poc. This test is done as part of Security Assessment - masta ghimau.
Ao usar este software, você assume total responsabilidade por suas ações. O código é fornecido "no estado em que se encontra", sem garantias. Se você não compreende as implicações de executar um scanner intrusivo de verificação de RCE, não utilize esta ferramenta.
🛡 Use-o para proteger seus próprios ativos. Não para prejudicar outros.