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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
越境する組織づくり ─ 多様性を前提にしたチームビルディングとリードの実践知
kido_engineer
2
180
Claude Code Skills 勉強会 (DevelersIO向けに調整済み) / claude code skills for devio
masahirokawahara
1
14k
JAWS FESTA 2025でリリースしたほぼリアルタイム文字起こし/翻訳機能の構成について
naoki8408
1
290
20260311 ビジネスSWG活動報告(デジタルアイデンティティ人材育成推進WG Ph2 活動報告会)
oidfj
0
250
SRE NEXT 2026 CfP レビュアーが語る聞きたくなるプロポーザルとは?
yutakawasaki0911
0
230
ナレッジワークのご紹介(第88回情報処理学会 )
kworkdev
PRO
0
180
楽しく学ぼう!コミュニティ入門 AWSと人が つむいできたストーリー
hiroramos4
PRO
1
190
クラウド × シリコンの Mashup - AWS チップ開発で広がる AI 基盤の選択肢
htokoyo
2
180
堅牢.py#2 LT資料
t3tra
0
130
Claude Code 2026年 最新アップデート
oikon48
10
7.6k
JAWS DAYS 2026 ExaWizards_20260307
exawizards
0
410
Scrumは歪む — 組織設計の原理原則
dashi
0
110
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
310
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.4k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
140
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
170
4 Signs Your Business is Dying
shpigford
187
22k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.7k
AI: The stuff that nobody shows you
jnunemaker
PRO
3
370
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
140
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
68
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
140
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