Vexは基本的にマウス操作だけでお使いいただけるように設計されている脆弱性診断・セキュリティ診断ツールですが、正規表現を用いることで、さらに高度な活用が可能となります。
本記事では「正規表現って何?」というVexユーザの方向けに、正規表現の基礎とVexでの活用方法をご紹介します。
正規表現とは?
正規表現とは、文字列のパターンについての表記です。
例えば、「<[^>]*>」という正規表現は「HTMLのすべてのタグ」というパターンを表すことができます。
「<[^>]*>」は、<HEAD>や<TITLE>のようなタグや、</H1>などの閉じタグも表しますが、「19<20」、「{{% contents %}}」といったHTMLタグではない文字列は表しません。
正規表現では、特殊な文字を使って様々なパターンを表すことができます。
特殊文字一例
. |
任意の1文字 |
¥d | 数字(0-9) |
¥s | 空白(スペース、タブ等) |
¥w | アルファベット、数字、アンダーバー(a-zA-Z_0-9) |
まずは、正規表現の活用方法について簡単にご説明します。
テキストエディタやCLIでテキストを変更する際、下記のような正規表現を用いれば、左側の文字列を右側の文字列に置換することができます。1000行でも一斉に置換ができるため、大変便利です。
また、パターンにあった文字列を検索する際にも正規表現は役に立ちます。
例えば文字列の中から「ubsecure」を探す際、通常は「ubsecure」で検索を行いますが、行末を表す「$」を付けて、「ubsecure$」と検索すれば、行末にある「ubsecure」だけを見つけだすことも可能です。
正規表現の使い方
正規表現はVexにおいてパラメータの取得に活用することができます。
今回はイチから正規表現を作り、Vexで活用する手順を4ステップに沿ってご紹介します。
- Step1. 値のパターン(傾向)をつかむ
- Step2. パターンを正規表現にする
- Step3. Vexに設定する
- Step4. テスト&微調整
Step1. 値のパターン(傾向)をつかむ
Vexでは検査に際して通信内容から値を取得したい場合があります。
そこで、まずは取得したい値についてパターンをつかみましょう。
本ケースでは取得したい値が、下記のように複数あるとします。
これらの値を見てみると、全て「test+数字2文字」のパターンになっていることが分かります。
Step2. パターンを正規表現にする
取得する値のパターンが分かったら、次はパターンを正規表現にしていきましょう。
先ほどのパターンの中で、固定されていない、変動する文字列だけを特殊文字で表します。
前述のリストにもあった通り、「¥d」が0-9の数字1文字を表現するので、この場合は「test¥d¥d」と表現します。
Step3. Vexに設定する
Vexの取得元に作成した正規表現を設定します。
Vexに設定する際は必ず()で括るので、「(test¥d¥d)」と入力します。
設定例
Step4. テスト&微調整
最後に入力した正規表現が間違っていないか確認して終了です。
Vexの便利機能を活用した正規表現の使い方
先程は4ステップで説明しましたが、Vexには正規表現を使用するための大変便利な機能が搭載されていますので、同じ工程を実はたったの2ステップで行うことができます。
- Step1.値を選択して正規表現を選ぶ
- Step2.テスト&微調整
Step1.値を選択して正規表現を選ぶ
Vexに搭載されている正規表現チェッカー機能では、文字列をカーソルで選択すると、自動的に複数の正規表現が提案されるようになっています。プルダウンの選択肢の中から適切なものを選択してクリックするだけで正規表現が完成します。
Step2.テスト&微調整
Step1で選択したものは自動で正規表現の欄に入力されます。その後、その横にある検索ボタンをクリックするだけで、該当箇所がハイライトされます。このように、Vexでは視覚的な検索とテストを簡単に行うことが可能です。
実際の事例
ユービーセキュアの担当者が、実際にVexでの診断時に使用したことがある正規表現をご紹介します。
下記表の通り、URLの一部、時間、タグの属性の値を、正規表現で記入して取得しました。
カテゴリ | HTML上の記述 | 正規表現 |
URLの一部 | test/~.html | test/([^.]*)¥.html$ |
時間 | 今は13:40です。 | (¥d¥d:¥d¥d) |
タグの属性の値 | <h1 align="~"> | <h1 align="([^"]*)"> |
さらに 「パラメータ名に変化がある時や一致する文字列があるときだけ値を書き換える」、「n番目にマッチする文字列を取得する」といったような、より複雑な処理も効率的に行うことができます。
今回は入門編ということで、テクニックの一つとして正規表現を簡単にご紹介しました。
Vexはマウス操作だけでお使いいただけるように設計されていますが、正規表現を使いこなすことで、より複雑な処理を効率的に行うことが可能になります。
ユービーセキュアでは、Vexユーザの方向けにこのようなテクニックをご紹介する『Vexスキルアップオンライン講義』を定期的に開催しております。Vexを使いこなすことはもちろん、効率的で効果的な脆弱性検査のヒントとしてぜひお気軽にご参加ください。