欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

深入分析MikroTik RouterOS CVE-2018-14847 & Get bash shell

来源: 作者: 时间:2019-02-24 21:17 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

0×01. 前言
MikroTik路由器在4月份被发现存在目录遍历漏洞CVE-2018-14847,危险程度为中。Tenable Research的专家于10月7日在DerbyCon上发表了题为“Bug Hunting inRouterOS”的演讲,介绍了这项新技术,就是利用该漏洞。目前结合该漏洞的黑客工具已放出,运行RouterOS的MikroTik设备成为恶意代码的目标。
本文从MikroTik RouterOS与客户端的通信协议入手,辅以逆向分析,深入解读了CVE-2018-14847以及内置开发者后门的漏洞原理,最后进行完整的组合拳进阶利用,达到Get bash shell的目的。整体流程图如下:

0×02. 通信协议分析
MikroTik RouterOS是一款基于Linux核心开发,兼容Arm,mips,x86 PC等多种架构网络设备操作系统。通过安装该操作系统可以将标准的PC电脑变成专业路由器,也就是平时常说的软路由。同时,RouterOS提供了丰富的管理配置接口:1)winbox:GUI软件管理; 2)cli:命令配置;3)webfig :网页图形化管理。而Winbox for MikroTikRouterOS是一个用于管理MikroTik RouterOS系统的 GUI客户端应用程序。
RouterOS官方提供了相应的ISO系统镜像包,所以可以像安装正常操作系统一样安装RouterOS,直接在vm中安装一个虚拟机。

通过CliTelnet的方式对RouterOS进行配置,但是要知道以下两点:
•这不是一个osbash shell,不能访问到底层的linux的操作系统
•只能利用内置的一些命令集对RouterOS进行配置和管理
从下图的nmap扫描结果可以看可以看到RouterOS专门提供了8291端口跟winbox通信。

漏洞原理是怎么的呢?要理解漏洞的原理,首先得需要理解Routeros与winbox的通信过程,本文先从webfig和Routeros的通信过程入手。
2.1 通信协议识别
访问webfig,首先请求的一个js文件,下载来美化后看看代码:

代码很多,17000行左右。大致浏览了一下,可以看到webfig与RouterOS之间所有的通信消息都是由这个js文件产生和处理。 初始化相关代码:

登录、认证相关功能,相关的POST数据包都发送到RouterOS的jsproxy处理, 这里的jsproxy就相当于jsp中servlet一样。

但当查看这些数据包的时候,发现POST是加密的,同样返回的数据也是。

而其中的加密算法在js文件中可以找到:

其中的产生56位key的算法采用的是RFC 3079 MS-CHAP-2 。

这是一个很老的PPP协议(存在离线碰撞破解漏洞)

从js代码和数据包可以看到采用的身份认证方式是:提问/应答(Challenge/Response)方式。

2.2 认证过程梳理
至此,笔者来完整地梳理一下整个认证的流程:

客户端首先发送一个空的POST请求给服务器。

[1] [2] [3] [4]  下一页

0×01. 前言
MikroTik路由器在4月份被发现存在目录遍历漏洞CVE-2018-14847,危险程度为中。Tenable Research的专家于10月7日在DerbyCon上发表了题为“Bug Hunting inRouterOS”的演讲,介绍了这项新技术,就是利用该漏洞。目前结合该漏洞的黑客工具已放出,运行RouterOS的MikroTik设备成为恶意代码的目标。
本文从MikroTik RouterOS与客户端的通信协议入手,辅以逆向分析,深入解读了CVE-2018-14847以及内置开发者后门的漏洞原理,最后进行完整的组合拳进阶利用,达到Get bash shell的目的。整体流程图如下:

0×02. 通信协议分析
MikroTik RouterOS是一款基于Linux核心开发,兼容Arm,mips,x86 PC等多种架构网络设备操作系统。通过安装该操作系统可以将标准的PC电脑变成专业路由器,也就是平时常说的软路由。同时,RouterOS提供了丰富的管理配置接口:1)winbox:GUI软件管理; 2)cli:命令配置;3)webfig :网页图形化管理。而Winbox for MikroTikRouterOS是一个用于管理MikroTik RouterOS系统的 GUI客户端应用程序。 内容来自无奈安全网
RouterOS官方提供了相应的ISO系统镜像包,所以可以像安装正常操作系统一样安装RouterOS,直接在vm中安装一个虚拟机。

通过CliTelnet的方式对RouterOS进行配置,但是要知道以下两点:
•这不是一个osbash shell,不能访问到底层的linux的操作系统
•只能利用内置的一些命令集对RouterOS进行配置和管理
从下图的nmap扫描结果可以看可以看到RouterOS专门提供了8291端口跟winbox通信。

漏洞原理是怎么的呢?要理解漏洞的原理,首先得需要理解Routeros与winbox的通信过程,本文先从webfig和Routeros的通信过程入手。 内容来自无奈安全网
2.1 通信协议识别
访问webfig,首先请求的一个js文件,下载来美化后看看代码:

代码很多,17000行左右。大致浏览了一下,可以看到webfig与RouterOS之间所有的通信消息都是由这个js文件产生和处理。 初始化相关代码:

登录、认证相关功能,相关的POST数据包都发送到RouterOS的jsproxy处理, 这里的jsproxy就相当于jsp中servlet一样。

但当查看这些数据包的时候,发现POST是加密的,同样返回的数据也是。
www.wnhack.com
而其中的加密算法在js文件中可以找到:

其中的产生56位key的算法采用的是RFC 3079 MS-CHAP-2 。

这是一个很老的PPP协议(存在离线碰撞破解漏洞)

从js代码和数据包可以看到采用的身份认证方式是:提问/应答(Challenge/Response)方式。

2.2 认证过程梳理
至此,笔者来完整地梳理一下整个认证的流程: 本文来自无奈人生安全网

客户端首先发送一个空的POST请求给服务器。

内容来自无奈安全网

[1] [2] [3] [4]  下一页

本文来自无奈人生安全网

。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。