Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2021-4034 — Analicé la vulnerabilidad conocida popularmente como Pwnkit con fines educativos y escribí un PoC para ella. Utilícese estrictamente con fines educativos. | Kitploit
Herramientas/GitHubGitHub/eshkoreee/cve-2021-4034
Escalada de PrivilegiosExplotaciónAprendizaje y EducaciónDesarrollo de PayloadsExplotación de Binarios
GitHubeshkoreee/cve-2021-4034

CVE-2021-4034

Analicé la vulnerabilidad conocida popularmente como Pwnkit con fines educativos y escribí un PoC para ella. Utilícese estrictamente con fines educativos.

Ver Repositorio
1hace 2 díasAún no revisado

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

CVE-2021-4034 (PwnKit) PoC

AVISO LEGAL: Este material se proporciona exclusivamente con fines educativos. El uso del exploit sin el consentimiento por escrito del propietario del sistema objetivo es poco ético y puede ser perseguido por la ley.

Instalación y ejecución

  1. Clone el repositorio en la máquina objetivo.
  2. Otorgue permisos de ejecución al script de compilación: chmod +x build.sh.
  3. Ejecute la compilación: ./build.sh.
  4. Ejecute el exploit: ./mls_envp. Obtendrá acceso root.

Esencia de la vulnerabilidad

En la versión vulnerable de polkit (0.105), el autor, David Zeuthen, asumía que pkexec siempre se invocaría desde la consola. Partía de la premisa de que argc (el número de argumentos) siempre es mayor que 1, ya que argv[0] es el nombre del propio programa. Sin embargo, pkexec puede invocarse mediante la llamada al sistema execve, pasando un array de argumentos vacío. Debido a esto, la lógica del programa se rompe.

1. Desbordamiento del array

En el código de pkexec está codificada de forma rígida la expectativa de que argv contiene al menos un elemento. Cuando argc es igual a 0, el programa aun así intenta acceder a argv[1]. Esto provoca un desbordamiento del array argv y la lectura del primer elemento del array envp (variables de entorno). En nuestro caso, allí se encuentra la cadena "exp_exe".

2. Elusión de la comprobación de PATH

pkexec intenta encontrar el programa exp_exe mediante la función g_find_program_in_path. Para la búsqueda utiliza la variable PATH. Sustituimos PATH por GCONV_PATH=.. Como resultado, pkexec encuentra el archivo señuelo exp_exe en nuestra carpeta local y devuelve la ruta GCONV_PATH=./exp_exe. Debido al fallo con argc, esta ruta se escribe de vuelta en envp[0], «legalizando» la variable GCONV_PATH.

3. Carga de una biblioteca maliciosa

Antes de ejecutar el programa, pkexec comprueba las variables de entorno (incluida SHELL). Pasamos un shell inexistente (SHELL=xyz) para provocar un error. Al mostrar el error se invoca log_message, que utiliza los mecanismos de glibc. Glibc examina la variable CHARSET=bohemcavanna y, al no encontrar un convertidor estándar, recurre al directorio indicado en GCONV_PATH (el que hemos introducido). Allí lee el archivo gconv-modules, carga nuestra biblioteca exploit.so y ejecuta el código que contiene con privilegios de root.

Descargar herramienta