Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2021-4034 — Analisei a vulnerabilidade conhecida popularmente como Pwnkit para fins educacionais e escrevi um PoC para ela. Use estritamente para fins educacionais. | Kitploit
Ferramentas/GitHubGitHub/eshkoreee/cve-2021-4034
Escalada de PrivilégiosExploraçãoAprendizado e EducaçãoDesenvolvimento de PayloadsExploração de Binários
GitHubeshkoreee/cve-2021-4034

CVE-2021-4034

Analisei a vulnerabilidade conhecida popularmente como Pwnkit para fins educacionais e escrevi um PoC para ela. Use estritamente para fins educacionais.

Ver Repositório
1há 2 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2021-4034 (PwnKit) PoC

AVISO LEGAL: Este material é fornecido exclusivamente para fins educacionais. O uso do exploit sem o consentimento por escrito do proprietário do sistema alvo é antiético e pode ser passível de ação legal.

Instalação e execução

  1. Clone o repositório na máquina alvo.
  2. Conceda permissão de execução ao script de compilação: chmod +x build.sh.
  3. Execute a compilação: ./build.sh.
  4. Execute o exploit: ./mls_envp. Você obterá acesso root.

Essência da vulnerabilidade

Na versão vulnerável do polkit (0.105), o autor, David Zeuthen, presumiu que o pkexec sempre seria chamado a partir do console. Ele partiu do princípio de que argc (número de argumentos) seria sempre maior que 1, já que argv[0] é o nome do próprio programa. No entanto, o pkexec pode ser chamado através da chamada de sistema execve, passando um array de argumentos vazio. Por causa disso, a lógica do programa é quebrada.

1. Estouro de limites do array

No código do pkexec está fixamente embutida a expectativa de que argv contenha pelo menos um elemento. Quando argc é igual a 0, o programa ainda tenta acessar argv[1]. Isso leva ao estouro dos limites do array argv e à leitura do primeiro elemento do array envp (variáveis de ambiente). No nosso caso, ali está a string "exp_exe".

2. Contorno da verificação de PATH

O pkexec tenta encontrar o programa exp_exe usando a função g_find_program_in_path. Para a busca, ela utiliza a variável PATH. Substituímos PATH por GCONV_PATH=.. Como resultado, o pkexec encontra o arquivo vazio exp_exe na nossa pasta local e retorna o caminho GCONV_PATH=./exp_exe. Devido ao bug com argc, esse caminho é gravado de volta em envp[0], "legalizando" a variável GCONV_PATH.

3. Carregamento de biblioteca maliciosa

Antes de executar o programa, o pkexec verifica as variáveis de ambiente (incluindo SHELL). Passamos um shell inexistente (SHELL=xyz) para provocar um erro. Ao exibir o erro, é chamada a função log_message, que utiliza os mecanismos da glibc. A glibc observa a variável CHARSET=bohemcavanna e, não encontrando o conversor padrão, recorre ao diretório indicado em GCONV_PATH (que nós injetamos). Lá ela lê o arquivo gconv-modules, carrega nossa biblioteca exploit.so e executa o código dentro dela com privilégios de root.

Baixar ferramenta