OSコマンドインジェクション【情報処理安全確保支援士講座】

今回は、情報処理安全確保支援士の試験で問われるOSコマンドインジェクションについて解説します。


この記事のまとめ
- OSコマンドインジェクションの概要
- OSコマンドインジェクションの流れ
- OSコマンドインジェクションの対策
OSコマンドインジェクション

OSコマンドインジェクションは、ユーザの入力データからOSコマンドを呼びだして処理するWebページの脆弱性を狙った攻撃です。
不正なコマンドを入力することで任意のファイルを読み出し、変更・削除・パスワードの不正取得などを行います。
OSコマンドインジェクションの実行方法
OSのコマンド呼び出しは、言語によって用意されている関数で実行します。OSコマンドの呼び出しで使用できる関数の一例は以下の通りです。
| 言語 | コマンドの例 |
| Perl | ‘command’ |
| system ‘command’ | |
| exec ‘command’ | |
| C/C++ | system(command) |
| exec(command) | |
| PHP | ‘command’ |
| system(command) | |
| exec(command) | |
| shell_exec(command) | |
| passthru(command) | |
| popen(command) |
Perlのopen関数などは、ユーザが指定したファイルの操作に使われるケースが多いです。しかし、パラメータの指定によって外部コマンドも呼びだせてしまうため、悪用されると任意のコマンドが呼び出されてしまうリスクがあります。
OSコマンドインジェクションの対策
OSコマンドインジェクションの対策方法は下記の通りです。
- OSコマンドの呼び出しが可能な関数を極力使用しない
- 入力データに使用可能な文字種や書式などのルールを明確にする
- ルールに沿って入力データを確認し、従わないデータはエラーとする

また、WAFによる遮断も有効です。
OSコマンドインジェクション・例題
実際に例題を解いて問題に慣れていきましょう。
問1
ア:HTTPヘッダーインジェクション
イ:OSコマンドインジェクション
ウ:クロスサイトリクエストフォージェリ
エ:セッションハイジャック
(ログイン後回答すると、ここに前回の正誤情報が表示されます)
問2
〔HTTPリクエストヘッダーの一部〕
GET /cgi-bin/submit.cgi?user=;cat%20/etc/passwd HTTP/1.1
Accept: */*
Accept-Language: ja
UA-CPU: x86
Accept-Encoding: gzip,deflate
User-Agent: (省略)
Host: test.example.com
Connection: Keep-Alive
ア:HTTPヘッダーインジェクション(HTTP Response Splitting)
イ:OSコマンドインジェクション
ウ:SQLインジェクション
エ:クロスサイトスクリプティング
(ログイン後回答すると、ここに前回の正誤情報が表示されます)
OSコマンドインジェクション・まとめ
この記事のまとめ
- OSコマンドインジェクションの概要
- OSコマンドインジェクションの流れ
- OSコマンドインジェクションの対策
今回はOSコマンドインジェクションについて学習しました。午前(科目A)試験で過去に何度か問われているので、攻撃の概要と対策方法は押さえておきましょう。
次回はHTTPヘッダインジェクション攻撃について学習します。








ディスカッション
コメント一覧
まだ、コメントがありません