CVE-2021-3156 (Sudo Baron Samedit)
Dieses Repository enthält einen Exploit für CVE-2021-3156, der auf Linux x64 abzielt. Für einen Writeup besuchen Sie bitte https://datafarm-cybersecurity.medium.com/exploit-writeup-for-cve-2021-3156-sudo-baron-samedit-7a9a4282cb31
Dank an Braon Samedit von Qualys für das ursprüngliche Advisory.
Dateien
Exploit für glibc mit tcache
- exploit_nss.py erkennt automatisch alle Anforderungen und die Anzahl der Einträge in /etc/nsswitch.conf
- exploit_nss_manual.py vereinfachte Version von exploit_nss.py zum besseren Verständnis des Exploits
- exploit_timestamp_race.c überschreibt def_timestamp und nutzt eine Race Condition, um /etc/passwd zu ändern
Exploit für glibc ohne tcache
- exploit_defaults_mailer.py der Exploit überschreibt die struct defaults, um den Pfad der Mailer-Binärdatei zu ändern. Er erfordert sudo, das ohne disable-root-mailer kompiliert wurde, wie bei CentOS 6 und 7.
- exploit_userspec.py der Exploit überschreibt die struct userspec, um die Authentifizierung zu umgehen und einen neuen Benutzer in /etc/passwd hinzuzufügen. Unterstützt nur sudo-Version 1.8.9-1.8.23.
- exploit_cent7_userspec.py vereinfachte Version von exploit_userspec.py zum Verständnis, zielt aber nur auf CentOS 7 mit Standardkonfiguration
- exploit_nss_d9.py überschreibt die struct service_user unter Debian 9, unterstützt aber nur die Standarddatei /etc/nsswith.conf
- exploit_nss_u16.py überschreibt die struct service_user unter Ubuntu 16.04, unterstützt aber nur die Standarddatei /etc/nsswith.conf
- exploit_nss_u14.py überschreibt die struct service_user unter Ubuntu 14.04, unterstützt aber nur die Standarddatei /etc/nsswith.conf
Sonstiges
- asm/ tinyelf-Bibliothek und ausführbare Datei zum Einbetten in den Python-Exploit
- gdb/ Skripte, die zum Debuggen des sudo-Heaps verwendet werden
Exploit auswählen
Für Linux-Distributionen, deren glibc tcache unterstützt und aktiviert hat (CentOS 8, Ubuntu >= 17.10, Debian 10):
- Probieren Sie zuerst exploit_nss.py aus
- Wenn ein Fehler nicht mit glibc-tcache zusammenhängt, können Sie als Nächstes exploit_timestamp_race.c ausprobieren
Für Linux-Distributionen, deren glibc keine tcache-Unterstützung hat:
- Wenn das Ziel Debian 9, Ubuntu 16.04 oder Ubuntu 14.04 ist, versuchen Sie zuerst exploit_nss_xxx.py für die jeweilige Version
- Als Nächstes versuchen Sie exploit_defaults_mailer.py. Wenn Sie wissen, dass das sudo des Ziels mit --disable-root-mailer kompiliert wurde, können Sie diesen Exploit überspringen. Der Exploit versucht, das Root-Mailer-Flag aus der sudo-Binärdatei zu überprüfen. Die sudo-Berechtigung ist jedoch bei manchen Linux-Distributionen 4711 (-rws--x--x), was eine Überprüfung auf dem Zielsystem unmöglich macht. (Bekannt funktionierendes Betriebssystem ist CentOS 6 und 7)
- Versuchen Sie zuletzt exploit_userspec.py