D-Link DIR-645 hedwig.cgi 栈缓冲区溢出漏洞总结 漏洞概述 影响范围 该漏洞存在于 D-Link DIR-645 路由器的早期固件版本(如 v1.01 至 v1.03)中。攻击者可以通过构造恶意的 HTTP 请求,利用 组件中的漏洞获取设备的控制权。 漏洞详情 在 D-Link DIR-645 固件中,核心函数 包含一个栈缓冲区溢出漏洞。 1. 原理:反编译结果显示,该函数在栈上定义了一个固定大小的缓冲区(1024字节)。在处理 HTTP 请求时,程序会获取用户会话标识符(Session UID),该值可由客户端控制。随后,程序使用 函数将该 UID 拼接到栈上的缓冲区中,但未进行长度检查。 2. 利用方式:由于变量 位于栈上且大小固定,如果攻击者构造过长的 UID 输入,会导致越界写入,覆盖相邻的栈结构(包括返回地址)。 3. 后果:攻击者可以通过精心构造的溢出数据控制返回地址,使程序跳转到栈或其他可控制的内存区域,从而实现任意代码执行(RCE)。 修复方案 升级固件:建议用户将 D-Link DIR-645 路由器的固件升级到最新的安全版本,以修复此漏洞。 网络隔离:在修复前,尽量避免将路由器暴露在公网,或配置防火墙规则限制对 的访问。 POC 代码