Web Application Security Memo

ウェブセキュリティに関するメモ書き

IPA ウェブ健康診断仕様を使ったWebアプリ脆弱性検査(OSコマンド・インジェクション編)

※当サイトにはプロモーションが含まれています。

公開日: 更新日:

ウェブ健康診断仕様

IPAが公開しているウェブ健康診断仕様の中にあるOSコマンド・インジェクションの診断をやってみます。

診断内容

ウェブ健康診断仕様.pdf より抜粋

ウェブ健康診断仕様

診断する環境

  • クライアントOS:OS X
  • ブラウザ:Firefox (OWASP ZAPに対するプロキシ設定は済んでいるものとします)
  • HTTP通信を記録するツール:OWASP ZAP
  • 診断対象となるWebアプリケーション:

※ OWASP BWA、DVWA(Damn Vulnerable Web Application) については、こちらの記事 OWASP BWA (The Broken Web Applications) とは? を参照して下さい。

診断対象となるWebページ

DVWAの「Command Execution」ページ(Security Level: low) を診断します。

手順1:環境を用意する

順番に起動していくだけなので詳細は省略します。

1-1. VirtualBoxを起動

1-2. VirtualBox内の OWASP BWA を起動

1-3. OWASP ZAP を起動

1-4. Firefox を起動

手順2:目的のWebページにアクセスする

2-1. OWASP BWAのトップページにアクセスする。

2-1-1. http://192.168.0.50/ にアクセスします。

OWASP BWAトップページ

2-2. DVWAのXSS reflectedページにアクセスする。

2-2-1. “Damn Vulnerable Web Application” をクリックして、DVWAにアクセスするとログインページが表示されます。

2-2-2. Usernameに “admin”, Passwordに “admin” を入力して[Login]ボタンをクリックし、DVWAにログインします。

DVWAログインページ

2-2-3. 画面左の[Command Execution]メニューをクリックして、今回診断を行うページにアクセスします。

DVWAトップページ

DVWAのCommand Executionページ

手順3:診断を行う

今回の対象となるWebサーバOSは Linux なので、ウェブ健康診断仕様に記載された1つ目と2つ目の検出パターンを入力・サブミットし、そのレスポンスを調査します。

3-1. 検出パターン1

3-1-1. 検出パターン1の文字列「../../../../../../../bin/sleep 20|」を入力して[submit]ボタンをクリックします。 検出パターン1の入力

3-1-2. レスポンスを確認します。

  • 入力した文字列が消えた状態で画面が更新されました。
  • OWASP ZAPの履歴タブを見ると、レスポンスが返るのに54ms掛かったことが分かります。

検出パターン1の結果

検出パターン1のレスポンス情報

3-1-3. 脆弱性の有無を判断します。

  • ウェブ健康診断仕様には「20 秒レスポンスが遅くなる」場合に脆弱性有りと判定するとありますが、レスポンスは54msで返ってきましたので脆弱性無しの判定になります。

3-2. 検出パターン2

3-2-1. 検出パターン2の文字列「;/bin/sleep 20」を入力して[submit]ボタンをクリックします。 検出パターン2の入力

3-2-2. レスポンスを確認します。

  • 入力した文字列が消えた状態で画面が更新されました。
  • OWASP ZAPの履歴タブを見ると、レスポンスが返るのに約20秒(19,986ms)掛かったことが分かります。

検出パターン2の結果

検出パターン2のレスポンス情報

3-2-3. 脆弱性の有無を判断します。

  • ウェブ健康診断仕様には「20 秒レスポンスが遅くなる」場合に脆弱性有りと判定するとありますので、脆弱性有りの判定になります。

手順4:脆弱性診断の結果

検出パターン2において脆弱性有りの判定となりました。

手順5:対策アドバイス

  • 入力値に許可する文字列を限定します(ホワイトリスト方式)。

その他

  • 問題点等ありましたらご指摘下さい。

[最終更新日: 2014年3月3日]