CVE-2026-24061 telnet 远程免密root telnet
参数注入,无需任何密码,便以 root 身份获得了 shell 访问权限。
漏洞原理:参数注入导致认证绕过
该漏洞的根本原因是一个参数注入问题(CWE-88: Improper Neutralization of Argument Delimiters in a Command)。
- 问题根源:telnetd 在启动时,若使用了 -a 选项(启用自动登录),它会读取客户端传来的 USER 环境变量作为登录用户名。关键在于,telnetd 在将USER 环境变量传递给/usr/bin/login 程序之前,未进行任何净化处理。
- 攻击手法:攻击者利用 Telnet 协议的 NEW-ENVIRON 选项,将 USER 环境变量的值设置为 -f root。
- 漏洞利用:telnetd 收到这个值后,直接将其作为参数拼接到调用 login 的命令行中。
- 认证绕过:最终执行的命令类似于 /bin/login -f root。在 Linux 系统中,login 命令的 -f 参数作用是跳过密码验证,直接以指定用户身份登录。因此,攻击者无需任何密码,便以 root 身份获得了 shell 访问权限。
该漏洞由研究员 Kyu Neushwaistein 于 2026 年 1 月 19 日发现并报告,它源自 2015 年 3 月 19 日的一次代码提交,并随 2015 年 5 月 12 日发布的 1.9.3 版本正式引入。
漏洞验证(PoC)与原理
目前已存在多个公开的漏洞验证(PoC)脚本。以下是一个典型的 Python PoC 利用流程:
PoC 示例
- 环境准备
使用 Docker 快速搭建一个漏洞环境:
bash
1 | docker run -d -p 23:23 --name vulnerable-telnetd joshbeck2024/ctf-cve-2026-24061-telnetd |
- PoC 脚本核心逻辑
一个典型的 Python PoC 脚本 exploit.py 核心步骤如下: - 连接目标:连接到目标主机的 Telnet 端口(默认 23)。
- 协商环境变量:向服务器发送 WILL NEW_ENVIRON 和 WILL ENVIRON 命令,表明客户端支持环境变量传递。
- 注入恶意变量:在收到服务器的 DO NEW_ENVIRON 请求后,发送精心构造的数据包:SB NEW_ENVIRON IS VAR “USER” VALUE “-f root” SE。这个操作即是将 USER 环境变量的值设置为 -f root。
- 触发漏洞:服务器端 telnetd 收到该变量后,会执行命令 /bin/login -f root。
- 获取Root Shell:命令执行成功,攻击者直接获得一个无需密码的 root 权限 shell。
- 运行PoC
1 | # 修改 exploit.py 中的目标IP |
如果成功,将直接获得一个 root 权限的 shell。
PoC 原理:滥用 Telnet 协议
这个 PoC 的核心是滥用 RFC 1572(Telnet 环境选项) 协议。攻击者通过该协议规定的 NEW-ENVIRON 子协商,将恶意载荷 -f root 作为 USER 环境变量的值传递给服务器。telnetd 在处理该变量时未做任何检查,直接将其拼接到命令中,从而实现了参数注入攻击。
修复建议
由于该漏洞极易利用且后果严重(CVSS 9.8),建议您立即采取以下措施:
1. 立即升级(首选方案)
将 GNU InetUtils 升级到已修复此漏洞的 2.8 或更高版本。
各主要发行版已提供修复更新,可参考以下命令:
Debian/Ubuntu:
bash1
sudo apt update && sudo apt install inetutils-telnetd
各 Ubuntu 版本的具体修复版本号可参考其安全公告。
RHEL/CentOS:
bash1
sudo dnf upgrade inetutils
Alpine:
bash1
apk upgrade inetutils
2. 禁用 Telnet 服务(推荐)
如非必要,立即停止并禁用 telnetd 服务,改用更安全的 SSH 协议。
bash
1 | systemctl stop inetutils-telnetd |
3. 网络层隔离(临时缓解)
如果无法立即升级或禁用,应在防火墙上封锁外部对 Telnet 端口(默认 23)的访问。
bash
1 | iptables -A INPUT -p tcp --dport 23 -j DROP |
或通过网络隔离,限制其仅能被内网可信主机访问。
4. 自定义 login 程序(临时方案)
作为一种临时规避措施,可以让 telnetd 使用一个禁止使用-f 参数的自定义login 程序。
- 标题: CVE-2026-24061 telnet 远程免密root telnet
- 作者: RestXtra
- 创建于 : 2026-07-25 18:32:02
- 更新于 : 2026-07-25 18:32:56
- 链接: https://restxtra.github.io/2026/07/25/2026-07-25-CVE-2026-24061-telnet-远程免密root-telnet/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。