セキュリティ実践講座
-優しい愛をあなたに-
2015/5/30 Sat エフスタ!!AIZU
自己紹介
• 名前 :小倉 大 (おぐら まさる)
• Twitter :@MasaruOgura
• 北海道出身
• ネットワークエンジニア
• エフスタ!!TOKYOのスタッフ
• SPREAD情報セキュリティマイスター
• スイーツ大好き
アジェンダ
• 目的
• 留意事項
• SQLインジェクションとは
• デモ環境説明
• デモ・解説
• 対策
• まとめ
目的
• SQLインジェクションを知る
- 防御のために攻撃を理解する
• セキュリティへの関心を高める
- 家のローカル環境で試してくれる人がいるといいな
留意事項
• インターネット上のWebサーバに攻撃し
てはいけません
- 法的措置をとられる可能性があります
• 私はネットワークエンジニアです
SQLインジェクションとは
※SQLインジェクション - Wikipedia
http://ja.wikipedia.org/wiki/SQL%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%A7%E3%82
%AF%E3%82%B7%E3%83%A7%E3%83%B3
SQLインジェクションとは、アプリケーションのセキュリ
ティ上の不備を意図的に利用し、アプリケーションが想定
しないSQL文を実行させることにより、データベースシス
テムを不正に操作する攻撃方法のこと。また、その攻撃を
可能とする脆弱性のこと。
悪意のある攻撃者 Webサーバ データベース
不正なリクエスト
処理結果を取得
不正なリクエスト
不正なリクエスト
を処理
デモ環境説明 (1/2)
デモにBadStore.netを利用します。
BadStore.net は、脆弱性をわざと作りこん
である Linuxです。
※2015/5/6に正規のサイトにアクセスしたのですが、接続できなかっ
たので、もしかしたら提供が終了しているかもしれません。
Windows7上のVMWarePlayerで、
BadStore.netを起動し、HostOSから
GuestOSに対してSQLインジェクションを
実施
デモ環境説明 (2/2)
192.168.177.0/24
.254 .128
GuestOS(BadStore.net)HostOS(Windows7)
デモ・解説 (1/6)
事前に以下のユーザを作成済み
Email Address : phenix
Password : phenix
デモ・解説 (2/6)
phenixユーザでログイン
Email Address : phenix
Password : phenix
- SQL文のイメージ
select * from <Table名> where email=
‘phenix’ and passwd=‘phenix’;
デモ・解説 (3/6)
Email Passwd Age Address
satoshi konkatsu 35 Tokyo
phenix phenix 41 koriyama
kageyama gesui 36 moriya
dj kato 30 Aizu
hayash sportsbar 30 Koriyama
:
データベース例
デモ・解説 (4/6)
phenixユーザがいることを知っている場合
Email Address : phenix ‘ or ‘ 1=1’ --‘
Password : なし
- SQL文のイメージ
select * from <Table名> where email=
‘phenix ‘ or ‘ 1=1’ --‘’ and passwd=‘’;
デモ・解説 (5/6)
ユーザ情報を知らない場合
Email Address : ' or 1=1 or '
Password : なし
- SQL文のイメージ
select * from <Table名> where email=
‘’ or 1=1 or ‘’ and passwd=‘’;
デモ・解説 (6/6)
おまけ
Admin権限のユーザ作成
Email Address : test
Password : test
Burp Suiteを経由して、リクエスト内容を
変更する
※ Badstore.net User Manual
http://www.cs.umd.edu/class/fall2012/cmsc498L/materials/BadStore_net_v1_2_Manual.pdf
対策 (1/4)
脆弱性検査ツールを利用
※ IPAテクニカルウォッチ 「ウェブサイトにおける脆弱性検査手法の紹介(ウェブアプリケーション検査編)」
https://www.ipa.go.jp/files/000035859.pdf
対策 (2/4)
OWASP ZAP使用例
対策 (3/4)
Webサイトの管理者は、既知の脆弱性について対
策を実施しましょう
Webサイトを公開する前にすること
1. 脆弱性検査ツールで脆弱性の有無を確認
2. 結果の内容を確認
3. 脆弱性がある場合、脆弱性対策を実施
4. もう一度、脆弱性検査ツールで修正を確認
※4で脆弱性を検知する場合は、2~4を繰り返す
対策 (4/4)
ユーザ側でできること
・ウイルス対策ソフトを導入し、定義ファイルを
最新に保つ
・OSやアプリケーションにセキュリティパッチを
適用する
・パスワードの使いまわしをしない
まとめ
・脆弱性があればSQLインジェクションなどの攻
撃は簡単にできる
・脆弱性の知識がなくても、ツールを利用するこ
とで、既知の脆弱性の有無を確認できる
・脆弱性対策を実施し、セキュリティリスクを低
減する
ご清聴ありがとうございました
Appendix
参考資料
「わざと脆弱性を持たせたWebアプリ」で練習を
http://www.atmarkit.co.jp/fsecurity/column/ueno/59.html
警察庁 サイバー犯罪対策
不正アクセス行為の禁止等に関する法律の解説
https://www.npa.go.jp/cyber/legislation/pdf/1_kaisetsu.pdf
IPA
知っていますか?脆弱性 - 1. SQLインジェクション
http://www.ipa.go.jp/security/vuln/vuln_contents/sql.html
IPA
安全なウェブサイトの作り方
http://www.ipa.go.jp/security/vuln/websecurity.html
Appendix
参考資料
IPA
SQLインジェクション対策について
http://www.ipa.go.jp/files/000024396.pdf
Badstore.net User Manual
http://www.cs.umd.edu/class/fall2012/cmsc498L/materials/BadStore_net_
v1_2_Manual.pdf

セキュリティ実践講座 -優しい愛をあなたに-

Editor's Notes

  • #9 今回、GuestOSからInternet接続は必要ないので、ネットワーク接続をホストオンリーに設定。
  • #13 -- 以降はコメントになる
  • #14 WHERE句の中でANDとORを並べると、ANDの論理演算が優先する
  • #15 マニュアルにあるCheat sheetを利用 ソースにあるroleをUからAに変更する