CVE-2021-3156 (Sudo Baron Samedit)
Este repositorio es un exploit para CVE-2021-3156 dirigido a Linux x64. Para el análisis, visite https://datafarm-cybersecurity.medium.com/exploit-writeup-for-cve-2021-3156-sudo-baron-samedit-7a9a4282cb31
Crédito a Braon Samedit de Qualys por el aviso original.
Archivos
Exploit en glibc con tcache
- exploit_nss.py detecta automáticamente todos los requisitos y el número de entradas en /etc/nsswitch.conf
- exploit_nss_manual.py versión simplificada de exploit_nss.py para comprender mejor el exploit
- exploit_timestamp_race.c sobrescribe def_timestamp y usa una condición de carrera para modificar /etc/passwd
Exploit en glibc sin tcache
- exploit_defaults_mailer.py el exploit sobrescribe struct defaults para modificar la ruta del binario de mailer. Requiere sudo compilado sin disable-root-mailer, como CentOS 6 y 7.
- exploit_userspec.py el exploit sobrescribe struct userspec para eludir la autenticación y añadir un nuevo usuario en /etc/passwd. Solo es compatible con sudo versión 1.8.9-1.8.23.
- exploit_cent7_userspec.py versión simplificada de exploit_userspec.py para su comprensión, pero solo apunta a CentOS 7 con la configuración predeterminada
- exploit_nss_d9.py sobrescribe struct service_user en Debian 9, pero solo es compatible con el /etc/nsswith.conf predeterminado
- exploit_nss_u16.py sobrescribe struct service_user en Ubuntu 16.04, pero solo es compatible con el /etc/nsswith.conf predeterminado
- exploit_nss_u14.py sobrescribe struct service_user en Ubuntu 14.04, pero solo es compatible con el /etc/nsswith.conf predeterminado
Otros
- asm/ librería tinyelf y ejecutable para incrustar en el exploit de python
- gdb/ scripts que se utilizan para depurar el heap de sudo
Selección del exploit
Para distribuciones de Linux donde glibc tiene soporte de tcache habilitado (CentOS 8, Ubuntu >= 17.10, Debian 10):
- prueba primero exploit_nss.py
- Si el error no está relacionado con el tcache de glibc, puedes probar exploit_timestamp_race.c a continuación
Para distribuciones de Linux donde glibc no tiene soporte de tcache:
- si el objetivo es Debian 9, Ubuntu 16.04 o Ubuntu 14.04, prueba primero exploit_nss_xxx.py para la versión específica
- a continuación, prueba exploit_defaults_mailer.py. Si sabes que el sudo del objetivo está compilado con --disable-root-mailer, puedes omitir este exploit. El exploit intenta comprobar el flag de root mailer desde el binario de sudo. Pero el permiso de sudo en algunas distribuciones de Linux es 4711 (-rws--x--x), lo que hace imposible comprobarlo en el sistema objetivo. (Se sabe que funciona en CentOS 6 y 7)
- por último, prueba exploit_userspec.py