Abusing Docker Socket for Privilege Escalation

htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

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

マウントを介して

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

  • -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ホストファイルシステムにアクセスできます。

  • マウントする</dev/sda1>デバイスを見つけるためにホストでfdisk -lを実行します。

  • -v /tmp:/host -> 何らかの理由でホストのディレクトリをマウントすることしかできない場合、それをマウントして、マウントされたディレクトリにsuidを持つ/bin/bashを作成し、ホストから実行してrootに昇格します。

/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や他の設定ファイルを含むフォルダマウントできる場合、dockerコンテナ内でrootとしてそれらを変更し、ホストで悪用して権限を昇格することができます(例えば/etc/shadowを変更することによって)

コンテナからの脱出

Curl

このページでは、dockerフラグを使用して権限を昇格する方法について議論しました。curlコマンドを使用してこれらの方法を悪用する方法については、以下のページで見つけることができます:

pageAuthZ& AuthN - Docker Access Authorization Plugin
htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

Last updated