首页
社区
课程
招聘
[原创]Zyxel Telnet 漏洞分析(CVE-2025-0890/CVE‑2024‑40891)
发表于: 2025-2-14 14:13 7574

[原创]Zyxel Telnet 漏洞分析(CVE-2025-0890/CVE‑2024‑40891)

2025-2-14 14:13
7574

25年开年分析的第一个洞。2月4日 Zyxel 发布安全公告,旗下部分旧款 DSL 客户终端设备(CPE)存在严重的安全漏洞[1],包括 默认凭证不安全问题命令注入漏洞 ,攻击者可通过默认凭证登录 Telnet 并利用此漏洞在受影响的设备上执行任意命令。

Zyxel DSL CPEZyxel 公司生产的一种网络设备,用于通过电话线(DSL 技术)连接互联网。它集成了调制解调器和路由器功能,可将电话线的宽带信号转换为网络信号,供用户上网、使用 Wi-Fi 或打电话。这类设备广泛应用于家庭和小型企业,适合通过 DSLVDSL 技术接入互联网的场景。
简单来说,就是一种用电话线上网的设备,既能提供网络,又能支持无线连接和语音通话。

固件下载地址[2]
安全公告里提到受影响型号

CVE-2025-0890 涉及以上设备存在默认凭证,攻击者可能利用这些弱凭据直接登录设备管理界面。CVE-2024-40891 是一个需要认证的命令注入漏洞,攻击者可以通过 Telnet 在受影响设备上执行操作系统命令。两个漏洞的结合使得攻击者可以先通过 CVE-2025-0890 使用默认凭证登录设备,然后利用 CVE-2024-40891 实现任意命令注入,最终完全控制目标设备。

图片描述
漏洞描述:Telnet 功能存在默认凭证不安全的问题。如果管理员没有更改默认凭证,攻击者可能会利用这些默认凭证登录管理界面。需要注意的是,默认情况下已禁用 WAN 访问和 Telnet 功能。
首先分析 CVE-2025-0890 寻找默认凭证。
默认凭证保存在 /etc/default.cfg 文件中,分析一下这个文件。
图片描述
default.cfg 包含了两个用户 adminzyuser 以及权限范围。其中 admin zyuser 两者均拥有 remoteMGMT 远程管理功能,可以通过 Telnet 登录设备。
这里遇到一个问题,我下载的固件是 VMG1312-B10A_1.00,其中 Password 是经过加密并 base64 编码的。通过 base64 解码后的结果是乱码,说明还需要进行解密。于是通过搜索关键字 grep -rni "etc/defaulf.cfg" ,看看怎么处理 default.cfg
图片描述
以上三个二进制文件对 etc/defaulf.cfg 进行操作,但是并没有发现有关解密的相关逻辑(可能是我没找到...)。转变思路,换个固件试试,于是在 VMG4325-B10A_1.00 中找到仅仅被 base64 编码,并没有加密的账户密码。
图片描述
default.cfg 包含了三个用户 supervisor adminzyuser 以及权限范围。其中 supervisor admin zyuser 均拥有 remoteMGMT 远程管理功能,可以通过 Telnet 登录设备。

图片描述
漏洞描述:存在身份验证后命令注入漏洞。该漏洞可能允许经过身份验证的攻击者通过 Telnet 在受影响的设备上执行操作系统命令。需要注意的是,默认情况下已禁用 WAN 访问和 Telnet 功能。
当成功登录 Telnet 后,接下来分析 CVE-2024-40891 如何触发命令注入漏洞,
先分析入口 telnetd
图片描述
main 通过 cmsDal_getNetworkAccessMode 检查客户端的网络访问权限, sub_4016C4 判断是否创建 Telnet 会话。
分析 cmsDal_getNetworkAccessMode,函数被定义在 lib/private/libcms_dal.so
图片描述
这段代码的功能是判断客户端 IP 地址是通过 lan 侧访问还是 wan 侧访问,并返回访问网络访问模式。漏洞情报说明默认情况下禁止 wan 访问,所以漏洞利用前提是设备允许 wan 访问。
接着回到 telnetdsub_4016C4 分析后续操作。
图片描述
sub_4016C4 的功能是为新的 Telnet 会话分配资源并创建子进程来处理客户端连接。会通过 cmsCli_authen 进行客户端身份认证。
通过验证后 cmsCli_run 会启动一个命令行交互环境,函数被定义在 lib/libcms_cli.so
图片描述
cmsCli_run 会启动命令行交互环境后,通过不断调用 sub_69F0 处理用户的输入和命令执行。
图片描述
sub_69F0 通过 cmdedit_read_input 获取用户输入,再通过 cli_processCliCmdcli_processHiddenCmd 分别处理常规命令和隐藏命令。cli_processHiddenCmd 可能需要管理员权限才能调用,先看 cli_processCliCmd
图片描述
图片描述
首先提取命令名称,当遇到空格、管道符、分号或者逻辑运算符是认为命令名称结束。接着获取用户权限,supervisorNameGet 判断是否为超级用户,如果不是超级用户则遍历配置查看当前用户权限。命令存储在 off_892BC 中,遍历匹配命令。
执行命令的逻辑为,如果命令有对应的处理函数 off_892BC[6 * i + 3] ,调用处理函数执行命令。如果没有处理函数,但包含分隔符(如 |;),则会调用 prctl_runCommandInShellWithTimeoutShell 中运行命令。这个地方就是触发命令注入漏洞的关键了,所以现在要做的就是判断 check_cmd_with_split 和寻找哪个命令没有处理函数。
图片描述
check_cmd_with_split 首先调用 strtok_r 按照分隔符 |;& 将命令字符串分割成多个子命令。再通过 is_cmd_allowed 检查是否运行被执行。
图片描述
is_cmd_allowed 会先判断是否为特殊命令 sh ,如果是 sh 进一步判断是否为超级用户(这个地方应该是给超级用户留的后门)。
接着会再次判断权限,然后遍历另一个命令表 off_8A3E0 检查当前子命令是否在其中。
图片描述
结果发现命令表 off_8A3E0 中包含隐藏命令 sh
那么下一步只要在 off_892BC 找到没有处理函数的命令,即可触发命令注入。
图片描述
图片描述
命令表 off_892Bc 中,类似 help logout 会直接调用对应的处理函数(如 sub_F31Csub_E9B8 ),但是 ping ifconfig ps 等没有处理函数,因此会调用 prctl_runCommandInShellWithTimeout 执行命令。
prctl_runCommandInShellWithTimeout 被定义在 libcms_util.so
图片描述
prctl_runCommandInShellWithTimeout 再调用 sub_116E0 执行命令。
图片描述
sub_116E0 通过 forkexecv 在子进程中执行用户提供的命令。
最后构造 poc

