Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
mikrotrick-poc — CVE-2026-67276 PoC de laboratorio para la omisión de autenticación de clave pública SSH en RouterOS | Kitploit
Herramientas/GitHubGitHub/dinosn/mikrotrick-poc
Análisis de VulnerabilidadesExplotaciónSeguridad de RedesPruebas de PenetraciónAutenticación
GitHubdinosn/mikrotrick-poc

mikrotrick-poc

CVE-2026-67276 PoC de laboratorio para la omisión de autenticación de clave pública SSH en RouterOS

Ver Repositorio
52hace 12h 30mAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

PoC de laboratorio MikroTrick — CVE-2026-67276 (omisión de autenticación de clave pública SSH en RouterOS)

Solo para uso en laboratorio. Ejecutar exclusivamente contra instancias de RouterOS que sean de tu propiedad. Atacar dispositivos que no te pertenecen es un delito (CFAA, art. 267 del Código Penal polaco, y equivalentes).

Contexto

CERT PL (2026-09-05) reveló seis vulnerabilidades de RouterOS, explotadas activamente en la naturaleza como la cadena "MikroTrick" (toma completa del dispositivo sin autenticación cuando SSH es accesible desde internet). Corregidas por MikroTik el 2026-09-03 en 7.25beta3 / 7.24.2 / 7.23.4 / 6.49.21.

CVETipoDefecto principal
2026-67276CWE-347 (este PoC)La comprobación de coincidencia de clave de userauth SSH verifica (tipo de clave, módulo) pero omite el exponente; la verificación de firma usa la clave proporcionada por el cliente ⇒ falsificación con e=1
2026-86060CWE-88Inyección de argumentos mediante nombre de usuario que comienza con un carácter prohibido (-2 visto en registros de ataques) ⇒ cambio de máscara de política ⇒ escalada de privilegios
2026-67279CWE-841SSH entra en el protocolo de conexión tras un rekey solicitado por el cliente sin userauth completado ⇒ ejecución no autenticada en el espacio de nombres de archivos
2026-67277CWE-306Estado previo a la autenticación de bandwidth-test + divulgación de buffer no inicializado + desbordamiento de tamaño ⇒ fuga de memoria del kernel / reinicio
2026-67278CWE-347X.509 acepta firmas RSA/PKCS#1v1.5 malformadas; ancla de confianza con e=3 ⇒ falsificación de intermediario de confianza
2026-67281CWE-824Puntero principal no inicializado obsoleto en WebFig /jsproxy + escape de ruta ⇒ lectura de archivos como root

Rangos vulnerables (los seis): [7.24, 7.24.2), [7.0.0, 7.23.4), [6.0.0, 6.49.21).

Mecanismo de CVE-2026-67276

  1. RouterOS compara el blob de clave pública SSH presentado con la clave autorizada del usuario por (tipo de clave, módulo) — el exponente no se compara.
  2. La verificación de firma usa la clave proporcionada por el cliente, es decir, el exponente del blob del atacante.
  3. Presentar {ssh-rsa, e=1, n=víctima} hace que sig^1 mod n == sig, por lo que la "firma" válida es simplemente EMSA-PKCS1-v1_5(hash, authdata) — calculable por cualquiera que conozca el módulo público de la víctima. No se necesita clave privada.
  4. Resultado: un canal de comandos SSH como el usuario objetivo.

Precondiciones (el mínimo de la propia divulgación): nombre de usuario objetivo + el módulo RSA público autorizado de ese usuario.

Información mínima necesaria para reproducir

  1. Objetivo: cualquier RouterOS en los rangos vulnerables, con SSH accesible (laboratorio: imagen CHR en QEMU con KVM; hardware real equivalente).
  2. Nombre de usuario de una cuenta con una clave RSA autorizada.
  3. El módulo RSA n de esa clave autorizada (de un .pub filtrado/capturado, registros de aprovisionamiento, o --modulus-hex). Esta es la única entrada cercana a un secreto; la clave privada nunca es necesaria.
  4. Comportamiento del servidor confirmado por la divulgación (el defecto en sí, de CERT PL): coincidencia = (tipo, n), verificación del exponente = proporcionado por el cliente.
  5. Un cliente que pueda presentar un blob de clave arbitrario y bytes de firma arbitrarios (paramiko + hook ForgeKey — OpenSSH estándar no puede).
  6. Algoritmo de firma que el servidor acepta (ssh-rsa en 6.x, rsa-sha2-256 también en 7.x).

Archivos

  • forge_67276.py — primitiva: análisis de clave pública OpenSSH, codificador EMSA RFC 8017, constructores de blob/firma falsificados, verificador de referencia RFC 8017.
  • selftest.py — prueba local, sin router: codificador idéntico byte a byte a OpenSSL (mediante inversión de firma real), la firma falsificada verifica con e=1 y NO con 65537, simulación completa de la forma de cable RFC 4252 §7. Las 15 comprobaciones PASAN.
  • poc_67276.py — cliente paramiko que realiza la omisión (fijación de algoritmo por conexión; se requiere --lab-i-own-this-target).
  • console_setup.py — preparación única de CHR a través de telnet serie de qemu (obtener clave de la víctima mediante 10.0.2.2, importar para admin, habilitar ssh).
  • sanity_real_key.py — control: la autenticación normal de clave pública debe tener éxito primero.
  • victim_rsa / victim.pub — par de claves "víctima" desechable generado de 2048 bits; excluido deliberadamente de Git.

