
PoC di Polkit
PoC di Polkit
Policy Toolkit (o Polkit), da quando è stato lanciato nel 2009, consente a qualsiasi attaccante senza permessi di root di ottenere facilmente accesso amministrativo su qualsiasi sistema Linux con il pacchetto Polkit. Sfortunatamente (o no), è installato per impostazione predefinita nella maggior parte delle distribuzioni Linux. Il che ha reso questa vulnerabilità molto diffusa.
Fortunatamente (o no), questa vulnerabilità non può essere sfruttata da remoto, il che la rende una vulnerabilità di escalation dei privilegi locali (LPE).
Polkit fa parte della maggior parte dei sistemi di autorizzazione di Linux. Quando viene eseguita qualsiasi azione che richiede un permesso amministrativo, Polkit determina se si dispone dei permessi necessari per poter eseguire l'azione. È integrato in systemd (sostituto di init). In effetti, Systemd è conosciuto come "sudo di systemd", secondo THM.
Quando interagiamo con polkit possiamo usare pkexec (il programma che contiene la vulnerabilità Pwnkit). Ad esempio, quando proviamo a eseguire useradd con pkexec in una sessione GUI, appare una finestra che ci chiede le credenziali. In CLI possiamo ottenere qualcosa di simile:
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:
Ovviamente, Canonical ha già rilasciato versioni patchate di questo pacchetto nel gestore di pacchetti APT. Se in qualche distribuzione non sono state pubblicate versioni patchate, semplicemente si rimuove il bit SUID di pkexec.
sudo chmod 0777 'which pkexec'