Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
mikrotrick-poc — CVE-2026-67276 RouterOS SSH-аутентификация с открытым ключом: обход защиты, лабораторный PoC | Kitploit
Инструменты/GitHubGitHub/dinosn/mikrotrick-poc
Анализ уязвимостейЭксплуатацияСетевая безопасностьТестирование на ПроникновениеАутентификация
GitHubdinosn/mikrotrick-poc

mikrotrick-poc

CVE-2026-67276 RouterOS SSH-аутентификация с открытым ключом: обход защиты, лабораторный PoC

Репозиторий
10031601 месяц назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Лабораторный PoC MikroTrick — CVE-2026-67276 (обход аутентификации по открытому ключу SSH в RouterOS)

Только для лабораторного использования. Запускать исключительно против экземпляров RouterOS, которыми вы владеете. Атака на устройства, которыми вы не владеете, является преступлением (CFAA, ст. 267 УК Польши, аналогичные нормы).

Предыстория

CERT PL (05.09.2026) раскрыл шесть уязвимостей RouterOS, активно эксплуатируемых в дикой природе в составе цепочки «MikroTrick» (полный захват устройства без аутентификации при доступности SSH из интернета). Исправлено MikroTik 03.09.2026 в 7.25beta3 / 7.24.2 / 7.23.4 / 6.49.21.

CVEТипОсновной дефект
2026-67276CWE-347 (данный PoC)Проверка соответствия ключа в SSH userauth сравнивает (тип ключа, модуль), но опускает экспоненту; проверка подписи использует предоставленный клиентом ключ ⇒ подделка при e=1
2026-86060CWE-88Внедрение аргументов через имя пользователя, начинающееся с запрещённого символа (-2 в журналах атак) ⇒ изменение policy-mask ⇒ повышение привилегий
2026-67279CWE-841SSH переходит в протокол соединения после запрошенного клиентом rekey без завершённого userauth ⇒ неаутентифицированное выполнение команд в файловом пространстве имён
2026-67277CWE-306Состояние bandwidth-test до аутентификации + раскрытие неинициализированного буфера + целочисленное переполнение размера ⇒ утечка памяти ядра / перезагрузка
2026-67278CWE-347X.509 принимает некорректные подписи RSA/PKCS#1v1.5; доверенный якорь e=3 ⇒ подделка доверенного промежуточного сертификата
2026-67281CWE-824WebFig /jsproxy устаревший неинициализированный указатель principal + обход пути ⇒ чтение файлов от root

Уязвимые диапазоны (все шесть): [7.24, 7.24.2), [7.0.0, 7.23.4), [6.0.0, 6.49.21).

Механизм CVE-2026-67276

  1. RouterOS сопоставляет представленный SSH-блоб открытого ключа с авторизованным ключом пользователя по (тип ключа, модуль) — экспонента не сравнивается.
  2. Проверка подписи использует предоставленный клиентом ключ, т.е. экспоненту из блоба атакующего.
  3. Представление {ssh-rsa, e=1, n=жертва} делает sig^1 mod n == sig, поэтому корректная «подпись» — это просто EMSA-PKCS1-v1_5(hash, authdata) — вычислимая любым, кто знает открытый модуль жертвы. Закрытый ключ не нужен.
  4. Результат: SSH-канал команд под учётной записью целевого пользователя.

Предварительные условия (минимум из самого раскрытия): имя целевого пользователя + открытый RSA-модуль авторизованного ключа этого пользователя.

Минимальная информация, необходимая для воспроизведения

  1. Цель: любой RouterOS в уязвимых диапазонах, SSH доступен (лаборатория: образ CHR в QEMU с KVM; реальное оборудование эквивалентно).
  2. Имя пользователя учётной записи с авторизованным RSA-ключом.
  3. RSA-модуль n этого авторизованного ключа (из утёкшего/перехваченного .pub, записей провижининга или --modulus-hex). Это единственный почти секретный вход; закрытый ключ никогда не нужен.
  4. Подтверждённое раскрытием поведение сервера (сам дефект, от CERT PL): сопоставление = (тип, n), проверка экспоненты = предоставленная клиентом.
  5. Клиент, способный представить произвольный блоб ключа и произвольные байты подписи (paramiko + хук ForgeKey — стандартный OpenSSH не может).
  6. Алгоритм подписи, принимаемый сервером (ssh-rsa на 6.x, rsa-sha2-256 также на 7.x).

