LoginSignup
4
1

More than 3 years have passed since last update.

Azure FunctionsのAPIに対して脆弱性診断ツール「VADDY」を導入してみた

Last updated at Posted at 2020-10-08

セキュリティテストどうしようかな・・・

Azure FunctionsでガンガンAPI作ったはいいが、
いざサービスインするにはセキュリティテストが必要となることが多々ある(と思う)

ただ、場合によってはそこで第三者機関にお願いするほどかね~と悩むこともあるわけで。
そこで工期的にもお値段的にもコスパよくこの悩みを解決してくれそうなツールを見つけました。

というか、既に実績も多数ある様ですが、
それが今回使用した「VADDY」という脆弱性診断ツールです。

実際に3つのAPIを対象に診断レポートを出してみたのがこれ↓
1vaddyャ.png

各APIに対して下記項目をチェックしてくれている
・SQLインジェクション
・XSS(反射型)
・XSS(蓄積型)
・リモートファイルインクルージョン
・コマンドインジェクション
・ディレクトリトラバーサル

尚、上記項目はVADDYのProfessionalプランの項目であり、
これをEnterPrizeにすれば更に下記項目が追加される
・ブラインドSQLインジェクション
・安全でないデシリアライゼーション
・XML外部実体攻撃(XXE)
・HTTPヘッダインジェクション

プランとその料金についての詳しい内容は公式ページまで。

Azure Functions相手にVADDYを動かすのは探してもなかなか見つからず、
少し詰まったのでここにその手順を残す。

ちなみに、Azure Functionsに対してセキュリティテストをする際には、
事前申告が必要かと思ったが、なんと2017年6月段階でその必要性は無くなっていた・・・↓↓
https://docs.microsoft.com/ja-jp/azure/security/fundamentals/pen-testing

侵入テストのルールドキュメントもあったので参考として↓
https://www.microsoft.com/ja-jp/msrc/pentest-rules-of-engagement?rtc=3

というわけで、お構いなく当該ツールを利用させて頂くこととした。

手順

VADDYのアカウント取得

まずは1週間の無料トライアルにした。
なんとプロフェッショナルの機能をこの期間は使用可能。

下記URLから飛んで行って、
https://vaddy.net/ja/plan_plus.html
普通にパスワードやら設定してやれば良い。
image.png

作成したアカウントで当該サイトにログインするとこんな管理画面に来る↓
(ちなみに既にこれはプロジェクトを一つ作った状態です)
vaddyreal管理元年.PNG

プロジェクトを作成する

管理画面の左下部分にあるプロジェクトを作成ボタンをクリック↓
vaddyreal管理画面2.png

そして今回はAzure Functions叩くので上側のボタンクリック↓
vaddyProjectMake2.png

そしてこんな感じで設定して画面下部Createを押下
・プロジェクト名: なんでもよい
・ServerFQDN: 対象サーバーのURL
・BASIC認証: デフォルトのまま
9VADDY_PROJEFT_SETTING.png

したら完了画面的なのが出てくる↓
VADDY_SETTING_OK1.png

これでプロジェクト自体は作成できた

Valificationファイルを設定する

先程のプロジェクトの画面をよく見ると、検証対象サーバーに対するステータスがUnvelifiedになっている。
要は、その右側からダウンロードできるHTMLファイルをサーバーに設置して、
こちら側からそのURLを指定してこのファイル内に書いてあるValificationコードを読んでやらないといけない。

ここで思った。
え、AzureFunctionsのルートフォルダにそんなHTMLファイルを勝手におけんのか?
結構迷ったが、別にルートフォルダにそのHTMLを置かないといけないわけではない。
要は、このサーバー内にファイルを置いて、そこにURLでアクセスしてVerifyコードが読み取れれば良い。

てなわけで、AzureFuctionsの関数を追加して、このValifyコードをリターンするだけの処理を実装してデプロイした↓
見ての通り、JSのコードだがただVerifyコードを返すだけだ
5AzureFuctions2.png

URLは動画面の右上部にある「関数のURLの取得」から取れるのでコピーして取っておく

そして再びVADDYのプロジェクト画面を開き、ボタン「URL変更」をクリックしてここで先ほどのパスを指してやる
6vaddy_change_url.png

7vaddy_modifed_URL.png

※Azure FunctionsのURLに倣って、拡張子は無し

これで画面下部のボタン「Edit」をクリックする。

だが、まだ終わらない。。
最後にプロジェクト画面でボタン「Verify」を押下してVerifiedになればOK。
10verified.PNG

もし失敗したら画面上部に赤字でエラーメッセージが出るのでそれを参考にするとよい。
これで設定完了。

セキュリティテスト実行

遂にここまでたどり着いた。
APIのセキュリティテストの方法についてはこちらで紹介されていたが
慣れないcurlでのリクエストやらが上手くいかなかったので、原始的にブラウザを叩くやりかたにした。

まずはVADDYのサイドメニューから「Proxy Crawling」を選択
image.png

まあぶっちゃけここからの手順は遷移先画面に書いてある
21crawlingway.png

クローリング手順

  1. ブラウザのプロキシーをVADDYの設定に切り替え(IP( 54.92.84.100 )とポート番号( 28889))
  2. 当該画面の2に記載されているURLをクリック(クローリング開始)
  3. 検証したいAPIのURLをブラウザに打ち込んでリクエスト(必要なだけやる)
  4. 当該画面の4に記載されているURLをクリック(クローリング終了)
  5. プロキシを元に戻す

ただ1のプロキシー設定をChromeでやると、クローリングがなぜか途中から出来なくなった。
そこで公式ページの手順を見てみると、クローリング出来ないケースというのがあり、まさしくこの1ケース目の「HTTPS側のProxy設定が抜けている」だった。
つまりHTTPとHTTPS両方に対してProxyの手動設定をする必要がある。
とはいえChromeでそれを解決する方法は分からず、Firefoxに切り替えると下記の様にそれぞれに設定するダイヤログがあったのでこちらからクローリングすることで一応問題解決とした↓
image.png

上記の手順に従ってクローリング後、同画面を更新すると、上手くいっていればこんな感じでクローリング結果が出る(1回のクローリングにつき1件)
4.crawlingList.PNG

この欄にあるボタン「View」をクリックするとクローリングされたAPIのリストが見れる。
今回は4件APIを叩いたがそれが無事確認出来る↓
3crawlinglist.PNG

また先ほどの画面のクローリング一覧で同じ欄にある「Start Scan」⇒ 遷移先画面でボタン「Run VADDy scan」を押下するとセキュリティチェックが開始する
start_scan.PNG

無事スキャン出来たら下部のボタン「サマリーレポート」を押下すると、セキュリティ診断結果が確認出来る
scan_list.PNG

↓↓
1vaddyャ.png

最後に

Azure Functionsに対して行うのは初めての試みだったのでかなり手間取ったが
手順さえ覚えてしまえばこれだけのセキュリティテストとレポートの完成度であればかなり価値あると思う。
今後もどしどし使いたい。

以上、どどん。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1