【智能设备-zyxel路由器CVE-2024-9200漏洞调用链分析】此文章归类为:智能设备。
本文主要是针对于zyxel厂商的路由器的zhttpd程序进行漏洞分析,作者在挖掘zyxel设备漏洞时,翻到一篇较新的漏洞公告:
Zyxel security advisory for buffer overflow and post-authentication command injection vulnerabilities in some 4G LTE/5G NR CPE, DSL/Ethernet CPE, fiber ONTs, and WiFi extenders | Zyxel Networks
其中我关注到CVE-2024-9200这个漏洞,比较经典的ping功能产生命令注入,日期比较新,就决定简单地看看这个漏洞。然而网上搜不到该漏洞的详细信息,便自己去他们官网下载了一个新版固件来分析(型号vmg4005)。然而在自己分析的过程中,发现该漏洞调用链还是有一点点的复杂度的。
本文就是分享我分析该漏洞时遇到的一些问题和知识点,或许可以给挖掘zyxel设备或遇到zhttpd这个框架的师傅一些帮助。
可以用FirmAE直接进行模拟,启动后可能不知道管理员默认密码,FirmAE模拟时使用-d参数开启终端,使用passwd admin修改密码就可以登录web页面了。
这里值得一说的是,要分析的程序zhttpd,打开后函数是没有命名的,影响了分析,不过我在data段找到了一张表,容易看出里面存储着的就是url页面和对应的处理函数

那么函数名这里就可以恢复了,使用ida python的脚本就行
以下是从公告中获取的漏洞信息,知道了触发页面在诊断(diagnostic)中,参数就是host

对应页面内容

点击按钮后抓包,发了三个包,第一个是put,但是参数被加密了,后面两个包是get类型,应该是获取结果。

上面的抓包获取了/cgi-bin/DAL?oid=PINGTEST这个关键信息,那么直接关键词在zhttpd中搜索即可,来到了cgi-bin_DAL这个函数
(注:下文后面我贴的所有ida中看到的程序的代码,我都做了删改和注释,帮助快速看懂关键代码)
zcfgFeDalHandler这个函数在libzcfg_fe_dal.so中,继续跟进代码。这里的全局变量dalHandler,跟进后可确认就是handler表,保存oid值和对应处理函数
表中pingtest对应如下,这里很容易判断出zcfgFeDalPingTest就是处理函数

跟进zcfgFeDalPingTest,其中还有多处调用,这里就忽略了,直接来到最后一层关键函数zcfgFeDalIpDiagIPPingEdit
其实到这里后,一开始,就会比较困惑,因为这就是最后一层调用,但是并没有发现ping命令执行的逻辑,仅仅做了把数据保存到json对象中,然后就啥也没干了。经过确认,其实关键函数在于这两行,他们的实现分别在libzcfg_fe_rdm_access.so和libzcfg_fe_rdm_string.so
其实这里具体去追究他们的实现,是比较麻烦而且困难的,因为不仅抽象难懂,还反反复复涉及到了多个外部函数。可以直接猜到这里涉及到的事情。
最后于 7小时前
被CLan_nad编辑
,原因:
更多【智能设备-zyxel路由器CVE-2024-9200漏洞调用链分析】相关视频教程:www.yxfzedu.com