
Prueba de concepto para cve-2021-4034
PoC para cve-2021-4034
Basado en el PoC de https://haxx.in: https://haxx.in/files/blasty-vs-pkexec.c. Probablemente él es https://github.com/blasty?! No lo sé.
Con una pequeña ayuda de https://github.com/daimoniac
gcc -Wall cve-2021-4034.c -o cve-2021-4034-exploit
¡Cambia la variable hosts en asses_CVE-2021-4034.yml a tu caso de uso!
ansible-playbook -i </path/to/inventory.yml> </path/to/playbooks/>asses_CVE-2021-4034.yml
El playbook copia el exploit al host, lo ejecuta y evalúa whoami en múltiples ocasiones y comprueba si "root" es el valor de retorno del exploit.
En los hosts donde la tarea Check result of privilege escalation falla, la escalada de privilegios fue exitosa. En el resumen del play, los hosts que no tienen failed=0 son vulnerables.
¿En el fondo? No tengo idea. Probablemente mezclas extrañas de memoria.
Lo esencial para la operabilidad de este playbook anbible es https://github.com/mike-artemis/cve-2021-4034/blob/main/cve-2021-4034.c#L50. El exploit simple de https://haxx.in/files/blasty-vs-pkexec.c solo abre un shell root y el playbook de ansible se queda atascado en él. Cambiar el payload del exploit a
" static char *a_argv[] = { \"bash\", \"-c\", \"whoami\", NULL };\n"
devuelve el usuario actual. El playbook comprueba el usuario para la escalada de privilegios y falla el playbook si ocurrió.