Abusing Docker Socket for Privilege Escalation

Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Il y a des occasions où vous avez simplement accès au socket docker et vous souhaitez l'utiliser pour élever les privilèges. Certaines actions peuvent être très suspectes et vous voudrez peut-être les éviter, donc ici vous pouvez trouver différents drapeaux qui peuvent être utiles pour élever les privilèges :

Via mount

Vous pouvez monter différentes parties du système de fichiers dans un conteneur exécuté en tant que root et y accéder. Vous pourriez également abuser d'un montage pour élever les privilèges à l'intérieur du conteneur.

  • -v /:/host -> Montez le système de fichiers de l'hôte dans le conteneur pour pouvoir lire le système de fichiers de l'hôte.

  • Si vous voulez vous sentir comme si vous étiez sur l'hôte tout en étant dans le conteneur, vous pourriez désactiver d'autres mécanismes de défense en utilisant des drapeaux comme :

  • --privileged

  • --cap-add=ALL

  • --security-opt apparmor=unconfined

  • --security-opt seccomp=unconfined

  • -security-opt label:disable

  • --pid=host

  • --userns=host

  • --uts=host

  • --cgroupns=host

  • **--device=/dev/sda1 --cap-add=SYS_ADMIN --security-opt apparmor=unconfined ** -> C'est similaire à la méthode précédente, mais ici nous montons le disque du périphérique. Ensuite, dans le conteneur exécutez mount /dev/sda1 /mnt et vous pouvez accéder au système de fichiers de l'hôte dans /mnt

  • Exécutez fdisk -l sur l'hôte pour trouver le périphérique </dev/sda1> à monter

  • -v /tmp:/host -> Si pour une raison quelconque vous pouvez juste monter un répertoire de l'hôte et que vous y avez accès. Montez-le et créez un /bin/bash avec suid dans le répertoire monté afin que vous puissiez l'exécuter depuis l'hôte et passer à root.

Notez que peut-être vous ne pouvez pas monter le dossier /tmp mais vous pouvez monter un dossier inscriptible différent. Vous pouvez trouver des répertoires inscriptibles en utilisant : find / -writable -type d 2>/dev/null

Notez que tous les répertoires d'une machine linux ne supporteront pas le bit suid ! Pour vérifier quels répertoires supportent le bit suid, exécutez mount | grep -v "nosuid" Par exemple, habituellement /dev/shm , /run , /proc , /sys/fs/cgroup et /var/lib/lxcfs ne supportent pas le bit suid.

Notez également que si vous pouvez monter /etc ou tout autre dossier contenant des fichiers de configuration, vous pouvez les modifier depuis le conteneur docker en tant que root afin de les abuser sur l'hôte et élever les privilèges (peut-être en modifiant /etc/shadow)

S'échapper du conteneur

Curl

Dans cette page, nous avons discuté des moyens d'élever les privilèges en utilisant des drapeaux docker, vous pouvez trouver des moyens d'abuser de ces méthodes en utilisant la commande curl dans la page :

pageAuthZ& AuthN - Docker Access Authorization Plugin
Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Dernière mise à jour