
PoC di CVE-2021-4034 (PwnKit) per scopi di formazione personale.
Questo repository contiene un Proof of Concept per CVE-2021-4034, noto anche come PwnKit. È stato sviluppato solo per scopi di formazione personale e didattici. Utilizzalo solo in ambienti di tua proprietà o per i quali hai esplicita autorizzazione.
Per compilare l'exploit hai bisogno di:
pkexec è un'utility di Polkit che consente a un utente autorizzato di eseguire programmi come un altro utente, tipicamente con privilegi amministrativi, simile a sudo. CVE-2021-4034 è una vulnerabilità di corruzione della memoria che interessa questo binario. Il problema deriva da una gestione impropria degli argomenti quando argc == 0. Ciò provoca una scrittura fuori dai limiti che permette a un attaccante di controllare il primo puntatore alle variabili d'ambiente in memoria. In determinate condizioni, consente a un utente locale non privilegiato di elevare i propri privilegi a root. Ulteriori dettagli sono disponibili qui: https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt
L'exploit finale è completamente autonomo e non richiede librerie esterne o binari aggiuntivi.
Distribuzione: Ubuntu 20.04 LTS
Versione del kernel: 5.4.0-42-generic
Versione di Polkit: 0.105-26ubuntu1 (non corretta)
La shell inclusa (shell.asm) è scritta in assembly x86_64 per Linux. Viene compilata in un oggetto condiviso (.so) e incorporata nell'exploit. Opzionalmente, la shell può essere implementata in C per una maggiore portabilità tra distribuzioni, ma la versione ASM viene mantenuta per scopi didattici e per praticare la programmazione assembly a basso livello.
Nota: Questo exploit e questa shell sono compatibili solo con ambienti Linux x86_64. L'uso su un'architettura diversa (ad esempio ARM o i386) non funzionerà.
Compila:
make
Esegui:
./exploit
Pulisci:
make clean
Questa vulnerabilità è stata corretta a gennaio 2022. Se stai eseguendo una versione non corretta di policykit-1, il tuo sistema potrebbe essere vulnerabile. Come mitigazione temporanea, puoi rimuovere il bit SUID da pkexec:
chmod -s /bin/pkexec