CVE-2021-3156 (Sudo Baron Samedit)
Questo repository contiene un exploit per CVE-2021-3156 che ha come target Linux x64. Per l'analisi tecnica, visita https://datafarm-cybersecurity.medium.com/exploit-writeup-for-cve-2021-3156-sudo-baron-samedit-7a9a4282cb31
Crediti a Braon Samedit di Qualys per l'advisory originale.
File
Exploit su glibc con tcache
- exploit_nss.py rileva automaticamente tutti i requisiti e il numero di voci in /etc/nsswitch.conf
- exploit_nss_manual.py versione semplificata di exploit_nss.py per una migliore comprensione dell'exploit
- exploit_timestamp_race.c sovrascrive def_timestamp e sfrutta la race condition per modificare /etc/passwd
Exploit su glibc senza tcache
- exploit_defaults_mailer.py l'exploit sovrascrive la struct defaults per modificare il percorso del binario mailer. Richiede sudo compilato senza disable-root-mailer, come CentOS 6 e 7.
- exploit_userspec.py l'exploit sovrascrive la struct userspec per bypassare l'autenticazione e aggiungere un nuovo utente in /etc/passwd. Supporta solo sudo versione 1.8.9-1.8.23.
- exploit_cent7_userspec.py versione semplificata di exploit_userspec.py per la comprensione, ma ha come target solo CentOS 7 con configurazione predefinita
- exploit_nss_d9.py sovrascrive la struct service_user su Debian 9 ma supporta solo /etc/nsswith.conf predefinito
- exploit_nss_u16.py sovrascrive la struct service_user su Ubuntu 16.04 ma supporta solo /etc/nsswith.conf predefinito
- exploit_nss_u14.py sovrascrive la struct service_user su Ubuntu 14.04 ma supporta solo /etc/nsswith.conf predefinito
Altro
- asm/ libreria tinyelf ed eseguibile da incorporare nell'exploit Python
- gdb/ script usati per il debug dell'heap di sudo
Scelta dell'exploit
Per le distribuzioni Linux in cui glibc supporta tcache e lo ha abilitato (CentOS 8, Ubuntu >= 17.10, Debian 10):
- prova prima exploit_nss.py
- Se l'errore non è correlato a tcache di glibc, puoi provare exploit_timestamp_race.c successivamente
Per le distribuzioni Linux in cui glibc non supporta tcache:
- se il target è Debian 9, Ubuntu 16.04 o Ubuntu 14.04, prova prima exploit_nss_xxx.py per la versione specifica
- successivamente, prova exploit_defaults_mailer.py. Se sai che il sudo del target è compilato con --disable-root-mailer, puoi saltare questo exploit. L'exploit tenta di controllare il flag root mailer dal binario di sudo. Ma su alcune distribuzioni Linux il permesso di sudo è 4711 (-rws--x--x), il che rende impossibile il controllo sul sistema target. (I sistemi operativi noti per il funzionamento sono CentOS 6 e 7)
- infine, prova exploit_userspec.py