Download - Dockerを使ってOSコマンドインジェクションが出来るSlack botを作った話
Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話
自己紹介
• IS科 3回生•自然言語処理研究室• 自然言語処理,機械学習,深層学習
•好き• C++,Python• Vim• 競技プログラミング
•興味あり• 人工知能• CI/CD, DevOps• 自動化
2
3
Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話
4
Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話
Dockerとは•コンテナ型仮想化を行うソフトウェア• 2013年に登場• Go言語で書かれている• コンテナとは仮想 OSのこと• 一台のマシンで複数の OSが動作する• Virtual Boxなどの仮想マシンとは少し違う
5
Dockerとは
6
ベッド
ベッド
ベッド
トイレ風呂
キッチン
一軒家(物理マシン )
賃貸マンション(仮想マシン )
シェアハウス(コンテナ )
*参考 : Docker実戦活用ガイド (マイナビ出版 )
Dockerとは
コンテナ 仮想マシン
OSの起動 速い 遅い
リソース消費 少ない 多い
OSの種類 Linuxのみ なんでも
7
コンテナ (Docker)と仮想マシン (Virtual Box等 )の比較
*参考 : Docker実戦活用ガイド (マイナビ出版 )
8
Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話
9
Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話
OSコマンドインジェクションとは•ユーザからの入力を受け付けるWebサイトでプログラムのパラメータに OSに対するコマンドを紛れさせて不正操作する攻撃
10
不正なコマンド
クラッカー 脆弱性のあるWebサーバ
不正操作
情報漏洩
OSコマンドインジェクションとは•任意コマンドを実行されるのは重大な脆弱性• パスワードの漏洩
• cat /etc/passwd• 秘密鍵の漏洩
• cat ~/.ssh/id_rsa
• サーバのデータ全消し• rm –rf /
11
12
Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話
13
Dockerを使ってOSコマンドインジェクションが出来る Slack botを作った話
Slack botとは• Slackは皆さんお馴染みのチャットツール• botとは機械による自動発言システム• サービスから提供されている APIを叩いて作る• 今回は Python製の slackhq/python-rtmbotというFrameworkを使った
14
Slack botとは•ソースコード• https://github.com/odanado/slackbot-os-com
mand-injection
15
OSコマンドインジェクションが出来る Slack botのいらすと
全体の流れ
16
@付きでコマンド送信
コマンドを
実行
コマンドを
Dockerに送信
実行結果を取得
デモ
•ご一緒にどうぞ•何しても大丈夫です•ハッキングしよう!!
17
実際に OSコマンドインジェクションを行います
今後
• bash以外の言語を実行できるようになる• C言語• Java• Python• Ruby• PHP
• Dockerの特性を活かして部内サーバを部員が自由に使えるようにします• 作業が遅れていてもうしばらく時間がかかります• ごめんなさい ...
18
まとめ
• Dockerはコンテナ仮想型化を行うツール• 高速に起動し,リソースの消費量が少ない• 自分だけの環境が手に入る
• OSコマンドインジェクションは重大な脆弱性• パスワードの漏洩やデータ改竄の危険
• Slack botは Slack上での自動発言ツール• 今回は Python製の Frameworkを使った
19