hacktricks/linux-hardening/privilege-escalation/docker-security/abusing-docker-socket-for-privilege-escalation.md
2024-02-11 01:46:25 +00:00

5.9 KiB

Wykorzystywanie gniazda Docker do eskalacji uprawnień

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Czasami masz dostęp do gniazda Docker i chcesz go wykorzystać do eskalacji uprawnień. Niektóre działania mogą być podejrzane i możesz chcieć ich uniknąć, dlatego tutaj znajdziesz różne flagi, które mogą być przydatne do eskalacji uprawnień:

Za pomocą montowania

Możesz zamontować różne części systemu plików w kontenerze działającym jako root i uzyskać do nich dostęp.
Możesz również wykorzystać montowanie do eskalacji uprawnień wewnątrz kontenera.

  • -v /:/host -> Zamontuj system plików hosta w kontenerze, dzięki czemu możesz odczytywać system plików hosta.
  • Jeśli chcesz czuć się jak na hoście, ale być w kontenerze, możesz wyłączyć inne mechanizmy obronne, używając flag takich jak:
  • --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 ** -> To jest podobne do poprzedniej metody, ale tutaj montujemy dysk urządzenia. Następnie w kontenerze uruchom polecenie mount /dev/sda1 /mnt i będziesz mógł uzyskać dostęp do systemu plików hosta w /mnt
  • Uruchom polecenie fdisk -l na hoście, aby znaleźć urządzenie </dev/sda1>, które można zamontować
  • -v /tmp:/host -> Jeśli z jakiegoś powodu możesz tylko zamontować pewien katalog z hosta i masz dostęp wewnątrz hosta. Zamontuj go i utwórz /bin/bash z suid w zamontowanym katalogu, aby można go było wykonać z hosta i eskalować uprawnienia do roota.

{% hint style="info" %} Zwróć uwagę, że być może nie możesz zamontować folderu /tmp, ale możesz zamontować inny zapisywalny folder. Możesz znaleźć zapisywalne katalogi, używając polecenia: find / -writable -type d 2>/dev/null

Zwróć uwagę, że nie wszystkie katalogi w maszynie Linux będą obsługiwać bit suid! Aby sprawdzić, które katalogi obsługują bit suid, uruchom polecenie mount | grep -v "nosuid". Na przykład zazwyczaj /dev/shm, /run, /proc, /sys/fs/cgroup i /var/lib/lxcfs nie obsługują bitu suid.

Zwróć również uwagę, że jeśli możesz zamontować /etc lub dowolny inny folder zawierający pliki konfiguracyjne, możesz je zmienić z kontenera Docker jako root, aby wykorzystać je na hoście i eskalować uprawnienia (może zmieniając /etc/shadow) {% endhint %}

Ucieczka z kontenera

Curl

Na tej stronie omówiliśmy sposoby eskalacji uprawnień za pomocą flag dockerowych, możesz znaleźć sposoby wykorzystania tych metod za pomocą polecenia curl na stronie:

{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %} authz-and-authn-docker-access-authorization-plugin.md {% endcontent-ref %}

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: