kalilinuxにOWASP ZAPをインストールする

以前違う環境で使った事はあったのですが、今回別の環境で少し使いたくなったので、手順を残しておきます。

OWASP ZAPについては公式サイトや下記サイトが分かりやすいです

* [OWASP Zed Attack Proxy Project](https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project)
* [OWASP Zed Attack Proxy (ZAP)とは？](http://www.pupha.net/archives/1358/)
 * ここを読むと使い方もザックリと分かるので、すごく素敵です
 * 「自動レグレッションテスト」とか「用意されているREST APIを〜」とか気になる事が書いてありますね（調べねば・・・）

# インストール先の環境
virtual box上にインストールしているkaliilnux

```shell-session
ionis@kali:~/workspace/ZAP_2.3.1$ uname -a
Linux kali 3.14-kali1-amd64 #1 SMP Debian 3.14.5-1kali1 (2014-06-07) x86_64 GNU/Linux
```

# javaインストール

OWASP ZAPがJava7以降を要求しているらしく、kalilinux 1.0.9aデフォルト設定だと下記が出て実行出来ないため

```shell-session
ionis@kali:~/workspace/ZAP_2.3.1$ sh zap.sh 
Exiting: ZAP requires a minimum of Java 7 to run, found 1.6.0_32
```

* 主にこちらの手順を参考にしました
 * [How to install Oracle Java 8 on Linux?](http://www.panta.info/blog/how-to-install-oracle-java-8-on-linux)

## 手順
1. JDK ダウンロード
 * http://www.oracle.com/technetwork/java/javase/downloads/index.html
 * 今回DLしてきたのは、jdk-8u31-linux-x64.tar.gz
 * DLを押す前に、ライセンスを読んで「Accept License Agreement」を選択していないとダメです

1. インストール

```shell-session
ionis@kali:~/workspace$ sudo mv jdk1.8.0_31 /opt/
ionis@kali:~/workspace$ sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_31/bin/java 300
ionis@kali:~/workspace$ java -version
java version "1.6.0_32"
OpenJDK Runtime Environment (IcedTea6 1.13.4) (6b32-1.13.4-1~deb7u1)
OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)
ionis@kali:~/workspace$ sudo update-alternatives --config java
alternative java (/usr/bin/java を提供) には 4 個の選択肢があります。

  選択肢    パス                                          優先度  状態
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      自動モード
  1            /opt/jdk1.8.0_31/bin/java                        300       手動モード
  2            /opt/jre1.8.0_31/bin/java                        1         手動モード
  3            /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      手動モード
  4            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1051      手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 1
update-alternatives: /usr/bin/java (java) を提供するために 手動モード で /opt/jdk1.8.0_31/bin/java を使います
ionis@kali:~/workspace$ java --version
Unrecognized option: --version
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
ionis@kali:~/workspace$ java -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)
```
* update-alternativesについてはこちらの記事が分かりやすいと思います
 * [update-alternativesに管理してもらうコマンドを追加する。](http://qiita.com/hidekuro/items/f931ae527244bce34698)

# OWASP ZAPインストール
1. ダウンロード
 * https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
1. 展開 & 起動

```shell-session
tar xzvf ZAP_2.3.1_Linux.tar.gz
cd ZAP_2.3.1
sh zap.sh
```

# ブラウザの設定をproxyしてenjoy!
![スクリーンショット 2015-01-23 11.32.01.png](https://qiita-image-store.s3.amazonaws.com/0/23194/158d1f9d-9ea1-4dc6-d028-0652ec82ba14.png)

* Iceweaselがインストールされていたので、以下から設定をへんこう
 * Edit -> Preferences -> Advanced -> Network -> Settings
 * Manual proxy configurationを選択し、```HTTP Proxy: localhost, Port: 8080```
 * 「Use this proxy server for all protocols」にチェックを入れておく

## 普段からproxyを利用しているような環境の場合
もし、普段からProxyを使っていたり立てていたりする場合は、上記設定を入れてもブラウザから外部に出れず下記のようなエラーメッセージが出る事があるかもしれません

```text
ZAP Error [java.net.UnknownHostException]: example.com
```

その場合は、[OWASP ZAPを触ってみる](http://qiita.com/ionis_h/items/3834f65ad59d8df0eb1c#2-4)に以前記載したのですが、プロキシチェインを設定してあげると良いです。
下記に再度記載しておきます

### プロキシチェインの設定
![スクリーンショット 2015-01-23 11.38.29.png](https://qiita-image-store.s3.amazonaws.com/0/23194/f3a53820-20c4-5a12-e5e6-f02c7b892a1f.png)

* ツール -> オプション -> Options -> ネットワーク -> プロキシ・チェイン利用
 * proxyサーバーとportを記載し、Addから除外するドメインを記載しておく
 * 一部豆腐が出ていますが、おそらく日本語周りで何かがあったんだと思います（気にしないでください）

## ブラウザが出す証明書の警告が面倒な場合
証明書をインポートしてしまいましょう
OWASP ZAPから以下の手順

1. OWASP ZAPから証明書を作成
 * ツール -> オプション -> Options -> ダイナミックSSL証明書 -> 保存
 * 保存したパスは覚えておく
1. ブラウザ(Iceweasel)にインポート
 * Edit -> Preferences -> Advanced -> Certificates -> View Certificates -> Authorities -> Import
 * 先程保存したcerファイルを指定し取り込む
 * 取り込む際には(This certificate can identify websites)にチェックをいれておく

# まとめ

OWASP ZAPは初めてのインストールというわけではないのに、普段Javaを利用しない人なので、インストールに少し手間取りましたorz
さて、やりたかった事をやってみるぞー！