文章总结: D-LinkDIR-825M路由器固件v1.1.8的formDiskFormat接口存在CVE-2026-82592漏洞,CVSS评分9.9。该接口对partition参数缺乏校验,导致132字节栈缓冲区溢出和命令注入,攻击者可远程以root权限执行任意命令或致服务崩溃。PoC已公开,厂商未发布补丁。建议用户关注官方固件更新,避免管理端口暴露公网,并排查共享固件代码库的其他型号。 综合评分: 95 文章分类: 漏洞分析,漏洞预警,应急响应
【漏洞分析】132 字节栈溢出如何拿下 Root:D-Link 路由器 CVE-2026-82592 POST 请求到 RCE 全链拆解
原创
Hack说 Hack说
Hack说
2026年9月1日 20:29 天津
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
Hack说|全球安全资讯 · 深度解读
导读:D-Link DIR-825M 固件 v1.1.8 的磁盘格式化接口被曝 CVSS 9.9 高危漏洞。Web 管理端的
formDiskFormat接口对用户可控的partition参数不做任何校验——先用sprintf拼进一个仅 132 字节的栈缓冲(超长即覆盖返回地址),再原样交给system()执行(shell 元字符直接命令注入)。攻击者远程发一个 POST,就能以 root 权限执行任意命令,或把 Web 服务直接打崩。PoC 已公开。
一、事件速览
| 项目 | 内容 |
| — | — |
| 漏洞编号 | CVE-2026-82592 |
| 漏洞名称 | D-Link DIR-825M Disk Formatting Handler(formDiskFormat)栈缓冲区溢出 |
| 类型 | 栈缓冲区溢出(CWE-121)+ 命令注入(CWE-78)→ 远程代码执行(RCE) |
| CVSS 评分 | CVSS 3.1:9.9(Critical);CVSS 4.0:8.6(High) |
| 受影响产品 | D-Link DIR-825M 固件 v1.1.8(共享同一固件代码库的其他型号需一并排查) |
| 受影响组件 | Web 管理端磁盘格式化接口 POST /boafrm/formDiskFormat(BOA Web 框架) |
| 脆弱函数 | sub_46725C ,用户可控参数 partition |
| 利用前置 | 能访问设备 Web 管理端口(默认 80/443) |
| 利用结果 | 以 root 权限执行任意命令 / 使 Web 服务崩溃(DoS) |
| PoC 状态 | 已公开(崩溃触发载荷;复现环境 FirmaE 仿真 + Burp Repeater) |
| 修复状态 | 披露时厂商未给出补丁细节,暂无官方修复版本说明 |
一句话:同一个 partition 参数,既能让 sprintf 写穿 132 字节的栈(覆盖 MIPS 的 $ra),又能让 system() 把 shell 元字符原样执行——栈溢出与命令注入双重叠加,一个接口两种玩法,落地都是 root。
时间线
| 时间 | 事件 | | — | — | | 2026-08-30 | NVD 收录 CVE-2026-82592(公开 PoC 报告同步公开) | | 披露时 | 厂商未公布补丁细节,暂无官方修复版本说明 |
⚠️ 说明:截至本文撰写时,该漏洞补丁未到、PoC 已公开,处于典型的”无补可打”窗口期;请以 D-Link 官方固件更新为准。
二、漏洞核心:同一个参数,两条致命路径
2.1 受害函数:sub_46725C
漏洞出在处理分区格式化的 sub_46725C 函数。它从 HTTP POST 请求里取出用户可控的 partition 参数,不做任何过滤、校验和长度检查:
v2 = (const char *)sub_41351C(a1, ”partition”, ””);
拿到参数后,函数立刻干了两件危险的事——sprintf 拼命令、system 执行。
2.2 路径一:栈溢出(CWE-121)——sprintf 无边界检查
本地栈缓冲 v9 只有 132 字节,但 sprintf 完全不做边界检查:
char v9[132];sprintf(v9, ”mkdir -p /var/tmp/usb/%s >/dev/null 2>&1”, v2);
当 partition 超过约90 字节时,写入就会越过 v9 的边界,覆盖栈帧里保存的帧指针与返回地址(在 MIPS/ARM 上就是 $ra)——控制流直接被劫持。
2.3 路径二:命令注入(CWE-78)——system() 直接执行
更致命的是,拼好的命令会被原样交给 system():
sprintf(v9, ”umount /dev/%s >/dev/null 2>&1”, v2);system(v9);
partition 里的 ;、&、| 等 shell 元字符原样进入了命令行。传入 sda1;+sleep+5;,实际执行的就是:
umount /dev/sda1; sleep 5; >/dev/null 2>&1
命令注入当场成立。也就是说,同一个漏洞存在两条利用路径:堆栈打返回地址走 ROP,或者干脆用元字符直接跑命令——后者难度低得多。
2.4 为什么”裸 MIPS”进一步降低了利用门槛
公开分析指出,该固件是裸 MIPS 环境:无 ASLR、无栈 canary。这意味着:
- 栈溢出的偏移一旦算准,
$ra覆盖后的目标地址是固定的,不需要对抗地址随机化; - 不存在 canary 校验,
sprintf覆盖到返回地址即可直接用 ROP 链调用system("/bin/sh"); - 相对 x86 上的同类漏洞,这里连”泄漏地址”这一步都省了——利用工程难度显著低于普通路由器漏洞。
以 MIPS 栈帧为例,v9 溢出后的内存布局大致是:
| 栈偏移(相对 v9) | 内容 | 被覆盖后果 |
| — | — | — |
| +0x00 | v9[132] (命令字符串) | 正常缓冲区 |
| +0x84 (约 132 字节处) | 保存的帧指针($fp) | 控制流辅助破坏 |
| +0x88 (约 136 字节处) | 保存的返回地址($ra) | 劫持点:partition 超 ~90 字节即到达此处 |
这也是为什么报告给出”约 90 字节”这个阈值:sprintf 前缀 mkdir -p /var/tmp/usb/ 等固定串约占 40 字节,再扣除 NUL 结尾,用户输入超过约 90 字节就足以把 $ra 覆盖到受控值。
2.5 背景:BOA 框架与 /boafrm/ 接口体系
/boafrm/formDiskFormat 是 BOA Web 服务器框架暴露的 CGI 式处理接口。BOA 是嵌入式设备最常见的轻量 Web 服务器之一,它的典型处理模式是:把每个 form 请求的字段直接交给对应的 C 处理函数——而这里的 sub_46725C 就是磁盘格式化 form 的后端处理器。这类接口的参数几乎全部来自用户可控的 POST 字段,一旦处理器缺少校验,整条 /boafrm/* 链路都会成为攻击面。
三、可达性:谁最容易被打
3.1 触发前置
| 前置 | 说明 |
| — | — |
| Web 管理端口可达 | 设备 80/443 管理页面可访问(局域网或暴露到公网) |
| 接口存在 | /boafrm/formDiskFormat 存在(返回 200/302 而非 404) |
| 版本匹配 | 固件为 v1.1.8(或共享同一代码库的其他型号) |
3.2 典型攻击场景
- 公网暴露面:家用/SOHO 路由器的 80/443 管理端口如果被运营商 NAT 或用户自行映射到公网,就是直接可打的远程目标;
- 内网横向:攻击者进入内网后,DIR-825M 这类设备是绝佳跳板——拿到 root 后可作为流量中转、内网横向的落脚点;
- 钓鱼/CSRF:由于是纯 POST 且无 CSRF 防护依赖,诱导管理员在已登录状态下访问恶意页面,即可借管理员的浏览器把请求打到管理端口——设备管理面板不直接对公网开放时,这条路依然成立。
3.3 接口存在性检测(零副作用)
- “` curl -s -o /dev/null -w ”%{http_code}” http://<路由器IP>/boafrm/formDiskFormat
返回 200 或 302(而非 404)说明接口存在;
* 再核对固件版本是否为 v1.1.8;
* 公网暴露面扫描时,重点看 80/443 端口的管理页面是否为 D-Link DIR-825M。
### 3.4 红队视角:为什么"路由器 root"值得打
这个漏洞对红队/攻击者的价值可以浓缩为两个字:root。
* 实战定位:家用/SOHO 路由器打点后是绝佳的持久化跳板——流量中转、内网横向的落脚点;DIR-825M 这类设备固件老旧、用户从不升级,公网存量很大;
* 利用门槛低:命令注入路径连溢出知识都不需要,一个 Burp 就能打;
* 关键前置:能碰到管理端口即可——所以钓鱼场景(诱导管理员访问恶意页面打 CSRF)或已进内网后的横向场景里非常好用;
* 难被发现:设备没有安全日志与监控,被打上后门后几乎不会引起用户注意。
---
## 四、攻击链拆解:两种打法
### 4.1 打法一:命令注入(简单)
在 partition 参数里填 shell 元字符载荷即可:
partition=sda1;+telnetd;
system() 会以root权限执行,直接拉起 telnetd 等后门服务。这条路径连溢出都不需要碰,成功率取决于接口是否可达,一个 Burp 就能打。
以 partition=sda1;+id;+echo+owned; 为例,system() 实际拼出的命令是:
umount /dev/sda1; id; echo owned; >/dev/null 2>&1
* `umount /dev/sda1`
是"正常"的前半段(失败也无妨,`;` 不中断后续);
* `id; echo owned`
是攻击者注入的任意命令;
* 末尾的 `>/dev/null 2>&1` 是原模板的尾部,恰好帮攻击者吞掉了输出噪音。
攻击者唯一要处理的是把结果读回来——常见做法是注入的命令把输出写到一个可访问的文件(如 /tmp 下由 Web 服务可读的位置),再通过管理页面或另一个请求读回。
### 4.2 打法二:栈溢出(进阶)
按 MIPS 架构计算偏移,发送超长 partition 覆盖 $ra,随后接 ROP 链调用 system("/bin/sh")。由于固件无 ASLR、无栈 canary,利用难度反而比常规平台更低。
### 4.3 公开 PoC 请求(崩溃触发载荷)
公开 PoC 走栈溢出路径:发一个超长 partition,栈被写坏,Web 服务守护进程直接段错误崩溃。复现请求关键部分如下(Burp Repeater 中可直接发送):
* ```
POST /boafrm/formDiskFormat HTTP/1.1Host: 192.168.0.1Content-Length: 655Content-Type: application/x-www-form-urlencodedCookie: webuicookie=16041526311804289383 partition=sda1aaaa...(超长填充)&systype=ext2&Apply+Changes=Apply+Changes&submit_url=%2Fdiskinfo.htm
复现环境:FirmaE 固件仿真起虚拟设备 + Burp Repeater 发包;
- 结果:填充足够长后 Web 服务进程崩溃,管理面板彻底打不开(DoS);
- 公开的是崩溃触发载荷,未包含完整 EXP——
system()命令注入与 ROP 链需要自行完成。
4.4 两种打法的技术对比
| 维度 | 命令注入路径 | 栈溢出路径 |
| — | — | — |
| 复杂度 | 低(会拼 shell 即可) | 中(MIPS 偏移计算 + ROP 构造) |
| 前置 | 接口可达 + 元字符不被过滤 | 接口可达 + 偏移计算 |
| 可靠性 | 高(system() 直接执行) | 中(依赖栈布局稳定) |
| 典型载荷 | partition=sda1;+telnetd; | 超长填充 + ROP 链 → system("/bin/sh") |
| 通用性 | 命令被执行的接口都能打 | 仅对固定固件版本有效 |
红队视角下,这两条路径互为补充:先试命令注入(成本几乎为零),不行再退栈溢出——无论哪条,终点都是 root。
4.5 复现环境搭建(FirmaE)
公开 PoC 的复现走的是”固件仿真”路线,不需要真实设备:
# 1. 使用 FirmaE(Firmware Analysis and Emulation)解包并仿真 D-Link 固件python3 firmAE.py -r# 2. 启动后,在宿主机用 Burp Repeater 或 curl 直接访问仿真出来的 Web 服务# (默认 192.168.0.1 的 80/443 端口)curl -s -o /dev/null -w ”%{http_code}\n” http://<仿真IP>/boafrm/formDiskFormat# 3. 发送超长 partition 触发崩溃,观察仿真环境中 Web 服务进程是否段错误退出
仿真环境的优势是可销毁、可反复试错:即使打崩 Web 服务,重启仿真进程即可恢复,非常适合验证栈偏移与 DoS 行为。
五、影响与同类问题
5.1 影响规模
- 设备定位:DIR-825M 是典型的家用/SOHO 路由器,固件老旧、用户从不升级,公网存量很大;
- 利用结果:root 权限——设备上最高权限,可持久化后门、流量中转、内网横向;
- CVSS 9.9 的依据:远程可触发(
AV:N)+ 无权限前置(PR:N)+ 高影响(CIA 全击穿); - 防护面:Web 管理面板一旦暴露,这台设备基本等于”裸奔”。
5.2 系统性隐患:BOA Web 框架的参数处理问题
公开分析特别指出一个值得警惕的信号:DIR-825M 今年已连续爆出多个/boafrm/前缀接口的溢出(如 formWanConfigSetup、formLtefotaUpgradeFibocom 等)。这说明:
- 问题不是单个接口写错,而是整个 BOA Web 框架的参数处理方式存在系统性问题;
- 同一固件里大概率还有没被公开的同型漏洞,值得继续挖掘;
- 共享同一固件代码库的其他 D-Link 型号,即便不是 DIR-825M,也可能同样中招——排查时不能只看这一台。
5.3 攻击者的”投入产出”视角
- 存量:DIR-825M 这类设备上市多年、出货量大、公网暴露面广——即使单台价值低,”数量 x 可自动化”的红利也很可观;
- 持久化:root 权限意味着可写入非易失存储、修改启动脚本,后门可跨重启存活;
- 跳板价值:路由器是内网流量咽喉,配合 DNS 劫持、流量嗅探,可长期静默存在;
- 防检测:设备本身几乎没有安全日志与监控,被植入后门后很难被用户发现——这也正是这类设备成为攻击者”沉默资产”的原因。
六、修复、缓解与善后
6.1 修复建议
- 关注 D-Link 官方固件更新,有新版本立即升级(披露时暂无官方修复版本说明);
- 缓解措施:关闭 WAN 侧远程管理,管理界面仅限内网访问;
- 不需要磁盘格式化功能的用户,避免使用该功能入口。
6.2 防护侧(更彻底的做法)
- 把 BOA 服务从 WAN 侧完全屏蔽,比单纯打补丁更彻底——即使存在未公开的同型漏洞,也不具备远程入口;
- 内网资产盘点时,把 DIR-825M(及共享固件代码库的型号)列入高危清单,纳入重点盯防;
- 定期检查管理端口是否被意外映射到公网。
6.3 排查是否被利用
- 设备上是否有异常进程(如
telnetd、/bin/sh派生进程); - 管理页面是否有异常的历史登录来源;
- 流量侧是否出现针对
/boafrm/formDiskFormat的异常请求(超长partition、含;``&``|的载荷)。
6.4 应急检查清单
- 确认暴露面:设备管理端口是否被映射到公网;
/boafrm/formDiskFormat是否返回 200/302; - 核对版本:固件是否为 v1.1.8;同系列共享代码库的型号一并排查;
- 收敛入口:立即关闭 WAN 侧远程管理,管理界面限内网;对无法确认安全的设备,直接断开公网映射;
- 取证留痕:导出设备配置、记录异常进程与登录日志,作为后续溯源依据;
- 跟踪补丁:关注 D-Link 官方固件更新,发布后尽快升级并验证修复。
七、技术点评(个人分析)
1.sprintf+system()的组合,是嵌入式固件的”祖传手艺”
这两个函数加起来,等于”把不可信输入拼进命令再执行”的标准模板——sprintf 不检查长度,system 不隔离 shell 语义。对 2020 年代的路由器固件还出现这种组合,说明大量嵌入式固件仍然停留在”能用就行”的工程水准:编译期没有强制安全检查,代码评审没有覆盖到 Web 参数到系统命令的整条链路。这也是为什么路由器漏洞总是一波接一波。
- 栈溢出与命令注入”二合一”,让利用面陡增
通常一个漏洞只有一种主要利用方式,而这里两种打法并存:命令注入路径零门槛(会拼 shell 即可),栈溢出路径则是”进阶玩法”。对防守方这意味着:你既要防”用户输入被拼进命令”,又要防”用户输入被拼进内存”——两条不同的防线,缺一条都不行。而对攻击者,复杂度最低的那条路(命令注入)往往才是实际被采用的路。
- “裸 MIPS”三无环境,是把利用难度直接写进固件
无 ASLR、无栈 canary、无系统调用过滤,意味着栈溢出利用不需要泄漏、不需要爆破地址、不需要绕过防护——固件的安全防护水平,直接决定了漏洞的利用成本。这也是物联网设备漏洞”泛滥但难治理”的根源:不是洞有多深,而是壳有多薄。对采购方,厂商是否在固件里启用现代内存防护,应当成为选型的安全指标之一。
- 家用路由器是攻击链里的”沉默跳板”
路由器的价值从来不在设备本身,而在它所在的网络位置:它是局域网流量的咽喉,是攻击者进入内网后的理想落点。拿到 root 后,可以做流量嗅探、DNS 劫持、内网横向的跳板——而用户往往毫无感知。这类”固件老旧、从不升级、存量巨大”的设备,本质上就是攻击者的公共资源池。
- “接口级系统性问题”比单个 CVE 更值得警惕
formWanConfigSetup、formLtefotaUpgradeFibocom、formDiskFormat……同一个 /boafrm/ 前缀反复中招,说明这是框架层面的结构性缺陷,而不是某个函数的一次性疏忽。对研究者和防守方都是同一个信号:这个固件/框架的攻击面还没被充分挖掘,且挖出来的洞大概率不止这几个。防御时,与其逐洞补丁,不如从”屏蔽整类接口入口”的层面做收敛。
- 给国内用户的落地建议
其一,家用/SOHO 路由器默认关闭 WAN 侧远程管理,管理面板只允许内网访问;其二,关注官方固件更新并尽快升级(同时留意同系列其他型号);其三,资产台账里把 D-Link 系设备标记为高危,定期检查管理端口暴露情况;其四,办公网络里这类设备建议单独划 VLAN 并与核心业务隔离,避免被打点后横向扩散。
- PoC 公开但无官方补丁:这恰恰是最危险的”窗口期”
与”厂商先发补丁、研究后披露”的常规流程不同,本漏洞披露时厂商尚无修复版本——PoC 已公开,补丁未到,这意味着当前正处于”漏洞可打、无补可打”的裸窗口。对这类情况,唯一能做的就是用网络层面控制补足软件层面缺失:关 WAN 远程管理、屏蔽 BOA 端口、隔离设备网段。记住一个原则:当补丁迟到时,收敛暴露面就是唯一有效的”补丁”。
附录:完整 PoC 获取方式
本文为完整技术分析。完整 PoC 材料(上游公开的 formDiskFormat 复现报告,含完整触发请求、FirmaE 复现环境截图与说明)不随文粘贴。该报告由研究员Robots10在 FirmaE 仿真环境 + Burp Repeater 下复现并公开。
获取方式:关注本公众号,在后台回复关键词CVE-2026-82592(或cve-2026-82592),即可获取完整 PoC 的下载链接。
⚠️ 该 PoC 仅供安全研究、漏洞验证与防御性测试使用。利用会以 root 权限执行命令或使设备 Web 服务崩溃,请在可销毁的仿真环境(如 FirmaE)中运行,勿对未授权或生产设备使用。
参考链接
- NVD:CVE-2026-82592
- CVE 官方记录:CVE-2026-82592
- D-Link 官方网站:https://www.dlink.com/(固件更新与安全公告)
- 第三方分析(VulDB):CVE-2026-82592
免责声明:本文技术细节来自上述公开资料(NVD/CVE 记录、公开 PoC 复现报告);厂商披露时未公布修复细节,文中”裸 MIPS 无 ASLR/无 canary””命令注入可拉起 telnetd”等表述为基于公开报告与通用嵌入式漏洞知识的分析推断,非厂商官方实锤;受影响版本与修复信息请以 D-Link 官方公告为准。PoC 仅供安全研究,请遵守授权边界。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:Hack说 Hack说 Hack说《【漏洞分析】132 字节栈溢出如何拿下 Root:D-Link 路由器 CVE-2026-82592 POST 请求到 RCE 全链拆解》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论