Abusing Docker Socket for Privilege Escalation

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する: HackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポートする

Dockerソケットにアクセスできる場合があり、それを使用して特権を昇格させたい場合があります。いくつかのアクションは非常に疑わしい可能性があるため、避けたい場合があります。ここでは、特権を昇格させるのに役立つさまざまなフラグを見つけることができます。

マウントを介して

ルートとして実行されているコンテナ内でファイルシステムの異なる部分をマウントし、それにアクセスできます。 マウントを悪用してコンテナ内で特権を昇格させることもできます。

  • -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**を作成して、ホストから実行してrootに昇格できます。

おそらく/tmpフォルダをマウントできないかもしれませんが、異なる書き込み可能なフォルダをマウントできる場合があります。書き込み可能なディレクトリを見つけるには、find / -writable -type d 2>/dev/nullを使用します。

Linuxマシンのすべてのディレクトリがsuidビットをサポートするわけではありません! suidビットをサポートするディレクトリを確認するには、mount | grep -v "nosuid"を実行します。たとえば、通常/dev/shm/run/proc/sys/fs/cgroup、および/var/lib/lxcfsはsuidビットをサポートしていません。

また、/etcや設定ファイルを含む他のフォルダマウントできる場合、コンテナ内でrootとしてそれらを変更し、ホストで悪用して特権を昇格させることができます(たとえば、/etc/shadowを変更する)。

コンテナからの脱出

Curl

このページでは、dockerフラグを使用して特権を昇格させる方法について説明しました。curlコマンドを使用してこれらの方法を悪用する方法を見つけることができます。

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する: HackTricks Training GCP Red Team Expert (GRTE)

HackTricksをサポートする

Last updated