CVE-2019-10669LibreNMS 命令注入漏洞
0x1 漏洞复现
这个漏洞的环境也是蛮麻烦的
看到poc发现是集成的msf模块,然后到我的msf里一查,发现已经有了
攻击环境就准备好了
靶机环境:
本来想下软件装,装了好几次不成功
参考:https://cloud.tencent.com/developer/article/1518046
先下一个librenms的ubuntu版直接虚拟机跑
然后根据参考改一下网卡的配置,在主机上访问对应的ip地址和端口就能访问web界面了
此时在kali里跑msf,始终打不成功,看报错是没找到对应的collectd插件
需要在ubuntu换源更新下载安装一条龙
装好了之后根据官方配置(太简略,并不能成功(https://docs.librenms.org/Support/Configuration/#collectd
最后找到github上一个配置才成功,此时页面上出现了collectd插件
也能打成功了
0x2 漏洞原理
漏洞点:html/includes/graphs/device/collectd.inc.php
其中用户提供的参数from和to是用mysqli_escape_real_string函数(mres)过滤的,但是这个函数不能转义多个命令行语法字符,我们就可以注入命令到变量$rrd_cmd中,通过passthru()执行
passthru — 执行外部程序并且显示原始输出
passthru ( string $command [, int &$return_var ] ) : void
escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数,escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,并且还是确保安全的。