はじめに
Webサイトを作る仕事を最近はしており、脆弱性診断をしたいという話になりました。
そこで、新しい技術をやりたい私が担当することになりました。
全く知識がないため、ネット記事の設定の仕方(内容はどれも同じ)をみながら設定をしたのですが、localhostのアクセスのみうまくいきませんでした。普通のwebサイトはできる。
そこで色々調べたのでまとめたいと思います。
問題
OwaspZapの初期設定を以下のように行いました。
chromeはプロキシの設定に拡張機能のSwitchyOmegaを使っています。
この設定で、Webサイトなどにアクセスすると履歴に表示されるのですが、Dockerで作成したJupyter環境(localhost)にアクセスすると何も表示がされません。Railsアプリのコンテナ(localhost:3000)も同様でした。
ちなみに、この問題はStackOverFlowにて質問をしています。 (現段階では完全解決していません)
解決方法 1
とりあえずできるようにはしたので、解決方法を載せます。
まず、localhostが表示されないとネットで調べましたが同じような症状の記事はほぼ見つかりませんでした。
その中で、OWASP ZAPの初期導入手順(ルート証明書の追加手順もあるよ)の記事に同じような症状がありました。
hosts設定
※参考 OWASP ZAPの設定と使い方
hosts("C:\Windows\System32\drivers\etc\hosts")に下記を追加
myserver.com 127.0.0.1
※ドメイン名は好みで
最終的にブラウザからアクセスする際、http://localhost へのアクセスだとプロキシ(#ZAP)経由でのアクセスをなぜか行っていくれないので、myserver.comへのアクセスを行う体にする。
こちらを試して、localhost
の代わりにmyserver.com
にアクセスすることで表示されるようになりました。
まず、メモ帳を管理者として実行します。(上書き保存をするため)
そのあとにC:\Windows\System32\drivers\etc
にあるhosts
というファイルを開きます。
(テキストドキュメント(.txt)をすべてのファイルにすると開けます)
そして適当な行に以下の行を追加します。
127.0.0.1 myserver.com
myserver.comにアクセスします。
表示されました。
しかし、myserver.comにアクセスではなくlocalhostにアクセスしたいので、別の方法も考えました。
解決方法 2
クイックでブラウザを開くとなぜか表示されました。
アイコンにFireFoxがありますので利用できます。
また、Chromeのクイックスタートは以下のように行います。
緑の「+」マークをクリックする。
クイックスタートをクリック
Explore your applicationのFirefox/Chromeに変更して、Lanch Browserをクリックする
開いたサイトでlocalhost
にアクセスすると履歴が表示されます。
解決方法 3
どうすれば、通常の方法でアクセスできるのだろうとTwitterで検索してみました。
すると以下のツイートを発見しました。
curlでローカルに立てたOWASP ZAP経由でアプリにアクセスしようとして-x localhost:ポート番号のオプションつけたけど全然ZAPを経由しなくて、なんでかなーって悩んでたらOSのno_proxyにlocalhostが入ってて邪魔してた。
— みどりからす (@underson666666) June 5, 2020
あとはスキャンぶっぱなすだけ😊
localhostだけOwaspZap経由でアクセスできていないのではと推測。
調べるのをOwaspZapではなく、no_proxyなどプロキシについてしていきました。
すると以下の記事を発見
localhost(127.0.0.1)宛の通信をproxy経由にする方法
この記事通りにやることでFireFoxのみlocalhostにアクセスするときに指定したプロキシを経由するようにできました。
やり方は以下の通りです。
アドレスバーに「about:config」と入力しエンターでアクセスします。
このような画面になるので、「危険性を承知の上で使用する」をクリック
検索BOX(設定名)が現れるので「network.proxy.allow_hijacking_localhost」と入力
false
になっている場合は、画像のように、1つ目の⇔をおしてtrueに変えます。
これでlocalhost
にアクセスすることで表示されます。
また、1度設定すれば問題ありません。
おわりに
Chormeで継続的にlocalhostでアクセスしてプロキシ経由させる方法はまだわかっていません。
ネットの記事ではほぼ全員loclhostでアクセスできているのでもしかしたら、サイトのバージョンによって違うのかもしれません。
わかり次第更新していきたいと思います。