Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2018-14847 — 针对 CVE-2018-14847 的分析与 PoC,MikroTik RouterOS Winbox 信息泄露漏洞,允许未经身份验证地读取凭据数据库。 | Kitploit
工具/GitHubGitHub/themalwareguardian/cve-2018-14847
嵌入式系统安全密码破解物联网安全漏洞分析漏洞利用信息收集
GitHubthemalwareguardian/cve-2018-14847

CVE-2018-14847

针对 CVE-2018-14847 的分析与 PoC,MikroTik RouterOS Winbox 信息泄露漏洞,允许未经身份验证地读取凭据数据库。

查看仓库
54个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

🐞 MikroTik CVE-2018-14847

MikroTik Winbox 协议中的未认证路径遍历漏洞,可泄露 /flash/rw/store/user.dat 中的管理员凭据




📑 目录

  • 概述
  • 受影响版本
  • 漏洞详情
    📂
    • Winbox 协议
    • 路径遍历
    • 密码解密
    • 开发者后门
  • 漏洞利用
  • 参考资料



📋 概述

CVE-2018-14847 是 MikroTik RouterOS 中的一个路径遍历漏洞,影响 Winbox 管理协议(TCP 端口 8291)。未认证的远程攻击者可以读取路由器文件系统中的任意文件,包括用户凭据数据库 /flash/rw/store/user.dat,该数据库使用弱静态 XOR 密钥存储加密密码。

该漏洞最初由 Jacob Baines(Tenable)于 2018 年 7 月通过 By the Way 利用工具公开披露。本仓库包含一个独立的 Python3 重写实现,并附有完整的协议文档。




🎯 受影响版本

下载工具
渠道版本
长期版 (Longterm)6.30.1 - 6.40.7
稳定版 (Stable)6.29 - 6.42
测试版 (Beta)6.29rc1 - 6.43rc3

MikroTik 已于 2018 年 4 月修复此漏洞。运行 RouterOS 版本低于已修复版本的设备仍然存在漏洞。




🔬 漏洞详情

🧠 Winbox 协议

Winbox 是 MikroTik 专有的二进制管理协议,运行在 TCP 端口 8291 上。帧结构如下:

root@kitploit:~
[total_len - 2][0x01][0x00][total_len - 4]["M2"][fields...]

4 字节头部编码了帧的总长度。它不是标准的小端 u16——每个字节独立编码 total_length - 2 和 total_length - 4。

每个帧内部的字段编码:

类型字节含义值
0xff扩展字段标记后跟 field_id 和 value
0x09u8 整数1 字节
0x21字符串1 字节长度前缀 + 数据
0x88需要回复标记无值
0xfe扩展字段 id3 字节 id + 类型 + 值

文件系统处理程序位于端点(sys=5, handler=0),并暴露了三个相关命令:

  • 0x06 - 打开文件
  • 0x04 - 读取文件
  • 0x01 - 创建文件

🧨 路径遍历

Winbox 文件系统处理程序未对传递给打开文件命令的路径进行过滤。通过嵌入 '/////./../' 序列,攻击者可以逃逸沙箱边界并访问根文件系统:

root@kitploit:~
/////./..//////./..//////./../flash/rw/store/user.dat

每个 '/////./../' 段(10 字节)向上跳转一级目录。三个段即可到达根目录,之后 flash/rw/store/user.dat 就是 RouterOS 用户凭据数据库。该请求无需认证。

该利用工具发送两个帧:

  1. 打开请求:使用遍历路径的打开文件命令
    • 响应字节 [38] → session_id
  2. 读取请求:将 session_id 修补进读取文件命令
    • 从响应字节 [55] 开始 → 原始 user.dat 内容

🔐 密码解密

user.dat 是一系列 nv::message 记录。每条记录前面有一个 2 字节小端长度字段,并以魔术字节 M2 开头。每条记录内的字段使用 3 字节小端字段 id:

字段 id类型含义
0x01string用户名
0x02u8组 - 3 = 完整管理员权限
0x11string加密密码(未设置则为空)

密码使用从 RouterOS 中编译的硬编码盐派生的静态 XOR 密钥进行加密:

root@kitploit:~
key      = MD5(username + "283i4jfkai3389")
password = XOR(encrypted_pass[i], key[i % len(key)])  直至遇到空字节

这意味着从任何受影响设备提取的任何 user.dat 都可以离线解密,无需暴力破解。


🧬 开发者后门

在获得管理员密码后,攻击者可以通过 Winbox 进行认证,并使用创建文件命令写入两个文件,以激活隐藏的开发者登录:

root@kitploit:~
/pckg/option                       激活 option 软件包
/flash/nova/etc/devel-login        启用 devel 用户

一旦这些文件存在,路由器就会通过 Telnet 和 SSH 以 devel 用户身份暴露一个 BusyBox root shell,使用管理员的密码。

在某些 RouterOS 版本上,必须先连接 Telnet,SSH 才能正常工作。




⚙️ 漏洞利用

Exploit_CVE_2018_14847.py 是一个自包含的 Python3 利用脚本,零外部依赖。它从零实现了 Winbox 二进制协议,并执行:

  1. 未认证的路径遍历以提取 user.dat。
  2. nv::message 记录的二进制解析。
  3. MD5-XOR 密码解密。
root@kitploit:~
# 默认端口 8291
python3 Exploit_CVE_2018_14847.py 192.168.1.10

# 自定义端口
python3 Exploit_CVE_2018_14847.py 192.168.1.10 8291

后渗透利用——开发者后门 shell:

root@kitploit:~
# Telnet(必须先连接)
telnet -l devel 192.168.1.10

# SSH(在 Telnet 会话之后)
ssh -oHostKeyAlgorithms=+ssh-dss [email protected]



📚 参考资料

  • MikroTik 安全公告

    • MikroTik 官方的补丁公告和时间线。
  • Tenable - By the Way PoC

    • Jacob Baines 编写的原始 C++ 利用工具。
  • NVD - CVE-2018-14847

    • CVSS 9.1(严重)。