🐧Linux - Polkit Zeroday
PolicyKit ( polkit
) es un servicio de autorización en sistemas operativos basados en Linux que permite que el software del usuario y los componentes del sistema se comuniquen entre sí, si el software del usuario está autorizado para hacerlo. Para comprobar si el software del usuario está autorizado para esta instrucción, se pregunta a polkit
. Es posible establecer cómo se otorgan los permisos de forma predeterminada para cada usuario y aplicación.
Por ejemplo, para cada usuario, se puede establecer si la operación debe permitirse o prohibirse de forma general, o si se debe requerir autorización como administrador o como un usuario independiente con una validez única, limitada por proceso, limitada por sesión o ilimitada. Para usuarios individuales y grupos, las autorizaciones se pueden asignar individualmente.
Polkit trabaja con dos grupos de archivos.
Acciones/políticas (
/usr/share/polkit-1/actions
)Normas (
/usr/share/polkit-1/rules.d
)
Polkit también tiene reglas local authority
que se pueden usar para establecer o eliminar permisos adicionales para usuarios y grupos. Las reglas personalizadas se pueden colocar en el directorio /etc/polkit-1/localauthority/50-local.d
con la extensión de archivo .pkla
.
PolKit también viene con tres programas adicionales:
pkexec
- ejecuta un programa con los derechos de otro usuario o con derechos rootpkaction
- se puede utilizar para mostrar accionespkcheck
- esto se puede utilizar para verificar si un proceso está autorizado para una acción específica
La herramienta más interesante para nosotros, en este caso, es pkexec
porque realiza la misma tarea como sudo
y puede ejecutar un programa con los derechos de otro usuario o root.
En la herramienta pkexec
se encontró una vulnerabilidad de corrupción de memoria con el identificador CVE-2021-4034 , también conocida como Pwnkit y que también conduce a una escalada de privilegios. Esta vulnerabilidad también estuvo oculta durante más de diez años y nadie puede decir con precisión cuándo fue descubierta y explotada. Finalmente, en noviembre de 2021, esta vulnerabilidad fue publicada y corregida dos meses después.
Para explotar esta vulnerabilidad, necesitamos descargar un PoC y compilarlo en el propio sistema de destino o en una copia que hayamos hecho.
Una vez compilado el código, podemos ejecutarlo sin más. Tras la ejecución, pasamos del shell estándar (sh
) a Bash (bash
) y comprobamos los ID de los usuarios.
Caso práctico
Aumente los privilegios y envíe el contenido de flag.txt como respuesta.
Al acceder por SSH no nos encontramos ningún archivo relevante ni tiene permisos de ejecución en la máquina:
Tal y cómo hemos visto en la sección podríamos usar pkexec para ejecutar comandos en nombre de un usuario administrador, pero necesitamos la contraseña:
Encontramos que el usuario administrador es lab_adm. Vamos a usar el exploit para el CVE-2021-4034 que hemos visto en esta sección:
Nos descargamos el repo en local
Abrimos un servidor con python
Nos descargamos el archivo en la máquina objetivo
Compilamos el ejecutable
Ejecutamos el PoC
Tenemos una shell como root!
Última actualización