CVE-2021-3156 (Sudo Baron Samedit)
Este repositório contém o exploit da CVE-2021-3156 direcionado a Linux x64. Para o writeup, visite https://datafarm-cybersecurity.medium.com/exploit-writeup-for-cve-2021-3156-sudo-baron-samedit-7a9a4282cb31
Créditos a Braon Samedit da Qualys pelo advisory original.
Arquivos
- exploit_nss.py detecta automaticamente todos os requisitos e o número de entradas em /etc/nsswitch.conf
- exploit_nss_manual.py versão simplificada do exploit_nss.py para melhor compreensão do exploit
- exploit_timestamp_race.c sobrescreve def_timestamp e usa condição de corrida para modificar /etc/passwd
Exploit em glibc sem tcache
- exploit_defaults_mailer.py o exploit sobrescreve a struct defaults para modificar o caminho do binário do mailer. Requer sudo compilado sem disable-root-mailer, como CentOS 6 e 7.
- exploit_userspec.py o exploit sobrescreve a struct userspec para contornar a autenticação e adicionar um novo usuário em /etc/passwd. Suporta apenas as versões 1.8.9-1.8.23 do sudo.
- exploit_cent7_userspec.py versão simplificada do exploit_userspec.py para compreensão, mas direcionado apenas ao CentOS 7 com configuração padrão
- exploit_nss_d9.py sobrescreve a struct service_user no Debian 9, mas suporta apenas o /etc/nsswith.conf padrão
- exploit_nss_u16.py sobrescreve a struct service_user no Ubuntu 16.04, mas suporta apenas o /etc/nsswith.conf padrão
- exploit_nss_u14.py sobrescreve a struct service_user no Ubuntu 14.04, mas suporta apenas o /etc/nsswith.conf padrão
Outros
- asm/ biblioteca tinyelf e executável para incorporação em exploits em python
- gdb/ scripts usados para depurar o heap do sudo
Escolhendo o exploit
Para distribuições Linux cuja glibc tem suporte a tcache habilitado (CentOS 8, Ubuntu >= 17.10, Debian 10):
- tente exploit_nss.py primeiro
- Se um erro não estiver relacionado ao tcache da glibc, você pode tentar exploit_timestamp_race.c em seguida
Para distribuições Linux cuja glibc não tem suporte a tcache:
- se o alvo for Debian 9, Ubuntu 16.04 ou Ubuntu 14.04, tente exploit_nss_xxx.py para a versão específica primeiro
- em seguida, tente exploit_defaults_mailer.py. Se você souber que o sudo do alvo foi compilado com --disable-root-mailer, pode pular este exploit. O exploit tenta verificar o flag do root mailer no binário do sudo. Mas a permissão do sudo em algumas distribuições Linux é 4711 (-rws--x--x), o que torna impossível verificar no sistema alvo. (Sistemas conhecidos que funcionam são CentOS 6 e 7)
- por último, tente exploit_userspec.py