
PoC für Polkit
PoC von Polkit
Policy Toolkit (oder Polkit) ermöglicht seit seiner Veröffentlichung im Jahr 2009 jedem Angreifer ohne Root-Rechte, auf jedem Linux-System mit dem Polkit-Paket einfach administrative Zugriffe zu erlangen. Leider (oder glücklicherweise) ist es standardmäßig auf den meisten Linux-Distributionen installiert. Dadurch ist diese Schwachstelle weit verbreitet.
Glücklicherweise (oder auch nicht) kann diese Schwachstelle nicht remote ausgenutzt werden, was sie zu einer lokalen Privilegieneskalations-Schwachstelle (LPE) macht.
Polkit ist Teil der meisten Linux-Autorisierungssysteme. Wenn eine Aktion ausgeführt wird, die administrative Berechtigungen erfordert, bestimmt Polkit, ob die erforderlichen Berechtigungen vorliegen, um die Aktion auszuführen. Es ist in systemd (dem Nachfolger von init) integriert. Tatsächlich wird systemd laut THM als „sudo von systemd" bezeichnet.
Wenn wir mit Polkit interagieren, können wir pkexec verwenden (das Programm, das die Schwachstelle Pwnkit enthält). Als Beispiel: Wenn wir versuchen, useradd mit pkexec in einer GUI-Sitzung auszuführen, erscheint ein Fenster, das nach Anmeldedaten fragt. In der CLI können wir etwas Ähnliches erhalten:
user@user:~$ pkexec useradd test1
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run '/usr/sbin/useradd' as the super user
Authenticating as: user,,, (user)
Password:
Offensichtlich hat Canonical bereits gepatchte Versionen dieses Pakets im APT-Paketmanager veröffentlicht. Falls in einer Distribution noch keine gepatchten Versionen veröffentlicht wurden, wird einfach das SUID-Bit von pkexec entfernt.
sudo chmod 0777 'which pkexec'