BurpSuiteの拡張機能（AuthMatrix）を使ってアクセス制御のチェックをする

## 概要
BurpSuiteFreeでも使用できる拡張機能の「AuthMatrix」を使ったところ、手軽にアクセス制御のチェックをすることができましたので紹介いたします。

> AuthMatrix
> https://github.com/SecurityInnovation/AuthMatrix



## 説明
この記事は下記の内容で進めていきます。

- ツールの準備
- AuthMatrixの設定
- AuthMatrixを動かす
- 結果の確認
- サイト側の修正
- 修正されたかどうか再確認

設定手順を以下に書いていきます。

## 環境
 - macOS Sierra 10.12.5
 - java version 1.8.0_144
 - Burp Suite Free Edition v1.7.26
 - WordPress 4.8.1　（デモ環境）

## ツール準備
事前に下記の準備が必要です。

- BurpSuiteFree版のインストールと設定
- BurpSuiteFree版にAuthMatrixをインストール

BurpSuiteFree版をダウンロードして起動します。

>Download Burp Suite Free Edition
>https://portswigger.net/burp/freedownload/


インストールしてBurpSuiteFreeを起動すると、上のほうにExtenderタブが表示されていますので、その中のBApp Storeタブから「AuthMatrix」を探して、インストールボタンをクリックします。

もし、Installボタンがグレーアウトしている場合は、Jythonを設定する必要があります。
下記URLからダウンロードして、「Extenderタブ→Options」にある「Java Environment」から、Jythonのファイルを設定します。
>http://www.jython.org/downloads.html

<img width="80%" alt="image" src="https://qiita-image-store.s3.amazonaws.com/0/156827/51f09272-8f70-0512-d40f-1dd113db670f.png">

正常にインストールが完了すると「AuthMatrix」タブが追加されています。

## AuthMatrixの設定
AuthMatrixでアクセス制御のチェックをするために必要なものは下記です。

- ユーザー権限ごとのCookie
- 確認したいURL

### ユーザー権限ごとのCookieを取得する方法
AuthMatrixがそれぞれのアカウントを使ってアクセスするためには、Cookieの設定が必要です。
デモ環境にアクセスするブラウザに、プロキシの設定を行ってBurpSuiteFreeで通信を取得できるようにしておきます。
PCのブラウザで設定を行う手順は別の記事を投稿していますのでご覧いただければと思います。
>BurpSuiteのFree版を使うときのプロキシ設定をサクサク書いてみた（Chrome）
>http://qiita.com/inahukus/items/63a1d9f9fee1ff9af9cc

BurpSuiteFreeでブラウザの通信が取得できるように設定を完了しましたら、
それぞれのアカウントごとにブラウザにログイン後、Proxyタブ内のOptionsタブにある「Proxy listeners」に、通信のリクエストとレスポンスが取得できているので、アカウントごとのCookie情報を取得しておきます。

### 確認したいURLを取得する方法
次に確認したいURLを取得します。
今回は下記のURLについて、アクセス制御のチェックをしていきたいと思います。

- 管理用ダッシュボード画面
- 記事の編集画面


確認したい画面それぞれのURLを、Historyタブから確認して、対象のURLを選択した状態でコンテキストメニューからAuthMatrixに登録しておきます。
<img width="80%" alt="image" src="https://qiita-image-store.s3.amazonaws.com/0/156827/d983b629-f901-00ac-bed3-70941be08374.png">

## AuthMatrixの設定
必要な手順はこちらです。

- 権限の設定
- 権限ごとのCookieの設定
- 確認したいURLの設定
- URLごとのアクセス設定

### 権限の設定
AuthMatrixのタブで、User Name にアカウントの権限を設定します。
New User のボタンを押して、アカウント権限を追加します。

<img width="80%" alt="setting.png" src="https://qiita-image-store.s3.amazonaws.com/0/156827/2d93641d-1564-6ff4-d6f4-dc0ef29ea1f1.png">

### 権限ごとのCookieの設定
Cookiesに、先ほど取得したセッショントークンを設定します。
下記の箇所から、ユーザーごとのCookieをペーストします。

<img width="80%" alt="image" src="https://qiita-image-store.s3.amazonaws.com/0/156827/85da8465-6c84-bb2f-d2d6-caa944e496d2.png">

AuthMatrix側でユーザーを追加したあとは、対象URLを選択した状態のコンテキストメニューに、追加したユーザーごとのCookieに設定できる項目が追加されています。
Cookieを設定するにはこちらから追加したほうが簡単ですね！

<img width="80%" alt="image" src="https://qiita-image-store.s3.amazonaws.com/0/156827/0d662167-c9c6-7b7e-ef73-3a18ec4be10c.png">

### 確認したいURLの設定
さきほど、Historyタブで対象のURLを選択した状態でコンテキストメニューからAuthMatrixに登録したURLが設定されています。

<img width="80%" alt="image" src="https://qiita-image-store.s3.amazonaws.com/0/156827/2e617f6a-9dc6-3252-1dce-d9048e5d4a5c.png">

### URLごとのアクセス設定
完了したらURLごとにアクセスしても良い権限にチェックを入れていきます。
これで設定が完了しました！

<img width="80%" alt="image" src="https://qiita-image-store.s3.amazonaws.com/0/156827/9457c8b2-6aee-e811-8a87-adbcd1362862.png">

※わかりやすくするため、管理権限とユーザー権限のどちらもアクセスできるURL（サイトトップ画面）も追加しています。

## AuthMatrixを動かす
権限と対象URLの設定が完了したら、Runボタンをクリックして実行します！

### 結果の確認
処理が完了すると、結果が下記のようになりました。

<img width="80%" alt="image" src="https://qiita-image-store.s3.amazonaws.com/0/156827/74f4087a-4420-eaca-0ffa-3d7d1173786a.png">

想定したとおりにアクセス制御がされている場合はセルが緑になり、想定していない場合はセルが赤くなります。
2番目と3番目のURLで、セルが赤くなっている箇所がありました。
どちらも管理アカウントのみがアクセスできる画面の想定なのに、ユーザー権限のアカウントがアクセスできている状態となります。
※AuthMatrixタブの下にあるタブでリクエストとレスポンスを確認することができます。

## サイト側の修正
対象画面にアクセスできる権限の設定について、修正を行えば解決できそうです！
修正対応として、対象画面のアクセス権限を再確認し、管理権限のアカウントのみアクセスできるように設定を変更しました。

### 修正されたかどうか再確認
もう一度、AuthMatrixを実行してみます。
Run!

<img width="80%" alt="image" src="https://qiita-image-store.s3.amazonaws.com/0/156827/dfb97707-08f1-4b1d-3772-d4b146b1e1fc.png">

すべてのURLが緑のセルになりました。
これで、ユーザー権限のアカウントで該当のページを閲覧することができなくなりました。

## まとめ
今回は確認したいURLが少なかったのですが、
何十URLのチェックをしたいときにはAuthMatrixを使うと手動で確認するよりも楽にチェックできるかと思います。
AuthMatrixには他の機能もあるのですが、まだまだ使いこなせていないので今後別の記事で紹介できればと思います。

## 参考サイト
 - [GitHub - AuthMatrix v0.7](https://github.com/SecurityInnovation/AuthMatrix)
 - [BApp details: AuthMatrix](https://portswigger.net/bappstore/bapps/details/30d8ee9f40c041b0bfec67441aad158e)