分布式监控软件Centreon的 SQL注入漏洞分析
更多安全资讯和分析文章请关注启明星辰ADLab微信公众号及官方网站(adlab.venustech.com.cn)
漏洞概述
该漏洞在以下版本已经被修复:centreon-web-21.04.19, centreon-web-21.10.11, centreon-web-22.04.6。
漏洞分析
根据关键信息,定位到开源代码对应diff [2]。
回溯分析可知,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时调用的文件是:
继续跟入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;
}
漏洞复现
测试环境 :centreon-web-21.10.1
按照官方文档[3],选择以VM虚拟机方式安装Centreon,安装完成后即可访问,默认账户为admin/centreon:
POC测试
根据上述分析可知,漏洞在配置broker poller功能处:
使用时间盲注payload,通过burpsuite抓包延时即可验证漏洞存在:
使用堆叠查询注入,在非管理员下成功修改了默认admin用户的口令:
参考链接:
启明星辰积极防御实验室(ADLab)
ADLab成立于1999年,是中国安全行业最早成立的攻防技术研究实验室之一,微软MAPP计划核心成员,“黑雀攻击”概念首推者。截止目前,ADLab已通过CVE累计发布安全漏洞近1100个,通过 CNVD/CNNVD累计发布安全漏洞2000余个,持续保持国际网络安全领域一流水准。实验室研究方向涵盖操作系统与应用系统安全研究、移动智能终端安全研究、物联网智能设备安全研究、Web安全研究、工控系统安全研究、云安全研究。研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。