Файлы

  • forge_67276.py — примитив: разбор открытых ключей OpenSSH, EMSA-кодировщик RFC 8017, конструкторы поддельных блобов/подписей, эталонный верификатор RFC 8017.
  • selftest.py — локальное доказательство, без роутера: кодировщик побайтово идентичен OpenSSL (через инверсию реальной подписи), поддельная подпись проходит при e=1 и НЕ проходит при 65537, полная симуляция wire-формата RFC 4252 §7. Все 15 проверок PASS.
  • poc_67276.py — клиент paramiko, выполняющий обход (привязка алгоритма на каждое соединение; требуется --lab-i-own-this-target).
  • console_setup.py — разовая подготовка CHR через qemu serial telnet (получение ключа жертвы через 10.0.2.2, импорт для admin, включение ssh).
  • sanity_real_key.py — контроль: обычная аутентификация по открытому ключу должна сначала пройти.
  • victim_rsa / victim.pub — сгенерированная одноразовая 2048-битная пара «жертвы»; намеренно исключена из Git.

Локальная настройка

python3 -m venv .venv
./.venv/bin/python -m pip install -r requirements.txt
ssh-keygen -q -t rsa -b 2048 -N '' -C victim-key -f victim_rsa

Лаборатория (развёрнута на [email protected])

  • Kali x86_64, QEMU 11.0.1 + KVM, /root/mikrotrick-lab/, мост хоста br0 (192.168.100.1/24) с tap-интерфейсами tap0-tap3; dnsmasq на br0 с арендами по MAC.
ВМОбразIP гостяMACТуннель со стороны Mac
chr-6.49.20уязвимый 6.x192.168.100.1152:54:00:aa:00:11127.0.0.1:2222
chr-6.49.21исправленный 6.x192.168.100.1252:54:00:aa:00:12127.0.0.1:2223
chr-7.23.3уязвимый 7.x192.168.100.1352:54:00:aa:00:13127.0.0.1:2224
chr-7.23.4исправленный 7.x192.168.100.1452:54:00:aa:00:14127.0.0.1:2225
  • Предполагаемое состояние гостя: сетевая карта e1000, статический IP гостя, пароль admin labpass123, ключ жертвы импортирован для admin. Принудительная смена пароля при первом входе выполнялась через SSH (bootstrap_password.py читает диалог) или через монитор QEMU sendkey (mon_type.py) — последовательная консоль CHR мертва по умолчанию; консоль VGA читается только через монитор screendump.
  • Туннель с Mac: ssh -N -L 2222:192.168.100.11:22 -L 2223:192.168.100.12:22 -L 2224:192.168.100.13:22 -L 2225:192.168.100.14:22 [email protected]

Повторный запуск (пример, ВМ3):

qemu-system-x86_64 -enable-kvm -m 512 -smp 2 -name chr-7.23.3 \
  -drive file=/root/mikrotrick-lab/chr-7.23.3.img,format=raw,if=virtio \
  -netdev tap,id=n2,ifname=tap2,script=no,downscript=no \
  -device e1000,netdev=n2,mac=52:54:00:aa:00:13 \
  -display none -monitor unix:/root/mikrotrick-lab/mon3.sock,server,nowait &
./.venv/bin/python import_key.py 127.0.0.1 admin labpass123 victim.pub 2224
./.venv/bin/python sanity_real_key.py 127.0.0.1 2224 victim_rsa admin   # базовый уровень
./.venv/bin/python poc_67276.py --host 127.0.0.1 --port 2224 \
    --username admin --pubkey victim.pub --algos rsa-sha2-256,ssh-rsa \
    --exp-enc aligned --exec '/system resource print' --lab-i-own-this-target

Наблюдаемые результаты (независимая повторная проверка 06.09.2026)

Цельреальный закрытый ключ (базовый уровень)поддельный ключ e=1 (PoC)
7.23.3аутентификация OKаутентификация OK + выполнение /system resource print — CVE подтверждён
7.23.4 (исправленный)аутентификация OKотклонено
6.49.20аутентификация OKотклонено (см. нюанс)
6.49.21 (исправленный)некорректный базовый уровеньне интерпретируемо; гость принял SSH-аутентификацию none

Для пары 7.x базовый уровень с реальным ключом успешен на обеих сборках, SSH-аутентификация none отклоняется, подделка с неверным модулем отклоняется 7.23.3, а подделка с корректным модулем успешна только на 7.23.3. Это корректное сравнение «уязвимый против исправленного».

Гость 6.49.21 не был подготовлен как описано во время независимой повторной проверки: admin остался просроченным, /user ssh-keys print detail был пуст, а SSH-запрос none без учётных данных выполнял команды. Несвязанные реальные RSA-ключи и ключи e=1 с неверным модулем поэтому также выглядели успешными. Переподготовьте этого гостя и убедитесь, что none и несвязанный ключ отклоняются, прежде чем использовать его как исправленный контроль.

Скачать инструмент