分析过程中用 QEMU 模拟环境,telnet 服务有问题导致一直是未授权访问,具体情况如下。
先找到相关文件 telnetd
图片描述
/usr/sbin/telnetd 能成功启动 Telnet 服务,但是存在认证问题导致未授权访问且没有权限。
图片描述
图片描述
strace 看了一下存在子进程无法打开 /dev/pts/0 和配置文件缺失问题(无法启动 IPv6 支持)。
后续也尝试运行 /bin/telnetd ,同样存在内核无法启动 IPv6 问题,因为整体不影响漏洞分析,所以没有深入研究。

QEMU 模拟固件不是真实环境导致会存在一些问题,所以重心放在了漏洞分析部分。

[1] 安全公告
285K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2*7P5i4S2W2L8q4)9J5k6h3y4G2L8g2)9J5c8X3N6D9L8$3u0S2L8q4)9J5c8X3g2F1i4K6u0r3M7%4g2H3M7r3!0J5N6q4)9J5c8Y4y4W2j5%4g2J5K9i4c8&6i4K6u0V1j5h3c8$3K9i4y4G2M7X3W2W2M7#2)9J5c8Y4A6&6P5r3g2D9i4K6u0V1M7$3g2U0N6i4u0A6N6s2W2Q4x3X3c8S2k6s2k6A6M7$3!0J5P5g2)9J5k6r3k6G2M7W2)9J5k6r3y4G2L8h3#2S2L8X3c8Q4x3X3c8A6L8X3A6W2j5%4c8A6L8$3&6Q4x3X3c8S2L8X3c8Q4x3X3c8A6L8Y4y4W2j5%4g2J5k6g2)9J5k6r3c8W2k6X3q4#2L8s2c8Q4x3X3c8U0M7X3g2V1k6h3&6@1K9h3q4D9M7#2)9J5k6s2k6#2L8r3&6W2M7X3q4T1K9h3I4A6N6r3W2W2M7#2)9J5k6r3W2F1i4K6u0V1j5$3g2J5N6r3q4A6L8W2)9J5k6r3I4W2k6$3q4U0P5g2)9J5k6r3c8K6L8q4)9J5k6r3y4H3k6g2)9J5k6o6l9J5i4K6u0V1x3o6c8Q4x3X3b7J5x3o6t1#2
[2] 固件下载
0abK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1M7X3W2$3k6i4u0K6i4K6u0W2M7$3!0X3N6s2m8W2k6r3W2S2i4K6u0W2j5$3!0E0i4K6u0r3k6$3g2@1i4K6u0r3f1X3!0#2N6r3g2J5i4K6u0V1f1%4N6A6N6r3y4Z5i4K6u0V1b7h3y4U0k6i4y4K6i4K6u0V1f1r3!0A6L8Y4c8Q4x3V1k6K9P5i4S2W2L8q4)9J5c8R3`.`.

VMG1312-B10A、VMG1312-B10B、VMG1312-B10E、VMG3312-B10A、VMG3313-B10A、VMG3926-B10B、VMG4325-B10A、VMG4380-B10A、VMG8324-B10A、VMG8924-B10A、SBG3300、SBG3500

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回