Configuración local

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

Laboratorio (aprovisionado en [email protected])

  • Kali x86_64, QEMU 11.0.1 + KVM, /root/mikrotrick-lab/, puente del host br0 (192.168.100.1/24) con taps tap0-tap3; dnsmasq en br0 con concesiones por MAC.
VMImagenIP del invitadoMACTúnel desde Mac
chr-6.49.206.x vulnerable192.168.100.1152:54:00:aa:00:11127.0.0.1:2222
chr-6.49.216.x parcheado192.168.100.1252:54:00:aa:00:12127.0.0.1:2223
chr-7.23.37.x vulnerable192.168.100.1352:54:00:aa:00:13127.0.0.1:2224
chr-7.23.47.x parcheado192.168.100.1452:54:00:aa:00:14127.0.0.1:2225
  • Estado previsto del invitado: NIC e1000, IP de invitado estática, contraseña de admin labpass123, y clave de la víctima importada para admin. Los cambios forzados de contraseña en el primer inicio de sesión se gestionaron por SSH (bootstrap_password.py lee el diálogo) o mediante sendkey del monitor QEMU (mon_type.py) — la consola serie de CHR está muerta por defecto; la consola VGA solo es legible mediante screendump del monitor.
  • Túnel desde el 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]

Re-ejecución (ejemplo, VM3):

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   # línea base
./.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

Resultados observados (revalidación independiente del 2026-09-06)

Objetivoclave privada real (línea base)clave falsificada e=1 (PoC)
7.23.3auth OKauth OK + ejecución de /system resource print — CVE confirmado
7.23.4 (parcheado)auth OKrechazado
6.49.20auth OKrechazado (ver matiz)
6.49.21 (parcheado)línea base no válidano interpretable; el invitado aceptó autenticación SSH none

Para el par 7.x, la línea base de clave real tiene éxito en ambas versiones, la autenticación SSH none es rechazada, una falsificación con módulo incorrecto es rechazada por 7.23.3, y la falsificación con módulo correcto tiene éxito solo en 7.23.3. Esta es una comparación válida de vulnerable frente a parcheado.

El invitado 6.49.21 no fue aprovisionado como se documenta durante la revalidación independiente: admin permaneció caducado, /user ssh-keys print detail estaba vacío, y una solicitud SSH none sin credenciales ejecutó comandos. Claves RSA reales no relacionadas y claves e=1 con módulo incorrecto también parecieron tener éxito. Reaprovisionar este invitado y verificar que none y una clave no relacionada son rechazados antes de usarlo como control parcheado.

Matiz de versión: en 6.49.20 la coincidencia del lado del servidor rechaza el blob e=1 (/log ssh,debug: can't find matching key for user: admin) — la omisión del exponente divulgada no fue observable en el comparador de 6.x aunque el rango general de CERT lista [6.0.0, 6.49.21). Confirmado vulnerable: 7.23.3. Confirmado parcheado: 7.23.4. El estado actual del laboratorio 6.49.21 no prueba ningún resultado. La actividad en la naturaleza de MikroTrick también apuntó a dispositivos 7.x.

Hallazgo de formato de cable (RFC 8332): la cadena de tipo interna del blob permanece ssh-rsa incluso para algoritmos de firma rsa-sha2-256/512; el algoritmo de firma va solo en el campo de algoritmo externo. Ignorar esto hace que el servidor se desconecte a mitad de userauth (error de análisis del blob) — observado tanto en 6.x como en 7.x. El ForgeKey del PoC maneja esto, y --exp-enc aligned|canonical alterna el ancho del mpint e=1 (1 vs 3 bytes). En 7.23.3 AMBOS anchos autentican — el comparador analiza el exponente y realmente ignora su valor. En 6.49.20 NINGUNO autentica (can't find matching key) — ver el matiz de versión anterior. Los volcados hexadecimales de paquetes del lado del servidor /system logging add topics=ssh,debug + /log print sacaron a la luz todo esto.

Valores SHA-256 del archivo de imagen fuente utilizados por este laboratorio:

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

Notas defensivas (CERT PL)

  • Parchear de inmediato: 7.25beta3 / 7.24.2 / 7.23.4 / 6.49.21.
  • Interino: restringir SSH/WWW/bandwidth-test a redes de gestión de confianza; evitar SSH/TLS iniciado por RouterOS desde dispositivos sin parchear.
  • IOCs: líneas de registro login failure for user -2 via ssh, user <name> added by ssh:-2@<ip>; usuario desconocido con altos privilegios ops; marcador /system/device-mode/print "Flagged" (indica compromiso, su ausencia no prueba nada). IPs de atacantes observadas: 82.192.72.4, 103.102.31.18.

Fuentes

  • Aviso de CERT PL: https://cert.pl/en/posts/2026/09/vulnerabilities-in-mikrotik-routeros-actively-exploited/
  • Página CVE de CERT PL: https://cert.pl/en/posts/2026/09/mikrotik-routeros-cve/
  • Boletín de MikroTik (2026-09-03): https://mikrotik.com/supportsec/september-2026-vulnerability/
  • Mecanismo "Flagged": https://manual.mikrotik.com/docs/system-information-and-utilities/device-mode#flagged-status
Descargar herramienta