arachniについて
インストール
ダウンロードして解凍するだけです。
実行環境の準備
- 数時間はほったらかしにする必要がありますので。独立した環境でやったほうがいいです。
- メール送信されないようにmailhogみたいにするか、プログラムを修正してください。
- Laravelなどフレームワークのデバッグモードをoffにしてください。
- やればわかりますが、フォームの選択肢が多かったり、ページ数が多いとその分時間がかかります。マスタデータや記事データなどを減らしてください。1〜2個で十分です。
- 外部サイトへの接続をしないようにしてください。proxy用でfile_get_contentsしている部分など
実行
コマンドラインもしくは、WebUIから起動します。
コマンドラインが簡単です。
コマンドオプションについては以下
https://github.com/Arachni/arachni/wiki/Command-line-user-interface
基本
bin/arachni https://example.com/
URLを指定するだけです。
localhostでは動きませんので、IPや適当なドメインで動くようにしてください。
推奨オプション
デフォルトではいろいろと無駄なチェックが走りますので、下記のオプションを付けると良いです。
bin/arachni https://example.com/ --scope-exclude-pattern=tel: --scope-exclude-pattern=mailto: --platforms=linux,mysql,php,apache
指定URLだけチェック
--scope-include-pattern=campaigns
を使う
同時接続数の調整
--http-request-concurrency=5
テスト環境のスペックが低い場合は同時接続数を調整しないと途中でテストサイトが落ちる可能性があります。
また、Wordpressの場合重いので同時接続数を3くらいにしたほうが良いです。
ログインが必要なページのチェック
例:
bin/arachni https://example.com/ --plugin=autologin:url=https://example.com/users/login,parameters="id=xxxx&password=xxxx",check="ログアウト" --scope-exclude-pattern=logout
説明:
- --plugin=autologin
autologinプラグインを使います。
- :url=https://example.com/users/login
ログインページ(ID・PW入力フォームがあるページ)のURL
- ,parameters="id=xxxx&password=xxxx"
IDとパスワード
- ,check="ログアウト"
ログインが成功した後の確認用文字列。ログイン後のページにしかない文字列を指定するとそれがあるかどうかでログインできたかを判断します。
- --scope-exclude-pattern=logout
ログアウトしないようにログアウトリンクURLを除外しましょう。
※cakephpでうまくログインできない場合がありました。その場合はプログラムを修正してログイン状態にするなどしてください。(正確に言うとログインしてもすぐセッションが切れてログアウトしてしまう状態になった。)
実行を中断する場合
フォアグラウンドの場合、普通にCtrl+cで終了できます。その際にそこまでのレポートも作成されます。
バックグラウンドの場合、普通にkillするとレポートが作成されないので、
kill -INT 8341
オプションを付けてください。
おすすめの流れ
- まずはxssだけチェックしてみます。
bin/arachni https://example.com/ --scope-exclude-pattern=tel: --scope-exclude-pattern=mailto: --platforms=linux,mysql,php,apache --checks=xss
- サイト規模にもよりますが、2〜3時間で終わるようなら全体チェックをしても大丈夫です。xssを除外する場合は
--checks=*,-xss
- いつまでたっても終わらない場合は途中で止めてレポートのSitemapを確認してください。1回で全部のページをやろうとせずに、複数回に分けてやったりしてください。