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

2026年1月11日

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

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

アカリ
アカリ
※※インジェクションっていくつかあるんだね!
トモル
トモル
まだ他にもあるみたいだよ~

この記事のまとめ

  1. OSコマンドインジェクションの概要
  2. OSコマンドインジェクションの流れ
  3. 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コマンドインジェクションの対策方法
  • OSコマンドの呼び出しが可能な関数を極力使用しない
  • 入力データに使用可能な文字種や書式などのルールを明確にする
  • ルールに沿って入力データを確認し、従わないデータはエラーとする
キュー
キュー
ちなみにOSコマンドインジェクションでは、エスケープ処理をしようとすると複雑になる傾向があるから処理しない方が安全やで

また、WAFによる遮断も有効です。

スポンサーリンク

OSコマンドインジェクション・例題

実際に例題を解いて問題に慣れていきましょう。

問1

Webアプリケーションの脆弱性を悪用する攻撃手法のうち,Webページ上で入力した文字列がPerlのsystem関数やPHPのexec関数などに渡されることを利用し,不正にシェルスクリプトを実行させるものは,どれに分類されるか。(H.30秋/問13)

ア:HTTPヘッダーインジェクション
イ:OSコマンドインジェクション
ウ:クロスサイトリクエストフォージェリ
エ:セッションハイジャック

(ログイン後回答すると、ここに前回の正誤情報が表示されます)

問1の正解を表示

問1の解説を表示

ア:HTTPヘッダーインジェクション
→HTTPヘッダーインジェクションは、HTTPを使って通信するシステムにおいて、動的にHTTPヘッダを生成する機能の不備を突いてヘッダ行を挿入することで不正な動作を行なわせる攻撃手法です。したがって誤りです。

イ:OSコマンドインジェクション
→OSコマンドインジェクションは、ユーザーが入力した値をOSに対する命令文として使用するWebシステムに対して、OSへの命令文を含むデータを入力し不正なOSコマンドを実行させ、ファイル削除・変更・パスワードの不正取得などを行う攻撃です。したがって正解です。

ウ:クロスサイトリクエストフォージェリ
→ログイン済みのユーザーが意図しない操作(送金、投稿、退会など)を、攻撃者の用意した不正なウェブサイトやメールを通じて強制的に実行させられる脆弱性や攻撃手法です。したがって誤りです。

エ:セッションハイジャック
→悪意のある攻撃者がユーザーセッションを制御し、正規のユーザーになりすまして機密情報へのアクセスや不正な操作を行う攻撃です。したがって誤りです。

これより、「イ」が正解です。

問2

Webサーバのログを分析したところ,Webサーバへの攻撃と思われるHTTPリクエストヘッダーが記録されていた。次のHTTPリクエストヘッダーから推測できる,攻撃者が悪用しようとしていた脆弱性はどれか。ここで,HTTPリクエストヘッダー中の”%20″は空白を意味する。(R.2秋/問1)

〔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インジェクション
エ:クロスサイトスクリプティング

(ログイン後回答すると、ここに前回の正誤情報が表示されます)

問2の正解を表示

問2の解説を表示

HTTPリクエストヘッダーの中で、?user=;cat%20/etc/passwdに注目しましょう。

catはUNIX系のOSでファイルの内容を出力するコマンドで、/etc/passwdはユーザーのアカウント情報(ユーザー名・パスワードなど)が記録されているファイルへのパスです。したがって、cat%20/etc/passwdはシステムが管理するユーザーのアカウント情報の取得を意図した入力と考えられます。

この攻撃は、Webアプリケーションに任意のOSコマンドを実行させることを意図しているため、対応すべき脆弱性はOSコマンドインジェクションです。
したがって「イ」が正解です。

OSコマンドインジェクション・まとめ

この記事のまとめ

  1. OSコマンドインジェクションの概要
  2. OSコマンドインジェクションの流れ
  3. OSコマンドインジェクションの対策

今回はOSコマンドインジェクションについて学習しました。午前(科目A)試験で過去に何度か問われているので、攻撃の概要と対策方法は押さえておきましょう。

次回はHTTPヘッダインジェクション攻撃について学習します。


本気で支援士を狙うなら・・・
支援士ゼミがおすすめです!
  • ベテラン講師による手厚いサポート
  • モチベーションを保てるセキュリティコラムが満載!
  • マンツーマン形式で個別相談もできる!

スポンサーリンク