Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Dockerコンテナからホストのrootを取る話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
narupi
September 29, 2019
Technology
9
2.6k
Dockerコンテナからホストのrootを取る話
Vulnerable Docker VMを利用してDooD環境のコンテナからホストのrootを取る話。
モブセキュリティLT第一回(2019/09/29)で利用。
narupi
September 29, 2019
Tweet
Share
More Decks by narupi
See All by narupi
VulnerableDockerVM Writeup
narupi
0
210
Other Decks in Technology
See All in Technology
(技術的には)社内システムもOKなブラウザエージェントを作ってみた!
har1101
0
380
22nd ACRi Webinar - NTT Kawahara-san's slide
nao_sumikawa
0
120
今こそ学びたいKubernetesネットワーク ~CNIが繋ぐNWとプラットフォームの「フラッと」な対話
logica0419
5
610
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
640
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
93k
プロポーザルに込める段取り八分
shoheimitani
1
720
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
200
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
230
Azure Copilot Migration Agent / #jazug
koudaiii
1
110
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
110
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
560
AWS Network Firewall Proxyを触ってみた
nagisa53
1
250
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
100
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
240
Site-Speed That Sticks
csswizardry
13
1.1k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
81
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
66
37k
The untapped power of vector embeddings
frankvandijk
1
1.6k
Docker and Python
trallard
47
3.7k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
280
Transcript
Dockerコンテナからホストの rootを取る話 2019/09/29 narupi(@ei1528)
自己紹介 narupi Twitter : @ei1528 CTFをしている(Forensicが好き)
動機 最近Dockerにムカついたので破壊したくなった
注意事項 ここで得た技術得た知識/技術の悪用厳禁 検証は自己責任 管理下以外のサーバ/アプリケーションに対して攻撃を行わない 初心者なので内容に間違いがある場合がある
検証環境 NotSoSecureが提供しているVulnerable Docker VM を利用 (https://www.notsosecure.com/vulnerable-docker-vm/ ) CTF形式
コンテナに侵入する 入り口はWordPress WordPressが動いているコンテナには簡単に侵入できる
コンテナ間を移動する nmapを利用してコンテナが利用しているIP帯に対してスキャンを行う 他のコンテナに侵入するとdocker.sockが見える (コンテナで実行しているサービスについて調べると、起動時にマウントする必要があるらしい)
docker.sockについて UNIXドメインソケット(プロセス間でデータを通信するためのもの) マウントしたdocker.sockに書き込み権限が与えられているとまずい dockerのvolumeマウントはデフォルトでread write権限となる(オプションで:roをつけることで read onlyになる)
DockerCLI DockerEngine API Docker Daemon Unixソケット
docker.sockがマウントされていると コンテナ内からホストのDockerDaemonにアクセスできる つまりコンテナ内で実行したDockerコマンドはホスト側で実行される DockerCLI DockerEngine API Docker Daemon
Unixソケット ホスト コンテナ DockerCLI Unixソケット
コンテナからホストのrootを取る dockerコマンドがホストで実行できる状況の場合、以下の手順でホストのrootを取ることができ る 1. コンテナ内にdockerをインストールする(意図的にdocker daemonを共有している場合はインス トールされているはず) 2. ホストのルートディレクトリをマウントしたコンテナを起動する(例:docker
run –it –v /:/HOGE ubuntu:latest bash) 3. マウントしたディレクトリHOGEをルートディレクトリに変更する(chroot /HOGE)
Dockerは安全? 基本的にはDockerを利用することでアプリケーションに脆弱性があった場合でも、影響範囲をコ ンテナ内に留める事ができる マウントには気をつける必要がある(ホストへのアクセスを許容してしまうリスク) 不明なdocker imageは利用しない(悪意のあるスクリプトが埋め込まれているリスク)
Docker19.03から非rootユーザでもdockerd(デーモン)を実行できるようになった (Rootlessモード)
余談(DinDとDooD) コンテナ内からコンテナを操作する方法として、Docker in Docker(DinD)とDocker outside of Docker(DooD)がある DinDはDocker本体の開発を効率化されるために生み出された手法らしい
(http://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/) DooDはDockerの管理をコンテナから行えるようにする手法らしい (CI用途などで利用されるらしい)
DinD DinD対応イメージを利用してコンテナを作る デフォルトの権限ではDockerデーモンを起動できないのでprivilegedオプションを利用する必要が ある(すべてのデバイスへのアクセスが可能になる) 暗黙的にData Volumeが利用されコンテナとホストのリソースを共有する
ホストとコンテナが階層化されるのでお互いに見えない
DooD ホストのDocker.sockをマウントすることでDockerデーモンを共有する ホスト側のDockerをコンテナ側から実行する コンテナからホスト側が見える DinDのようにゴミが溜まることはない
まとめ そもそもコンテナに侵入されないようにしよう ボリュームのマウントには気をつけよう
参考 https://oioki.me/2017/09/vulnerable-docker-vm/ https://darksh3ll.info/index.php/18-write-up-vulnerable-docker-vm-by-notsosecure-com https://rimuru.lunanet.gr.jp/notes/post/how-to-root-from-inside-container/ https://www.lvh.io/posts/dont-expose-the-docker-socket-not-even-to-a-container.html
https://qiita.com/sugiyasu-qr/items/85a1bedb6458d4573407 https://blog.nijohando.jp/post/docker-in-docker-docker-outside-of-docker/ https://qiita.com/toto1310/items/64d7db407d31fd802f9c