こんにちは、GMOアドマーケティングのR.Yです。
今回はBurp Suiteによる脆弱性診断をしていきます。前回OWASP ZAPを使って自動でテスト用のサイトを診断し、複数の脆弱性を確認することができました。そして、今回はそこで検出された「SQLインジェクション」の脆弱性についてBurp Suiteを使って詳しく確認していきます。
このブログは前回投稿したこちら↓の続きになります。
ご覧になっていない方はこちらを見てから読むことをお勧めします!
1. Burp Suiteとは
Burp SuiteはローカルプロキシツールでWebサーバとブラウザ間の通信内容を確認することができます。また、ブラウザからのリクエストを一旦キャプチャして、内容を変更した上でWebサーバへリクエストすることもできます。
これを利用することで、任意のパラメータ値を手動で簡単に指定することができ、OWASP ZAPによる脆弱性診断より正確な診断を行うことができます。とはいえWebアプリ上で行われるであろう全てのリクエストに対して手動で診断するのは大変なので、OWASP ZAPである程度目星をつけてからBurp Suiteで詳しく調べるといった使い方をします。
※Burp Suiteのインストール手順は省略します。
Burp Suiteのダウンロード
2.準備
Burp Suiteによる診断を行うためにはプロキシの設定をする必要があります。
プロキシ設定は「Proxy」→「Options」から行います。Optionsを開けたらProxy Listenersの「Edit」をクリックしましょう。
※本記事の画像はすべて当社が作成したものです
Edit proxy listenerのウィンドウが開けたら、
Burp Suiteのポートを8085に設定後OKを押します。Firefoxもプロキシ設定からポートを8085に変更する必要がありますが前回のブログに記したので省略します。「6-2-2.Webブラウザのプロキシ設定」を参考に変更しましょう。
これでBurp Suiteのプロキシ設定完了です!
3.Burp Suiteで仮攻撃を行う
それでは早速テスト用サイトのSQLインジェクションに対して仮攻撃を行なっていきます。今回使用するテスト用のサイトは前回の記事で作成したものになります。(4.脆弱性診断を行うWebアプリをRailsで開発する より)
具体的な方法は、ユーザ一覧画面の検索時に実行されるリクエストをBurp Suiteで意図的に操作しSQLインジェクションを誘発します。そして、これにより返ってくるレスポンスを確認しSQLインジェクションの存在を明確にしていきます。
まずBurp Suiteを開いたら「Proxy」→「Intercept」をクリックし以下の画面を開きます。
そしてサーバを起動後、Firefoxでlocalhost:3000/を開き一覧画面が見えていることを確認します。
ここで操作をBurp Suiteに戻し、「Intercept is off」をクリックします。
表示が「Intercept is on」に変わっていたらOKです。
ここまで終わったら再び画面に操作を戻し、
実際に入力フォームに検索ワードを入力しsearchボタンを押します。そうするとページが読み込み状態になり、Burp Suiteの方も変化があるはずです。
Interceptをオンにしたことにより、サーバに送られるリクエストをキャッチしてその通信内容を確認することができました!これによって、本来ブラウザからサーバに送られる通信をBurp Suiteがせき止めている状態になりました。
今回はSQLインジェクションの脆弱性を確認したいので、右側のQuery paramatersのnameにSQLインジェクションを誘発するための値を入れます。
今回は ‘ OR id = 3) — を入れました。Apply changesを押すと反映されます。
これで通信の内容を書き換えることができました。そして、forwardボタンを押すことでせき止めていたリクエストをサーバへ送信します。
本来実行されるSQLが SELECT “users”.* FROM “users” WHERE (name = ‘ユーザー1’)に対して、
リクエストを書き換えたことでSELECT “users”.* FROM “users” WHERE (name = ‘ ‘ OR id = 3) –‘)が実行され、id=3のユーザー3が一覧に表示されました。これによりSQLインジェクションが成功しました!
まとめ
今回はBurp Suiteを使用した脆弱性診断について書いてみました。前回書けなかった部分について今回記事にすることができたので良かったです。
今回行った診断は画面上からも行えますが、hidden属性のついた隠れたパラメータだったり、HTMLソースを見なければ判断がつかないような脆弱性の場合にもBurp Suiteは有効です。そのような診断を行いたい時はぜひBurp Suiteを使ってみてはいかがでしょうか!
最近社内のサービスを脆弱性診断することが多いので、脆弱性などセキュリティ関連の記事も増やしていけたらと思います。ここまで読んでいただきありがとうございました!
Ruby on Railsを使った開発、プロダクトの脆弱性診断などをやってます
オレンジ色と犬と猫と食べることと歌うこととピアノが好きです。