Abusing Docker Socket for Privilege Escalation

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

가끔은 도커 소켓에 액세스만 있고 이를 사용하여 권한을 상승시키고 싶을 때가 있습니다. 일부 작업은 매우 의심스러울 수 있으며 피하고 싶을 수 있으므로 권한 상승에 유용한 다양한 플래그를 찾을 수 있습니다:

마운트를 통해

루트로 실행되는 컨테이너에서 파일 시스템의 다른 부분을 마운트하고 접근할 수 있습니다. 또한 마운트를 남용하여 컨테이너 내에서 권한을 상승시킬 수도 있습니다.

  • -v /:/host -> 호스트 파일 시스템을 컨테이너에 마운트하여 호스트 파일 시스템을 읽을 수 있습니다.

  • 호스트와 동일한 환경에서 컨테이너에 있지만 다른 방어 메커니즘을 비활성화하려면 다음과 같은 플래그를 사용할 수 있습니다:

  • --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 ** -> 이전 방법과 유사하지만 여기서는 장치 디스크를 마운트합니다. 그런 다음 컨테이너 내에서 mount /dev/sda1 /mnt를 실행하여 /mnt에서 호스트 파일 시스템에 액세스할 수 있습니다.

  • 호스트에서 fdisk -l을 실행하여 마운트할 </dev/sda1> 장치를 찾습니다.

  • -v /tmp:/host -> 호스트에서 특정 디렉토리만 마운트할 수 있는 경우 호스트 내에서 액세스할 수 있습니다. 마운트하고 마운트된 디렉토리에 suid가 있는 **/bin/bash**를 만들어 호스트에서 실행하여 루트로 상승할 수 있습니다.

아마도 /tmp 폴더를 마운트할 수 없을 수도 있지만 다른 쓰기 가능한 폴더를 마운트할 수 있습니다. find / -writable -type d 2>/dev/null를 사용하여 쓰기 가능한 디렉토리를 찾을 수 있습니다.

모든 리눅스 머신의 디렉토리가 suid 비트를 지원하지는 않습니다! suid 비트를 지원하는 디렉토리를 확인하려면 mount | grep -v "nosuid"를 실행하세요. 일반적으로 /dev/shm, /run, /proc, /sys/fs/cgroup/var/lib/lxcfs는 suid 비트를 지원하지 않습니다.

또한, /etc 또는 구성 파일을 포함하는 다른 폴더마운트할 수 있다면 도커 컨테이너에서 루트로 실행하여 호스트에서 남용하고 권한을 상승할 수 있습니다 (아마도 /etc/shadow 수정).

컨테이너에서 탈출

Curl

이 페이지에서는 도커 플래그를 사용하여 권한 상승하는 방법을 논의했으며, 이러한 방법을 사용하여 curl 명령을 사용하여 이러한 방법을 남용하는 방법을 찾을 수 있습니다:

pageAuthZ& AuthN - Docker Access Authorization Plugin
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

Last updated