K3ysTr0K3R/CVE-2026-24061
GitHub: K3ysTr0K3R/CVE-2026-24061
针对 GNU InetUtils telnetd 参数注入身份验证绕过漏洞(CVE-2026-24061)的 Python 概念验证利用工具,通过 ENVIRON 选项注入 `-f root` 实现无需凭据的 root 访问。
Stars: 1 | Forks: 0
## CVE-2026-24061 - 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` 协商。
- 支持 subnegotiation 解析和 keepalive 机制。
- **自动 Payload 注入**
- 构建并发送带有 `USER=-f root` 注入的精心构造的 `ENVIRON` 选项 payload。
- **交互式 Shell**
- 提供用于执行命令的双向交互式会话。
- **连接管理**
- 实现 socket keepalive、超时处理和优雅的会话清理。
- **详细的调试信息**
- 可选的调试输出,用于协议分析和故障排除。
## 用法
```
python3 exploit.py -p [options]
```
### 必选参数
| 参数 | 描述 |
|----------|-------------|
| `target` | 目标 IP 地址或主机名 |
### 可选参数
| 选项 | 描述 |
|--------|-------------|
| `-p`, `--port` | 目标端口(默认:`23`) |
| `-v`, `--verbose` | 启用详细的调试输出 |
| `-t`, `--timeout` | 连接超时时间,以秒为单位(默认:`5`) |
| `-k`, `--keepalive` | Keepalive 间隔时间,以秒为单位(默认:`30`) |
| `-h`, `--help` | 显示帮助信息 |
## 示例
### 利用默认的 Telnet 端口
```
python3 exploit.py 192.168.1.100
```
### 利用自定义端口并输出详细日志
```
python3 exploit.py 192.168.1.100 -p 2323 -v
```
### 针对不稳定的连接使用延长后的 keepalive 间隔
```
python3 exploit.py 10.0.0.5 -p 2323 -k 60 -t 10
```
## 漏洞利用工作流
1. **建立连接**
- 使用适当的 socket 选项和 keepalive 设置发起 TCP 连接。
2. **协议协商**
- 处理 Telnet 选项协商(`SGA`、`ECHO` 和 `ENVIRON`)。
3. **Payload 投递**
- 发送 `WILL ENVIRON`,随后发送精心构造的 subnegotiation payload。
4. **绕过身份验证**
- 将 `-f root` 参数注入到 `login(1)` 中以绕过凭据检查。
5. **交互式会话**
- 提供完整的双向 shell 访问权限,支持实时执行命令。
## 技术细节
该漏洞利用利用了 `ENVIRON` Telnet 选项 (RFC 1572),将命令行参数注入到 `USER` 环境变量中。
当 `telnetd` 将此未清理的值传递给 `login -f root` 时,login 程序会将 `-f` 解释为强制绕过身份验证的标志,从而在无需密码验证的情况下授予 root 访问权限。
### 协议处理
漏洞利用脚本实现了:
- IAC (Interpret As Command) 字节转义
- Subnegotiation 解析与构建
- 选项协商响应(`WILL`、`WONT`、`DO`、`DONT`)
- Keepalive `NOP` 命令以保持会话稳定性
## 示例输出
```
$ python3 exploit.py 127.0.0.1 -p 2323
[!] Coded By: K3ysTr0K3R
[*] Telnet Authentication Bypass
[*] Connecting to 127.0.0.1:2323
[+] Connection established
[+] Exploit payload sent (19 bytes)
# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
root
# ```
## 环境要求
- Python 3.7 或更高版本
- 无外部依赖
- 仅使用 Python 标准库
## 检测与缓解
系统管理员可以通过监控以下内容来检测漏洞利用尝试:
- 执行 `ENVIRON` 选项协商的 Telnet 连接。
- 包含 `-f` 或其他命令行标志的 `USER` 环境变量。
- 系统日志中的身份验证绕过事件。
### 缓解措施
升级到 GNU InetUtils **2.8** 版本,或者应用官方安全补丁,该补丁会在将环境变量传递给 `login(1)` 之前对其进行清理。
## 免责声明
此概念验证仅用于安全研究、漏洞验证和授权的测试环境。仅限对您拥有明确许可进行安全评估的系统使用。
标签:PoC, Telnet, 暴力破解, 认证绕过, 逆向工具