今回の目的
これまでのチャレンジで自動化されたスキャナをいくつか作ってきたけど、自分が事前に想定している脆弱性のチェックしかできない。
ここからは、”自分の知ってる脆弱性”だけでなく、”知らない脆弱性”やツールのスキャンでは見つけられないような細かいものを探せるようにしたい。
あとは以下も目的にある。
- Webリクエストを途中で止めて、中身を書き換えたい。
- ブラウザでの操作をそのまま診断ログとして使いたい。
- 業界標準のツールに慣れておきたい。
ということで、今日は手動診断の必須ツールである「Burp Suite」を導入して、基本的な設定を完了させることを目指す。
このチャレンジについて
目的: セキュリティエンジニアとしての技術力向上
手段: シェルスクリプト作成を通じて学習
実施する事: 自動化,監視,ツール開発基礎学習など
目次
実行結果
最終的に、ブラウザからDVWAへのリクエストをBurp Suiteで傍受(インターセプト)することに成功した。
ブラウザの動きが止まり、Burpの画面にリクエスト内容が表示された時が成功の合図。
こんな感じでDVWAを立ててるEC2のIPに対してGETを送ってるけど、実際のブラウザ画面ではローディングのままインターセプトしている。
画面上のForwardボタンで1つずつリクエストの送信ができる。
実行環境
- プロキシツール: Burp Suite Community Edition
- ブラウザ: Google Chrome
- ブラウザ拡張機能: Proxy SwitchyOmega
- 接続元(ローカルPC): Windows 11
- テスト対象: DVWA (AWS EC2上のWebサーバー)
開発ステップ
今回のセットアップは、大きく3つのステップで完了した。
-
Step 1: Burp Suiteのインストール
- 公式サイトからCommunity Editionをダウンロードして、ローカルPCにインストールした。
-
Step 2: ブラウザのプロキシ設定
- 手動でプロキシ設定を切り替えるのは面倒なので、Chrome拡張機能の「Proxy SwitchyOmega」を導入した。
- 以下の設定で、Burp Suite用のプロファイルを作成した。
-
Protocol:
HTTP
-
Server:
接続先サーバのIP
※普通はlocalhostとか踏み台サーバのIPいれる事が多い。 -
Port:
任意の値
-
Protocol:
-
Step 3: Burp CA証明書のインポート
- HTTPS通信をBurpが復号・再暗号化するために、ブラウザにBurpのCA証明書を信頼させる必要がある。
- Burpを起動し、プロキシを有効にした状態でブラウザから
http://burpsuite
にアクセス。 - 「CA Certificate」ボタンから証明書(
cacert.der
)をダウンロード。 - Chromeの設定 (
chrome://settings/security
) から証明書をインポートし、「ウェブサイトを識別するためにこの証明書を信頼する」にチェック。
開発中の気づき
プロキシ設定で、一つ重要な気づきがあった。
問題:
Proxy SwitchyOmegaのBypass List(バイパスリスト)に、デフォルトで127.0.0.1
とlocalhost
が記載されている。
今回、プロキシサーバー自体は127.0.0.1
に立てている。これって、プロキシ設定自体をバイパス(無視)してしまうんじゃないか?と疑問に思った。
結論:
今回は、問題なかった。
理由:
バイパスリストは、通信の宛先(Destination) を見て判断するらしい。
-
今回の構成:
- 宛先: AWS EC2のパブリックIPアドレス
-
プロキシサーバー:
127.0.0.1:8080
- ブラウザからEC2へのリクエストは、宛先がバイパスリストに載っていないため、問題なくプロキシ(Burp)に送られる。
- もし、テスト対象のサーバーも
localhost
で動かしていた場合は、このバイパスリストからlocalhost
と127.0.0.1
を削除する必要があった。危ないところだった。これ覚えておく。
まとめ
今日は、手動脆弱性診断の第一歩として、Burp Suiteの環境を構築した。
これまでcurl
やPythonスクリプトで一つずつリクエストを送っていたのが、これからはブラウザで普通に操作するだけで、すべての通信を詳細に分析できるようになったのはでかい。証明書のインポートやプロキシ設定の仕組みは、Man-in-the-Middle(中間者)攻撃の基本的な原理と同じ。設定をしながら、攻撃者の視点を少しだけ体験できた気がする。
次回からは、この環境を使って実際に手動での脆弱性診断に挑戦していく。