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

Репозиторий
86273720 дней назадЕщё не проверено

Популярное

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

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

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

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

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

Лабораторный 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.

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

root@kitploit:~
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):

root@kitploit:~
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 &
root@kitploit:~
./.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 и несвязанный ключ отклоняются, прежде чем использовать его как исправленный контроль.

Нюанс версии: на 6.49.20 серверное сопоставление отклоняет блоб e=1 (/log ssh,debug: can't find matching key for user: admin) — раскрытое опущение экспоненты не наблюдалось в сопоставителе 6.x, хотя общий диапазон CERT перечисляет [6.0.0, 6.49.21). Подтверждённо уязвим: 7.23.3. Подтверждённо исправлен: 7.23.4. Текущее состояние лаборатории 6.49.21 не доказывает ни один результат. Активность MikroTrick в дикой природе также была нацелена на устройства 7.x.

Находка о wire-формате (RFC 8332): внутренняя строка типа в блобе остаётся ssh-rsa даже для алгоритмов подписи rsa-sha2-256/512; алгоритм подписи идёт только во внешнем поле алгоритма. Игнорирование этого заставляет сервер разрывать соединение в середине userauth (ошибка разбора блоба) — наблюдалось и на 6.x, и на 7.x. ForgeKey в PoC обрабатывает это, а --exp-enc aligned|canonical переключает ширину mpint для e=1 (1 против 3 байт). На 7.23.3 аутентифицируются ОБЕ ширины — сопоставитель разбирает экспоненту и действительно игнорирует её значение. На 6.49.20 НИ ОДНА не аутентифицируется (can't find matching key) — см. нюанс версии выше. Серверные /system logging add topics=ssh,debug + /log print hex-дампы пакетов выявили всё это.

Контрольные суммы SHA-256 архивов исходных образов, используемых в этой лаборатории:

root@kitploit:~
a954ab0002a83de5e4c02110f560d0bf622e7d21916088aaacda6baaba88cf4a  chr-6.49.20.img.zip
6dcfb8674fa7964bf92ce849fbb0ba8147a5cf3d7a1ba595e24ce3e615569188  chr-6.49.21.img.zip
646764fb0a53e9b5a056cb9cf7420eb1629031096c7268c99fb9216c07f8e98c  chr-7.23.3.img.zip
0d32a8da0950dee71e751281c39063f2bebee4b542291aedecc9dbfbe5d60c9d  chr-7.23.4.img.zip

Защитные рекомендации (CERT PL)

  • Немедленно установите патч: 7.25beta3 / 7.24.2 / 7.23.4 / 6.49.21.
  • Временно: ограничьте SSH/WWW/bandwidth-test доверенными управляющими сетями; избегайте SSH/TLS, инициируемых RouterOS, с непропатченных устройств.
  • IOC: строки журнала login failure for user -2 via ssh, user <name> added by ssh:-2@<ip>; неизвестный высокопривилегированный пользователь ops; маркер /system/device-mode/print «Flagged» (указывает на компрометацию, его отсутствие ничего не доказывает). Наблюдаемые IP атакующих: 82.192.72.4, 103.102.31.18.

Источники

  • Бюллетень CERT PL: https://cert.pl/en/posts/2026/09/vulnerabilities-in-mikrotik-routeros-actively-exploited/
  • Страница CVE CERT PL: https://cert.pl/en/posts/2026/09/mikrotik-routeros-cve/
  • Бюллетень MikroTik (03.09.2026): https://mikrotik.com/supportsec/september-2026-vulnerability/
  • Механизм «Flagged»: https://manual.mikrotik.com/docs/system-information-and-utilities/device-mode#flagged-status
Скачать инструмент