
Este repositorio muestra cómo explotar la vulnerabilidad CVE-2021-4034.
Este repositorio contiene el código fuente para demostrar la explotación de la vulnerabilidad CVE-2021-4034, también conocida como PwnKit, descubierta en pkexec (parte del paquete Polkit). Esta falla permite una escalada local de privilegios a root mediante el uso de variables de entorno maliciosas.
Este código se proporciona únicamente con fines educativos y de investigación. No debe ser utilizado en sistemas en producción ni sin autorización expresa. El uso indebido puede ser ilegal y va en contra de los términos de uso del autor.
La vulnerabilidad se presenta cuando pkexec es ejecutado sin argumentos, es decir, argc == 0. En este caso, pkexec intenta acceder a argv[1] sin comprobar que argv[0] exista, lo que provoca que lea desde envp[0]. Esto permite al atacante:
GCONV_PATH..so arbitraria para ejecutar código como root.El exploit aprovecha esta condición para cargar una librería maliciosa que abre una shell como usuario root.
cve-2021-4034.c: Código fuente del exploit que invoca pkexec con argv[] = {NULL} y variables de entorno modificadas.pwnkit.c: Código fuente de la librería maliciosa que abre una shell como root.gcc -Wall -o cve-2021-4034 cve-2021-4034.c
gcc -Wall -shared -fPIC -o pwnkit.so pwnkit.c
mkdir GCONV_PATH=.
echo 'module UTF-8// PWNKIT// pwnkit 1' > gconv-modules
cp $(which true) GCONV_PATH=./pwnkit.so:.
./cve-2021-4034