Syhunt
  1. HOME
  2. -BLOG
  3. -Selenium-JS認証の使い方|認証スクリプトの作成からスキャンまで解説

Selenium-JS認証の使い方|認証スクリプトの作成からスキャンまで解説

公開日:技術ドキュメント

はじめに


Syhunt version 7.2以降では、新たに認証方法「 Selenium-JS認証 」が利用できるようになりました。

Selenium-JS認証では、JavaScriptで記述した認証用スクリプトを使ってログイン操作を自動化し、ログインが必要なWebアプリケーションに対して認証付きダイナミックスキャンを実行できます。対象Webアプリケーションのログイン処理に合わせて認証操作をスクリプトで記述できるため、柔軟にログイン処理を設定できる点が特徴です。

この記事では、Selenium-JS認証を初めて利用する方向けに、認証情報の設定、JavaScriptによる認証用スクリプトの作成・登録、Syhuntでの認証テストまでの基本的な操作手順をご紹介 します。




1. Selenium-JS認証とは?


Selenium-JS認証とは、Seleniumを利用したJavaScriptのスクリプトによってログイン操作を自動化し、Syhuntで認証付きダイナミックスキャンを実行するための機能です。

ログインが必要なWebアプリケーションをスキャンする場合、Syhuntがログイン処理を再現できるように認証方法を設定する必要があります。

Selenium-JS認証では、例えば以下のようなログイン操作をJavaScriptで記述できます。

  • ユーザー名の入力
  • パスワードの入力
  • その他の認証に必要な値の入力
  • ログインボタンのクリック

作成した認証用スクリプトをSyhuntのTarget設定に登録することで、スキャン時にSyhuntがスクリプトに記述された操作を実行し、ログイン処理を行います。

また、Syhunt側で設定したユーザー名とパスワードをスクリプト内から参照できるため、認証情報をスクリプトへ直接記述せずに利用することもできます。

このように、対象Webアプリケーションのログイン処理に合わせて、JavaScriptで認証操作を柔軟に設定できる点がSelenium-JS認証の特徴 です。



注記

なお、SyhuntにはSeleniumを利用した認証方法として「Selenium-Auto」も用意されています。 Selenium-Autoでは認証スクリプトが自動生成されるのに対し、Selenium-JSでは認証用スクリプトを自分で記述します。そのため、ログイン画面の構成に合わせて認証操作を細かく制御したい場合に活用できます。





2. 今回実施した環境


今回の操作確認では、以下の環境を使用しました。

  • OS:Windows 11
  • Syhunt:version 7.2.0.31
  • ブラウザ:Google Chrome

※なお、Seleniumを実行するためのSelenium WebDriverやChromeDriverなどを別途用意する必要はありません。





3. 基本の操作手順


Selenium-JS認証の設定には、Web UI版とCLI版の両方を使用します。

今回の手順では、認証方法やユーザー名、パスワードなどの基本設定をWeb UIで行い、認証用スクリプトをCLIから登録します。最後にWeb UIへ戻り、設定した内容で正常に認証できるかテストします。

大まかな流れは以下のとおりです。

【大まかな流れ】

  1. Web UIでSelenium-JS認証の基本設定を行う
  2. 認証用スクリプトを作成する
  3. CLIから認証用スクリプトをSyhuntへ登録する
  4. Web UIで認証テストを実行する
  5. 設定を保存してダイナミックスキャンを実行する

それでは、実際の画面を使って確認していきます。




3-1. Selenium-JS認証の基本設定


①ダイナミックスキャンを開く

ダイナミックスキャンを開く

Web UI版のメニュー 新規 から、ダイナミックスキャン を選択します。
(またはホームに移動してから Dynamic 項目の新規スキャンを選択)




【すでにターゲットを設定している場合】
なお、すでに設定済みのターゲットを利用することも、新しいURLをTargetとして追加することもできます。

すでにターゲットを設定している場合

メニューのターゲット追加 から新しいターゲットを追加するか、設定済みのターゲットURLを選択してください。




②ターゲットURLを設定する

ターゲットURLを設定する

ターゲットURLの項目に対象のURLを入力し、設定 を選択します。





③Selenium-JSの認証設定を行う


次に、認証タブ を開きます。

Selenium-JSの認証設定を行う

認証メソッドとしてSelenium-JS をクリックし、以下の情報を入力

  • ユーザー名:ログインID
  • パスワード:ログインパスワード



(補足)CLI版で ユーザ名とパスワード設定をする場合


なお、認証メソッド、ユーザー名、パスワードは、Web UI版だけでなくCLI版から設定することもできます。

コマンド
scancore -tg:"http://127.0.0.1/syhunt/office/index.php" -prefset:dynamic.formauth.type -v:Selenium-JS

scancore -tg:"http://127.0.0.1/syhunt/office/index.php" -prefset:dynamic.formauth.username -v:test

