
análise do buffer overflow do sudo que afeta versões do sudo <1.8.26 e como usar o GCC para compilar exploits publicamente disponíveis
Análise do CVE-2019-18634 (https://www.exploit-db.com/exploits/47995)
Sudo 1.8.25p - Buffer Overflow do 'pwfeedback' (PoC)
A opção pwfeedback do Sudo pode ser usada para fornecer feedback visual quando o usuário está digitando sua senha. Para cada tecla pressionada, um asterisco é impresso. Esta opção foi adicionada em resposta à confusão dos usuários sobre como o prompt padrão 'Password:' desativa o eco das teclas pressionadas. Embora o pwfeedback não esteja habilitado por padrão na versão upstream do sudo, alguns sistemas, como Linux Mint e Elementary OS, o habilitam em seus arquivos sudoers padrão.
Análise
Writeup do tryhackme sobre buffer overflow no Sudo
Análise do CVE-2019-18634
Primeiro, fazemos login na instância do tryhackme via SSH
A vulnerabilidade ocorre porque a função pwfeedback é vulnerável a um heap buffer overflow. Para explorar esta vulnerabilidade, primeiro verificamos se a máquina possui a versão vulnerável do sudo (sudo <1.8.26) executando o comando sudo –version
Análise do CVE-2019-18634
Primeiro, fazemos login na instância do tryhackme via SSH
A vulnerabilidade ocorre porque a função pwfeedback é vulnerável a um heap buffer overflow. Para explorar esta vulnerabilidade, primeiro verificamos se a máquina possui a versão vulnerável do sudo (sudo <1.8.26) executando o comando sudo –version

Confirmando que a máquina possui uma versão vulnerável do sudo, verificamos agora se a função pwfeedback está presente. Isso pode ser feito de duas maneiras: invocando sudo e digitando qualquer coisa no prompt de senha, o que deve exibir '*' conforme você digita caracteres para a senha; e a segunda maneira, mais técnica, é usando o comando sudo -l, mas isso também exigirá que o usuário tenha permissões adequadas que permitam visualizar informações sobre o sudo ou poder concatenar o arquivo sudoers

Vamos agora confirmar que um buffer overflow é possível usando o caso de teste do exploit-db https://www.exploit-db.com/exploits/47995
perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id ^^A linha de código acima funciona da seguinte forma:
Adiciona 100 caracteres 'A' e os envia para o comando sudo, que então cairá no heap buffer do pwfeedback.

O Sudo então exibirá um segmentation fault, pois não sabe como continuar o processo sudo
Isso acontece porque, uma vez que um heap buffer estático é inundado, ele começa a inundar os registradores da CPU e o ponteiro de instrução, que mantém o fluxo da próxima instrução.
Podemos executar o exploit, que causará um buffer overflow e nos dará acesso root ao sistema https://www.exploit-db.com/exploits/47995
