OwaspZapでlocalhostでアクセスしたときだけアクセス履歴が表示されない件について

# はじめに

Webサイトを作る仕事を最近はしており、脆弱性診断をしたいという話になりました。
そこで、新しい技術をやりたい私が担当することになりました。

全く知識がないため、ネット記事の設定の仕方(内容はどれも同じ)をみながら設定をしたのですが、localhostのアクセスのみうまくいきませんでした。普通のwebサイトはできる。

そこで色々調べたのでまとめたいと思います。

# 問題

OwaspZapの初期設定を以下のように行いました。

**ローカル・プロキシ**
![bandicam 2021-08-10 22-18-34-508.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/66ca93a7-617f-0e7b-98cb-1439c1572c34.jpeg)

**FireFox**
![bandicam 2021-08-10 22-21-31-089.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/38c713b6-4c04-f8b9-5c55-cb56d40501cf.jpeg)

**Chrome**
![bandicam 2021-08-10 22-22-49-155.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/795cd25e-7d05-94ac-de68-af6abe2f33f1.jpeg)

chromeはプロキシの設定に拡張機能のSwitchyOmegaを使っています。

この設定で、Webサイトなどにアクセスすると履歴に表示されるのですが、Dockerで作成したJupyter環境(localhost)にアクセスすると何も表示がされません。Railsアプリのコンテナ(localhost:3000)も同様でした。

ちなみに、この問題は**StackOverFlow**にて[質問](https://ja.stackoverflow.com/questions/80704/owaspzap%e3%81%a7localhost%e3%81%ab%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e3%81%97%e3%81%9f%e3%81%a8%e3%81%8d%e5%b1%a5%e6%ad%b4%e3%81%ab%e8%a1%a8%e7%a4%ba%e3%81%95%e3%82%8c%e3%81%aa%e3%81%84)をしています。 (現段階では完全解決していません)

# 解決方法 1

とりあえずできるようにはしたので、解決方法を載せます。

まず、localhostが表示されないとネットで調べましたが同じような症状の記事はほぼ見つかりませんでした。

その中で、[OWASP ZAPの初期導入手順（ルート証明書の追加手順もあるよ）](https://qiita.com/k_hoso/items/20eba04c6ef8085de4f3)の記事に同じような症状がありました。

```
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`というファイルを開きます。
![bandicam 2021-08-10 22-35-39-665.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/70c019fb-e6b5-967f-6fc3-cb20cebd5f79.jpeg)

(テキストドキュメント(.txt)をすべてのファイルにすると開けます)

そして適当な行に以下の行を追加します。

```
127.0.0.1 myserver.com
```

**myserver.com**にアクセスします。

![bandicam 2021-08-10 22-41-07-845.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/dda8190d-a30d-9da2-2d13-99ee796f54d3.jpeg)

![bandicam 2021-08-10 22-49-28-243.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/8bd82fc4-f6f2-6e27-9e0b-25e07224a7b6.jpeg)

表示されました。

しかし、**myserver.com**にアクセスではなく**localhost**にアクセスしたいので、別の方法も考えました。


# 解決方法 2

クイックでブラウザを開くとなぜか表示されました。

![UER4v.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/a7cf6064-9393-56fd-5855-8b56c91ebdca.png)

アイコンにFireFoxがありますので利用できます。

また、Chromeのクイックスタートは以下のように行います。

緑の「+」マークをクリックする。
クイックスタートをクリック

![N0fAO.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/6be5b587-464b-3ae1-9e7b-fbe53d519a56.png)

Manual Explore (緑背景の稲妻)をクリック
![bandicam 2021-08-10 22-55-08-824.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/5273ffce-e8a0-8700-3f11-4b76da6ed995.jpeg)

Explore your applicationのFirefox/Chromeに変更して、Lanch Browserをクリックする

![Z6jR2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/8ce7619b-385a-9335-af08-5b3153240e9c.png)

開いたサイトで`localhost`にアクセスすると履歴が表示されます。

# 解決方法 3

どうすれば、通常の方法でアクセスできるのだろうとTwitterで検索してみました。
すると以下のツイートを発見しました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">curlでローカルに立てたOWASP ZAP経由でアプリにアクセスしようとして-x localhost:ポート番号のオプションつけたけど全然ZAPを経由しなくて、なんでかなーって悩んでたらOSのno_proxyにlocalhostが入ってて邪魔してた。<br>あとはスキャンぶっぱなすだけ😊</p>&mdash; みどりからす (@underson666666) <a href="https://twitter.com/underson666666/status/1268749142345412608?ref_src=twsrc%5Etfw">June 5, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


localhostだけOwaspZap経由でアクセスできていないのではと推測。

調べるのをOwaspZapではなく、no_proxyなどプロキシについてしていきました。

すると以下の記事を発見
[localhost(127.0.0.1)宛の通信をproxy経由にする方法](https://turningp.jp/network_and_security/localhost-proxy)

この記事通りにやることでFireFoxのみlocalhostにアクセスするときに指定したプロキシを経由するようにできました。

やり方は以下の通りです。

アドレスバーに「about:config」と入力しエンターでアクセスします。

![bandicam 2021-08-10 23-06-25-001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/02e75619-028e-e6b3-1f46-517b567cba14.jpeg)

 このような画面になるので、「危険性を承知の上で使用する」をクリック

検索BOX(設定名)が現れるので「network.proxy.allow_hijacking_localhost」と入力

![bandicam 2021-08-10 23-08-16-847.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/810513/ffed20b7-b0e4-8fea-d4c0-75cf52901353.jpeg)

`false`になっている場合は、画像のように、1つ目の⇔をおしてtrueに変えます。

これで`localhost`にアクセスすることで表示されます。
また、1度設定すれば問題ありません。

# おわりに
Chormeで継続的にlocalhostでアクセスしてプロキシ経由させる方法はまだわかっていません。
ネットの記事ではほぼ全員loclhostでアクセスできているのでもしかしたら、サイトのバージョンによって違うのかもしれません。

わかり次第更新していきたいと思います。

# 参考

- [OWASP ZAPの初期導入手順（ルート証明書の追加手順もあるよ）](https://qiita.com/k_hoso/items/20eba04c6ef8085de4f3)
- [localhost(127.0.0.1)宛の通信をproxy経由にする方法](https://turningp.jp/network_and_security/localhost-proxy)