19
Docker をををを OS ををををををををををををををを Slack bot ををををを

Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

Embed Size (px)

Citation preview

Page 1: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話

Page 2: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

自己紹介

• IS科 3回生•自然言語処理研究室• 自然言語処理,機械学習,深層学習

•好き• C++,Python• Vim• 競技プログラミング

•興味あり• 人工知能• CI/CD, DevOps• 自動化

2

Page 3: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

3

Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話

Page 4: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

4

Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話

Page 5: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

Dockerとは•コンテナ型仮想化を行うソフトウェア• 2013年に登場• Go言語で書かれている• コンテナとは仮想 OSのこと• 一台のマシンで複数の OSが動作する• Virtual Boxなどの仮想マシンとは少し違う

5

Page 6: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

Dockerとは

6

ベッド

ベッド

ベッド

トイレ風呂

キッチン

一軒家(物理マシン )

賃貸マンション(仮想マシン )

シェアハウス(コンテナ )

*参考 : Docker実戦活用ガイド (マイナビ出版 )

Page 7: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

Dockerとは

コンテナ 仮想マシン

OSの起動 速い 遅い

リソース消費 少ない 多い

OSの種類 Linuxのみ なんでも

7

コンテナ (Docker)と仮想マシン (Virtual Box等 )の比較

*参考 : Docker実戦活用ガイド (マイナビ出版 )

Page 8: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

8

Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話

Page 9: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

9

Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話

Page 10: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

OSコマンドインジェクションとは•ユーザからの入力を受け付けるWebサイトでプログラムのパラメータに OSに対するコマンドを紛れさせて不正操作する攻撃

10

不正なコマンド

クラッカー 脆弱性のあるWebサーバ

不正操作

情報漏洩

Page 11: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

OSコマンドインジェクションとは•任意コマンドを実行されるのは重大な脆弱性• パスワードの漏洩

• cat /etc/passwd• 秘密鍵の漏洩

• cat ~/.ssh/id_rsa

• サーバのデータ全消し• rm –rf /

11

Page 12: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

12

Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話

Page 13: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

13

Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話

Page 14: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

Slack botとは• Slackは皆さんお馴染みのチャットツール• botとは機械による自動発言システム• サービスから提供されている APIを叩いて作る• 今回は Python製の slackhq/python-rtmbotというFrameworkを使った

14

Page 15: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

Slack botとは•ソースコード• https://github.com/odanado/slackbot-os-com

mand-injection

15

OSコマンドインジェクションが出来る Slack botのいらすと

Page 16: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

全体の流れ

16

@付きでコマンド送信

コマンドを

実行

コマンドを

Dockerに送信

実行結果を取得

Page 17: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

デモ

•ご一緒にどうぞ•何しても大丈夫です•ハッキングしよう!!

17

実際に OSコマンドインジェクションを行います

Page 18: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

今後

• bash以外の言語を実行できるようになる• C言語• Java• Python• Ruby• PHP

• Dockerの特性を活かして部内サーバを部員が自由に使えるようにします• 作業が遅れていてもうしばらく時間がかかります• ごめんなさい ...

18

Page 19: Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話

まとめ

• Dockerはコンテナ仮想型化を行うツール• 高速に起動し,リソースの消費量が少ない• 自分だけの環境が手に入る

• OSコマンドインジェクションは重大な脆弱性• パスワードの漏洩やデータ改竄の危険

• Slack botは Slack上での自動発言ツール• 今回は Python製の Frameworkを使った

19