scancore -tg:"http://127.0.0.1/syhunt/office/index.php" -prefset:dynamic.formauth.password -v:*********




3-2. 認証用スクリプトを作成・登録する


続いて、ログイン操作を実行するための認証用スクリプトをCLIで作成し、Syhuntへ登録を行います。

Selenium-JS認証では、ログイン操作を記述したNode.jsスクリプト(JavaScriptファイル)を使用します。作成した認証用スクリプトは、セキュリティ上の理由からCLI経由でSyhuntのターゲット設定へ登録します。

注記

Node.jsとは、JavaScriptをWebブラウザの外でも実行できるようにするための実行環境です。Selenium-JS認証では、Node.jsで記述したカスタム認証スクリプトを使用します。




① 認証用スクリプトを作成する


まず、ログイン操作を記述したJavaScriptファイルを作成します。

今回は例として testselenium.jsを作成します。

注意: スクリプトに driver.get() を呼び出したり、driver.quit() を呼び出したりしないでください。Syhunt が自動的に処理します。すでにSyhunt側で定義されています。

javascript:testselenium.js
driver.findElement(By.id('office_code')).sendKeys('1234')
driver.findElement(By.id('username')).sendKeys('@user@')
driver.findElement(By.id('password')).sendKeys('@pass@')
driver.findElement(By.id('submit_btn_id')).click()

@user@@pass@ は、Web UI版またはCLI版で設定したユーザー名とパスワードが使用されます。

ユーザーIDやパスワードを sendKeys()に直接記述することもできますが、認証情報をスクリプト内に直接記述せず、 @user@@pass@ を利用してください。

なお、上記の例はユーザー名とパスワードのほかに office_code という入力項目があることを想定し、固定値として 1234 を指定しています。 ユーザー名やパスワード以外の入力値が必要な場合も、対象Webアプリケーションの認証処理に合わせてスクリプトへ追加できます。

Selenium-JS認証では、ログイン画面の構成に応じてJavaScriptで認証操作を記述できます。





②CLIから認証用スクリプトを登録する


作成したJavaScriptファイルを、以下のコマンドを使ってSyhuntのターゲット設定へ登録します。

コマンド
scancore -tg:"http://127.0.0.1/syhunt/office/index.php" -prefset:dynamic.formauth.script.seleniumjs.encrypted -fromfile:C:\Users\syhunt\Desktop\SyhuntWork\testselenium.js

-fromfile には、作成したJavaScriptファイルのパスを指定します。

これで、認証用スクリプトがTargetのSelenium-JS認証設定へ登録されます。





3-3. テスト実行する


次にWeb UI画面へ戻り、設定したSelenium-JS認証で正常にログインできるかテストを行います。




①Selenium-JS認証の設定画面を開いて内容を確認する


ダイナミックスキャンの認証タブでSelenium-JSを開き、設定内容を確認します。

Selenium-JS認証の設定画面を開いて内容を確認する

以下の3点を確認してください。

【確認すべき内容】

  • メソッドで Selenium-JSが選択されている
  • ユーザ名、パスワードが正しく入力されている
  • 認証用スクリプトの項目に、前セクションで読み込んだスクリプトの内容が表示されている

設定内容に問題がなければ、画面下部の ▶︎テストを実行をクリックします。





② テストの実行・設定完了


▶︎テストを実行を押すと、新規タブが開きます。

認証に成功すると、ステータスに SUCCESS と表示され、ログイン後の画面が表示されます。

テストの実行・設定完了

認証成功が確認できたらテスト用のタブを閉じます。
Selenium-JS認証設定の画面に戻り、最後に保存 を押します。


これでSelenium-JSの認証設定は完了です。





3-4. ダイナミックスキャンを実行


以降はダイナミックスキャン画面で対象URLやハント方法などを設定し、スキャンを開始することで、設定したSelenium-JS認証を利用したダイナミックスキャンを実行できます。





まとめ


今回は、Selenium-JS認証を利用してログイン操作をスクリプト化し、Syhuntへ登録して認証付きダイナミックスキャンを実行するまでの基本的な流れを紹介しました。

Selenium-JS認証の設定は、次のような流れになります。

  1. Web UIでSelenium-JS認証を設定する
  2. JavaScriptで認証用スクリプトを作成する
  3. CLIからスクリプトをSyhuntへ登録する
  4. Web UIで設定内容を確認する
  5. 認証テストを実行する
  6. 設定を保存してダイナミックスキャンを実行する

Selenium-JS認証では、ログイン画面の構成に合わせてJavaScriptで操作を記述できるため、ユーザー名とパスワードだけでは完結しない認証処理にも柔軟に対応できます。

また、Syhunt側で設定したユーザー名とパスワードを @user@@pass@ としてスクリプトから利用できるため、認証情報とログイン操作を分けて管理できます。

対象Webアプリケーションのログイン処理に合わせて認証操作を細かく制御したい場合は、Selenium-JS認証を活用してみてください。