查看原文
其他

分布式监控软件Centreon的 SQL注入漏洞分析

启明星辰 ADLab 2022-12-23

更多安全资讯和分析文章请关注启明星辰ADLab微信公众号及官方网站(adlab.venustech.com.cn)











漏洞概述


Centreon是一款开源的分布式IT和应用监控软件,具有丰富的监控功能和超高的灵活性。Centreon底层采用nagios监视系统运行状态和网络信息,nagios通过ndoutil模块将监控数据写入数据库,Centreon读取该数据并即时展现监控信息,同时通过Centreon可以管理和配置所有nagios。因此,使用 Centreon可以轻易搭建企业级分布式IT基础运维监控系统。
启明星辰ADLab研究员在漏洞情报跟踪中发现了Centreon的Web功能存在授权后SQL注入漏洞(编号为CVE-2022-42428),第一时间对该漏洞进行了深入分析和验证。

该漏洞在以下版本已经被修复:centreon-web-21.04.19,  centreon-web-21.10.11, centreon-web-22.04.6。


漏洞分析


该漏洞的关键信息如下[1]:
The specific flaw exists within the handling of requests to modify poller broker configuration. The issue results from the lack of proper validation of a user-supplied string before using it to construct SQL queries. An attacker can leverage this vulnerability to escalate privileges to the level of an administrator.

根据关键信息,定位到开源代码对应diff [2]。

显然,www/class/centreonConfigCentreonBroker.php的第793行存在典型的SQL注入,即$values['name']拼接到sql语句造成注入。

回溯分析可知,centreonConfigCentreonBroker.php的insertConfig方法是在www/include/configCentreonBroker/formCentreonBroker.php中被调用,且数据来源于$_POST表单数据。因此,该注入点是可被攻击的。

DIFF分析显示,该commit存在多处sql注入修复:

对路由分析,得到关键页面main.get.php,其根据传入的p参数值从数据库中查询页面,核心代码如下:

main.get.php:......$inputGet = [ 'p' => filter_input(INPUT_GET, 'p', FILTER_SANITIZE_NUMBER_INT), 'num' => filter_input(INPUT_GET, 'num', FILTER_SANITIZE_NUMBER_INT), 'o' => \HtmlAnalyzer::sanitizeAndRemoveTags($_GET['o'] ?? ''), 'min' => \HtmlAnalyzer::sanitizeAndRemoveTags($_GET['min'] ?? ''), 'type' => \HtmlAnalyzer::sanitizeAndRemoveTags($_GET['type'] ?? ''), 'search' => \HtmlAnalyzer::sanitizeAndRemoveTags($_GET['search'] ?? ''), 'limit' => \HtmlAnalyzer::sanitizeAndRemoveTags($_GET['limit'] ?? '')];............$query = "SELECT topology_parent,topology_name,topology_id,topology_url,topology_page " . " FROM topology WHERE topology_page = '" . $p . "'";$DBRESULT = $pearDB->query($query);
$redirect = $DBRESULT->fetch();

经过调试分析,发现p=60909时调用的文件是:

www/include/configuration/configCentreonBroker/centreon-broker.php

继续跟入centreon-broker.php,核心代码如下:

...... $path = "./include/configuration/configCentreonBroker/";......switch ($o) { case "a": require_once($path . "formCentreonBroker.php"); break; // Add CentreonBroker
case "w": require_once($path . "formCentreonBroker.php"); break; // Watch CentreonBroker default: require_once($path . "listCentreonBroker.php"); break;}
当报文中的o参数对应值为a,包含的是formCentreonBroker.php。根据上文可知,该php会调用centreonConfigCentreonBroker.php的insertConfig方法,从而触发SQL注入。


漏洞复现


  • 测试环境 centreon-web-21.10.1

按照官方文档[3],选择以VM虚拟机方式安装Centreon,安装完成后即可访问,默认账户为admin/centreon:

  • POC测试

根据上述分析可知,漏洞在配置broker poller功能处:

使用时间盲注payload,通过burpsuite抓包延时即可验证漏洞存在:

使用堆叠查询注入,在非管理员下成功修改了默认admin用户的口令:




参考链接:

[1]https://www.zerodayinitiative.com/advisories/ZDI-22-1399/[2]https://github.com/centreon/centreon/commit/323f291431d889b53a50aa90be04ea217a18279b[3]https://docs.centreon.com/docs/21.10/installation/installation-of-a-central-server/using-virtual-machines/






启明星辰积极防御实验室(ADLab)





ADLab成立于1999年,是中国安全行业最早成立的攻防技术研究实验室之一,微软MAPP计划核心成员,“黑雀攻击”概念首推者。截止目前,ADLab已通过CVE累计发布安全漏洞近1100个,通过 CNVD/CNNVD累计发布安全漏洞2000余个,持续保持国际网络安全领域一流水准。实验室研究方向涵盖操作系统与应用系统安全研究、移动智能终端安全研究、物联网智能设备安全研究、Web安全研究、工控系统安全研究、云安全研究。研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。






您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存