Des conteneurs à l’hôte : Techniques d’élévation de privilèges dans Docker

Docker a révolutionné la façon dont nous déployons des applications, mais il a également introduit de nouveaux vecteurs d’attaque. L’une des menaces les plus critiques dans un environnement conteneurisé est l’évasion de conteneur (Container Escape), qui permet à un attaquant de passer d’un conteneur isolé à la machine hôte. Cet article explore les techniques courantes d’élévation de privilèges dans Docker.

Imaginez-vous en tant que testeur d’intrusion, en mission sur un site web d’apparence classique, sécurisé en apparence mais présentant une vulnérabilité que vous avez réussi à exploiter. Vous vous êtes connecté avec succès via un shell web – un accès limité, certes, mais suffisant pour commencer à explorer le système.

À ce stade, une question vous obsède : comment obtenir le contrôle total ? En y regardant de plus près, vous comprenez que votre accès actuel est confiné dans un conteneur Docker. Votre cible est à portée de main, mais pour mener à bien votre mission, vous avez besoin des privilèges root sur le serveur principal, l’hôte. Le défi est donc clair : s’échapper du conteneur et élever vos privilèges pour accéder au système hôte. Alors, c’est parti !

Commencons par lister les outils qui vous permettrons de faire du docker escape de manière automatique.

PARTIE 1 : OUTILS AUTOMATISÉS

a. Deepce

Cet outil propose non seulement l’analyse Nmap du conteneur et de l’hôte, le vidage du fichier /etc/shadow et la création d’utilisateurs root, mais aussi de nombreuses autres options pour forcer l’élévation de privilèges lors de tests d’intrusion Docker.

https://github.com/stealthcopter/deepce

b. Docker-escape-tool

Cet outil offre un ensemble d’options puissantes pour l’élévation de privilèges Docker, notamment : la détection des sockets Docker montés (UNIX et réseau sur les ports 2375/2376), l’accès aux périphériques montables, l’exploitation des vulnérabilités CVE-2019-5736, CVE-2019-14271 et CVE-2020-15257, ainsi que des techniques de contournement basées sur les capacités (telles que CAP_SYS_ADMIN et CAP_SYS_MODULE). Il permet également une analyse rapide des ports sur les interfaces réseau partagées avec l’hôte et l’énumération des conteneurs sur le même réseau Docker afin d’effectuer un pivotement.

https://github.com/PercussiveElbow/docker-escape-tool

c. Linpeas

LinPEAS est un outil d’audit de sécurité puissant capable également d’énumérer les conteneurs Docker. Outre sa fonctionnalité principale de détection des vulnérabilités et des failles de sécurité sur les systèmes Linux, LinPEAS permet d’identifier les conteneurs en cours d’exécution et d’analyser leur configuration. Il s’avère ainsi particulièrement utile pour les testeurs d’intrusion cherchant à comprendre la surface d’attaque dans un environnement conteneurisé.

https://github.com/peass-ng/PEASS-ng/tree/master/linPEAS

d. CDK

Cet outil est extrêmement utile pour énumérer le conteneur dans lequel vous vous trouvez et peut même tenter une sortie automatique, facilitant ainsi l’exploration et l’élévation de privilèges dans les environnements Docker.

https://github.com/cdk-team/CDK

e. amicontained

Cet outil d’introspection de conteneurs permet d’identifier l’environnement d’exécution utilisé ainsi que les fonctionnalités disponibles, offrant une analyse approfondie de l’environnement d’exécution pour orienter les techniques d’escalade de privilèges.

https://github.com/genuinetools/amicontained

f.grype

Ce scanner de vulnérabilités pour images de conteneurs et systèmes de fichiers s’installe facilement sous forme de fichier binaire. Il fonctionne avec Syft, un outil puissant d’analyse de nomenclature logicielle (SBOM) permettant une analyse approfondie des composants des conteneurs et des fichiers.

https://github.com/anchore/grype

PARTIE 2 : ARTICLES D’ÉVASION DOCKER

a. Hack-Tricks

Un excellent article qui présente les meilleures techniques connues pour permettre à Docker de s’échapper de notre conteneur.

https://book.hacktricks.xyz/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation

b. WizardCybers

Une autre pépite d’or où elle nous montre comment exploiter une faille permettant d’injecter du code dans un processus et d’obtenir un accès shell à la machine hôte.

c. Cybereason

Ce blog nous montre comment exploiter chacune des capacités qu’un conteneur peut fournir lors de son initialisation.

https://www.cybereason.com/blog/container-escape-all-you-need-is-cap-capabilities

d. Payload All The Things

https://swisskyrepo.github.io/PayloadsAllTheThings/Methodology%20and%20Resources/Container%20-%20Docker%20Pentest

e. panoptica

https://www.panoptica.app/research/7-ways-to-escape-a-container

Voilà, vous avez maintenant une vue d’ensemble des techniques permettant de migrer manuellement d’un conteneur Docker vers l’hôte. Que vous souhaitiez approfondir vos connaissances ou perfectionner vos compétences en tests d’intrusion, explorer ces méthodes vous offrira un avantage considérable. N’oubliez pas que l’univers des conteneurs est vaste et en constante évolution ; restez donc curieux et continuez d’expérimenter. Après tout, chaque conteneur recèle des secrets à découvrir !

Comment prévenir l’évasion de conteneur

1. Ne jamais utiliser –privileged

N’utilisez ce drapeau que si c’est absolument nécessaire et dans un environnement strictement contrôlé.

2. Utiliser des utilisateurs non-root

Utilisez toujours l’instruction USER dans votre Dockerfile pour exécuter vos applications avec un utilisateur à privilèges restreints.

3. Restreindre l’accès au socket Docker

Évitez de monter /var/run/docker.sock. Si vous devez le faire, utilisez des proxies de sécurité ou des outils comme tini pour limiter les commandes autorisées.

4. Utiliser des profils de sécurité

Activez et configurez les profils AppArmor, SELinux ou Seccomp pour restreindre les appels système que le conteneur peut effectuer.

5. Mettre à jour le noyau et Docker

De nombreuses évasions exploitent des failles du noyau Linux. Maintenir le système hôte à jour est votre première ligne de défense.

Conclusion

L’isolation des conteneurs n’est pas parfaite par défaut. Elle repose sur une configuration minutieuse. Pour un Red Teamer, comprendre ces points faibles est essentiel pour démontrer l’impact d’une mauvaise configuration. Pour un administrateur, appliquer le principe du moindre privilège est la seule solution pour garantir la sécurité de l’infrastructure hôte.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *