Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-3844-Lab — Lab Docker local para reproduzir a CVE-2026-3844, um upload arbitrário de arquivos não autenticado que leva a RCE no plugin WordPress Breeze Cache. Compara a versão vulnerável 2.4.4 com a corrigida 2.4.5 usando serviços isolados e um PoC de menor impacto. | Kitploit
Ferramentas/GitHubGitHub/rootdirective-sec/cve-2026-3844-lab
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebCTFAprendizado e EducaçãoLabs e Prática
GitHubrootdirective-sec/cve-2026-3844-lab

CVE-2026-3844-Lab

Lab Docker local para reproduzir a CVE-2026-3844, um upload arbitrário de arquivos não autenticado que leva a RCE no plugin WordPress Breeze Cache. Compara a versão vulnerável 2.4.4 com a corrigida 2.4.5 usando serviços isolados e um PoC de menor impacto.

Ver Repositório
118há 4 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-3844 — Laboratório de Upload Arbitrário de Arquivo Não Autenticado para RCE no Breeze Cache

Laboratório Docker exclusivamente local para reproduzir e comparar o comportamento da CVE-2026-3844 no plugin Breeze Cache do WordPress.

Este repositório demonstra o comportamento vulnerável no Breeze Cache 2.4.4 e o compara com o comportamento corrigido no Breeze Cache 2.4.5. O laboratório usa dois serviços WordPress isolados, um vulnerável e um corrigido, além de um servidor de payload local dentro da rede Docker.

A prova de conceito é intencionalmente de dano mínimo: não usa webshell, não expõe parâmetro de comando, não inicia reverse shell e não exige leitura de arquivos de dentro do contêiner. A prova baseia-se no comportamento HTTP observável a partir do host.


Resumo Executivo

A CVE-2026-3844 afeta o plugin Breeze Cache para WordPress até a versão 2.4.4, inclusive. O caminho de código vulnerável está relacionado ao recurso de cache local de Gravatars do plugin, especificamente ao fluxo fetch_gravatar_from_remote().

Quando a opção Host Files Locally - Gravatars do Breeze está habilitada, versões vulneráveis podem buscar um arquivo remoto controlado pelo atacante e armazená-lo em um diretório de cache publicamente acessível via web. Se o arquivo buscado for PHP, ele pode ser executado pelo servidor web quando solicitado via HTTP.

Este laboratório reproduz esse comportamento localmente:

  • Serviço vuln: WordPress + Breeze Cache 2.4.4
  • Serviço patched: WordPress + Breeze Cache 2.4.5
  • Serviço payload: servidor de payload local exclusivo do Docker
  • PoC: gatilho não autenticado baseado em comentário usando uma string srcset controlada

O resultado esperado é:

  • http://127.0.0.1:8081 / Breeze 2.4.4 → o PHP de prova é armazenado em cache e executado
  • http://127.0.0.1:8082 / Breeze 2.4.5 → o PHP de prova não é armazenado em cache/não é legível/não é executado

Estrutura do Repositório

.
├── docker-compose.yml
├── vuln/
│   └── Dockerfile
├── patched/
│   └── Dockerfile
├── scripts/
│   └── seed-wordpress.sh
├── payload/
│   └── manual-proof.php
│   └── proof-cve3844.php
├── poc/
│   └── poc.py
│   └── requirements.txt
├── .gitignore
├── README.md

Arquitetura do Laboratório

Host machine
│
├── http://127.0.0.1:8081  -> vuln WordPress + Breeze 2.4.4
├── http://127.0.0.1:8082  -> patched WordPress + Breeze 2.4.5
└── http://127.0.0.1:9100  -> local payload server

Docker network
│
├── vuln       -> WordPress vulnerable target
├── patched    -> WordPress patched target
├── vuln_db    -> MariaDB for vulnerable WordPress
├── patched_db -> MariaDB for patched WordPress
└── payload    -> Python static HTTP server

Os contêineres WordPress buscam o payload por meio da URL da rede Docker:

http://payload:9100/<payload-file>.php

O host verifica o resultado por meio de requisições HTTP normais aos serviços WordPress.


Componente Afetado

  • Produto: plugin Breeze Cache para WordPress
  • Versão vulnerável neste laboratório: 2.4.4
  • Versão corrigida neste laboratório: 2.4.5
  • Função vulnerável: fetch_gravatar_from_remote()
  • Arquivo relevante: inc/class-breeze-cache-cronjobs.php
  • Pré-condição necessária: breeze-store-gravatars-locally deve estar habilitado

