
Este repositório mostra como explorar a vulnerabilidade CVE-2021-4034.
Este repositório contém o código-fonte para demonstrar a exploração da vulnerabilidade CVE-2021-4034, também conhecida como PwnKit, descoberta em pkexec (parte do pacote Polkit). Esta falha permite uma escalada local de privilégios para root através do uso de variáveis de ambiente maliciosas.
Este código é fornecido apenas para fins educacionais e de pesquisa. Não deve ser utilizado em sistemas de produção nem sem autorização expressa. O uso indevido pode ser ilegal e vai contra os termos de uso do autor.
A vulnerabilidade ocorre quando pkexec é executado sem argumentos, ou seja, argc == 0. Neste caso, pkexec tenta acessar argv[1] sem verificar se argv[0] existe, fazendo com que leia a partir de envp[0]. Isso permite ao atacante:
GCONV_PATH..so arbitrária para executar código como root.O exploit aproveita essa condição para carregar uma biblioteca maliciosa que abre um shell como usuário root.
cve-2021-4034.c: Código-fonte do exploit que invoca pkexec com argv[] = {NULL} e variáveis de ambiente modificadas.pwnkit.c: Código-fonte da biblioteca maliciosa que abre um shell como 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