ソフトウェア結合テストの方式|情報処理安全確保支援士 平成30年 秋期午前Ⅱ試験 問22
出典:平成30年秋期 午前Ⅱ 問22
分野:システム開発技術 / 統合・テスト
■25問中0問正解
■正答率:0%
このHTTPリクエストで注目する部分は、「user=;cat /etc/passwd」です。
これは、Webアプリケーションに対して、本来想定していないOSコマンドを実行させようとしている攻撃と考えられます。
| 部分 | 意味 |
|---|---|
| user= | Webアプリケーションに渡されるパラメータ |
| ; | UNIX系OSのシェルで、命令を区切る記号 |
| cat | ファイルの内容を表示するコマンド |
| /etc/passwd | UNIX系OSでユーザーアカウント情報が記録されているファイル |
本来であれば、userパラメータにはユーザー名などの通常の値が入る想定です。しかし、ここでは「;cat /etc/passwd」という文字列が入っています。
もしWebアプリケーションが、受け取ったuserパラメータを十分に検査せず、OSのシェルにそのまま渡してしまうと、次のように解釈される可能性があります。
本来実行されるコマンド ; cat /etc/passwd
セミコロン「;」は命令の区切りとして扱われるため、OSはこれを次の2つの命令として実行してしまうおそれがあります。
- 本来実行されるコマンド
- cat /etc/passwd
その結果、/etc/passwdの内容が読み取られ、ブラウザの画面などに表示されてしまう危険があります。
このように、入力値にOSコマンドを混ぜ込み、Webアプリケーションを通じて不正なコマンドを実行させる攻撃をOSコマンドインジェクションといいます。
つまり、このHTTPリクエストから推測できる脆弱性は、「利用者から受け取った値を適切に検査せず、OSコマンドとして実行してしまうOSコマンドインジェクション」です。
したがって、イが適切です。
❌他選択肢が誤りの理由ア:HTTPヘッダーインジェクション
⇒HTTPレスポンスヘッダーに改行コードなどを挿入し、不正なヘッダーやレスポンス本文を追加する攻撃です。本問では、HTTPヘッダーではなくURLパラメータにOSコマンドが埋め込まれています。
ウ:SQLインジェクション
⇒入力値に不正なSQL文を混入させ、データベースを不正に操作する攻撃です。
cat /etc/passwdはSQL文ではなく、OS上でファイルを表示するコマンドです。エ:クロスサイトスクリプティング
⇒Webページに不正なスクリプトを埋め込み、利用者のブラウザ上で実行させる攻撃です。本問の文字列はJavaScriptではなく、サーバ側でOSコマンドを実行させることを狙っています。
- ア:サンドイッチテスト
- イ:トップダウンテスト
- ウ:ビッグバンテスト
- エ:ボトムアップテスト