4.2 KiB
Dockerソケットを悪用して特権昇格を行う
{{#include ../../../banners/hacktricks-training.md}}
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
**を作成して、ホストから実行してルートに昇格します。
Note
/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
や設定ファイルを含む他のフォルダをマウントできる場合、コンテナ内からルートとしてそれらを変更し、ホストで悪用して特権を昇格させることができます(たとえば、/etc/shadow
を変更する)。
コンテナからの脱出
--privileged
-> このフラグを使用すると、コンテナからのすべての隔離を削除します。 特権コンテナからルートとして脱出する技術を確認してください。--cap-add=<CAPABILITY/ALL> [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]
-> 特権を昇格させるために能力を悪用するには、その能力をコンテナに付与し、エクスプロイトが機能するのを妨げる可能性のある他の保護方法を無効にします。
Curl
このページでは、Dockerフラグを使用して特権を昇格させる方法について説明しました。curlコマンドを使用してこれらの方法を悪用する方法を見つけることができます。
{{#include ../../../banners/hacktricks-training.md}}