CVE-2021-3156 (Sudo Baron Samedit)
Este repositorio contiene un exploit para CVE-2021-3156 dirigido a Linux x64. Para el writeup, 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 una mejor comprensión del exploit
- exploit_timestamp_race.c sobrescribe def_timestamp y 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 mailer. Requiere sudo compilado sin disable-root-mailer, como CentOS 6 y 7.
- exploit_userspec.py el exploit sobrescribe struct userspec para omitir la autenticación y añadir un nuevo usuario en /etc/passwd. Solo compatible con la versión de sudo 1.8.9-1.8.23.
- exploit_cent7_userspec.py versión simplificada de exploit_userspec.py para su comprensión, pero dirigida solo a CentOS 7 con configuración predeterminada
- exploit_nss_d9.py sobrescribe struct service_user en Debian 9, pero solo compatible con /etc/nsswith.conf predeterminado
- exploit_nss_u16.py sobrescribe struct service_user en Ubuntu 16.04, pero solo compatible con /etc/nsswith.conf predeterminado
- exploit_nss_u14.py sobrescribe struct service_user en Ubuntu 14.04, pero solo compatible con /etc/nsswith.conf predeterminado
Otros
- asm/ biblioteca tinyelf y ejecutable para incrustar en el exploit de Python
- gdb/ scripts utilizados para depurar el heap de sudo
Cómo elegir el exploit
Para distribuciones de Linux cuyo glibc tiene soporte de tcache habilitado (CentOS 8, Ubuntu >= 17.10, Debian 10):
- pruebe exploit_nss.py primero
- Si el error no está relacionado con tcache de glibc, puede probar exploit_timestamp_race.c a continuación
Para distribuciones de Linux cuyo glibc no tiene soporte de tcache:
- si el objetivo es Debian 9, Ubuntu 16.04 o Ubuntu 14.04, pruebe primero exploit_nss_xxx.py para la versión específica
- a continuación, pruebe exploit_defaults_mailer.py. Si sabe que el sudo del objetivo está compilado con --disable-root-mailer, puede omitir este exploit. El exploit intenta verificar el indicador 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 verificarlo en el sistema objetivo. (Sistemas operativos conocidos compatibles: CentOS 6 y 7)
- por último, pruebe exploit_userspec.py