O comportamento vulnerável só é alcançável quando o cache local de Gravatars está habilitado. Essa opção vem desabilitada por padrão em instalações típicas, mas este laboratório a habilita intencionalmente para reproduzir o caminho de código vulnerável.


Resumo da Causa Raiz

No Breeze Cache 2.4.4, o fluxo de localização de Gravatars pode extrair uma URL remota do HTML relacionado a avatares e passar essa URL para fetch_gravatar_from_remote().

A versão vulnerável não possui validação suficiente em relação ao arquivo remoto:

  • sem validação rigorosa de host confiável para fontes de Gravatar
  • sem lista de permissões confiável de extensões de arquivo antes de salvar
  • sem validação de MIME/conteúdo antes de colocar o arquivo em um diretório de cache público
  • o arquivo buscado pode manter uma extensão perigosa como .php

O arquivo resultante é armazenado em:

/wp-content/cache/breeze-extra/gravatars/

Quando um arquivo PHP é salvo nesse diretório e depois solicitado por meio do Apache/PHP, o servidor o executa.

No Breeze Cache 2.4.5, o fluxo corrigido adiciona validação que impede que este payload do laboratório seja armazenado em cache como PHP executável. Na reprodução local, o mesmo gatilho funciona contra o 2.4.4, mas não expõe o marcador de prova contra o 2.4.5.


Por Que Este Laboratório Usa um Helper de MU Plugin

Este laboratório mantém intencionalmente o servidor de payload local em vez de usar um host de payload público.

O download_url() do WordPress e a API HTTP do WordPress rejeitam por padrão alguns hostnames Docker privados e portas não padronizadas. Scripts de exploit públicos costumam usar URLs de payload HTTPS públicas, que evitam essa restrição. Este laboratório não faz isso.

Para manter a reprodução totalmente local, o script de seed instala um pequeno helper de MU plugin local-only que:

  • permite apenas os hostnames Docker locais de payload payload e payload.local
  • permite apenas as portas do laboratório 80 e 9100
  • aprova automaticamente comentários do laboratório
  • desabilita verificações de flood de comentários para testes locais determinísticos

Este helper não modifica o código-fonte do Breeze. Tanto o serviço vulnerável quanto o corrigido usam versões reais do plugin Breeze instaladas via WP-CLI.

O helper existe apenas para tornar o laboratório Docker determinístico e exclusivamente local.


Modelo de Segurança

Este repositório destina-se apenas a pesquisa de segurança local e demonstração de portfólio.

Salvaguardas:

  • executa somente em localhost e em serviços da rede Docker
  • sem servidor de callback externo
  • sem alvo de exploit público
  • sem reverse shell
  • sem shell interativo
  • sem comportamento de webshell cmd=
  • sem segredos ou credenciais reais
  • sem leitura de arquivos do contêiner para a prova
  • a prova é observada por meio do comportamento das respostas HTTP

O payload da PoC imprime informações benignas do runtime do PHP:

CVE-2026-3844_LEAST_HARM_PHP_EXEC_PROOF_<nonce>
php_sapi=apache2handler
user=www-data
uid=33
pid=<process id>
host=<container hostname>

Isso comprova o contexto de execução de código sem disparar comandos de shell.


Requisitos

  • Docker Desktop ou Docker Engine
  • Docker Compose v2
  • Python 3.9+
  • Pacote Python: requests

Instale a dependência Python:

python3 -m venv .venv
source .venv/bin/activate
pip install -r poc/requirements.txt

O requirements.txt deve conter:

requests

Início Rápido

Compile e inicie o laboratório:

docker compose down -v --remove-orphans
docker compose up -d --build

Verifique o status dos serviços:

docker compose ps

Serviços esperados:

vuln        healthy    http://127.0.0.1:8081
patched     healthy    http://127.0.0.1:8082
payload     running    http://127.0.0.1:9100
vuln_db     healthy
patched_db  healthy

Verifique os logs do seed:

docker compose logs --tail=120 vuln
docker compose logs --tail=120 patched

Linhas de log esperadas:

[seed] WordPress ready at http://localhost:8081 with Breeze 2.4.4
[seed] WordPress ready at http://localhost:8082 with Breeze 2.4.5

Verificar Prontidão do Laboratório

Verifique a instalação do WordPress:

docker compose exec vuln wp core is-installed --allow-root --path=/var/www/html
docker compose exec patched wp core is-installed --allow-root --path=/var/www/html

Verifique as versões do Breeze:

Baixar ferramenta