
PoC de CVE-2021-4034 (PwnKit) para fines de entrenamiento personal.
Este repositorio contiene una Prueba de Concepto para CVE-2021-4034, también conocido como PwnKit. Fue desarrollado únicamente con fines de formación personal y educativos. Úselo solo en entornos que le pertenezcan o en los que esté explícitamente autorizado para realizar pruebas.
Para compilar el exploit necesitas:
pkexec es una utilidad de Polkit que permite a un usuario autorizado ejecutar programas como otro usuario, normalmente con privilegios administrativos, similar a sudo. CVE-2021-4034 es una vulnerabilidad de corrupción de memoria que afecta a este binario. El problema proviene de un manejo incorrecto de los argumentos cuando argc == 0. Esto resulta en una escritura fuera de los límites que permite a un atacante controlar el primer puntero de variable de entorno en la memoria. Bajo ciertas condiciones, permite a un usuario local sin privilegios escalar privilegios a root. Más detalles disponibles aquí: https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt
El exploit final es completamente autónomo y no requiere bibliotecas externas ni binarios adicionales.
El shell incluido (shell.asm) está escrito en ensamblador x86_64 para Linux. Se compila en un objeto compartido (.so) y se incrusta en el exploit.
Opcionalmente, el shell puede implementarse en C para mayor portabilidad entre distribuciones, pero la versión ASM se conserva con fines de aprendizaje y para practicar la programación en ensamblador de bajo nivel.
Nota: Este exploit y shell solo son compatibles con entornos Linux x86_64. El uso de una arquitectura diferente (por ejemplo, ARM o i386) no funcionará.
Compilar:
make
Ejecutar:
./exploit
Limpiar:
make clean
Esta vulnerabilidad fue parcheada en enero de 2022.
Si estás ejecutando una versión sin parche de policykit-1, tu sistema puede ser vulnerable. Como mitigación temporal, puedes eliminar el bit SUID de pkexec:
chmod -s /bin/pkexec