OSコマンドインジェクション

    サマリーコマンドの注入(インジェクション)を許してしまうような実装不備によって生まれる脆弱性を「OSコマンドインジェクション脆弱性」と呼び、これを利用した攻撃のことを「OSコマンドインジェクション攻撃」と呼びます。この記事では、OSコマンドインジェクションの概要と被害例について解説しています。

    目次

    OSコマンドインジェクション とは

    Webアプリケーションには、開発段階の実装不備によって外部のユーザ入力からWebサーバにデータを送信した際にコマンドを注入され、実行されてしまうものがあります。このようなコマンドの注入(インジェクション)を許してしまうような実装不備によって生まれる脆弱性をOSコマンドインジェクション脆弱性と呼び、これを利用した攻撃のことをOSコマンドインジェクション攻撃と呼びます。

    攻撃者が仕掛けた罠にユーザが引っかかる事で達成される攻撃とは異なり、OSコマンドインジェクション攻撃は攻撃者とWebアプリケーションのみで完結するといった特徴があります。

    OS コマンドインジェクション脆弱性はユーザから受け取ったパラメータをもとに外部コマンドを実行する場合の実装不備が主な原因となります。

    OSコマンドインジェクションの手法

    OSコマンドインジェクションの脆弱性が存在するWebアプリケーションでは攻撃者がコマンドを注入する事で、Webサーバ上でコマンドを実行されてしまう可能性があります。ここではOSコマンドインジェクション脆弱性を利用する代表的な攻撃手法について解説していきます。

    基本的なコマンドの注入

    OSコマンドインジェクション脆弱性が生まれてしまう原因の一つとして、ユーザー入力からコマンド文字列を生成する過程の誤りがあります。これの最も代表的な誤りはバリデーション・エスケープなしで入力値を用いてしまうことでしょう。これにより、ユーザ入力のフォームから権限が及ぶ範囲で任意コマンド実行をすることができ、サーバ内のファイルの読み・書き・実行をされてまう可能性があります。

    具体的には、レスポンスの中に結果が表示される場合、「ls」や「find」コマンドが注入される事でサーバ中にどのようなファイルがあるかをレスポンス内に表示してしまいます。これによって、ファイルパスを知られてしまった場合、「cat」コマンドを実行され、ファイルの中身を見られてしまう可能性があります。

    また、ディレクトリ/ファイルに十分な権限を与えてしまっていた場合、攻撃者はファイルの書き込みまでもが可能となってしまいます。もし公開ディレクトリに OSコマンドインジェクション脆弱性経由で書き込みができる場合にはXSS攻撃につながってしまう事もあります。また、攻撃者の多くはサーバの操作をより自由にするためにroot権限の奪取といった権限昇格を試みます。

    OSコマンドインジェクション攻撃によって、 Webアプリケーションが動作している環境の情報収集が行われてしまう可能性があります。もしその環境に脆弱性があり、ここからの攻撃が成功してしまった場合、root権限が攻撃者の手に渡ってしまいます。

    ブラインドOSコマンドインジェクション

    OSコマンドインジェクションの中にはHTTPレスポンス中にコマンドの実行結果が含まれない場合があり、 これをブラインドOSコマンドインジェクション脆弱性と呼びます。このような場合でも、実行結果を取得する方法があり、攻撃されてしまう可能性があります。

    この方法として、攻撃者がWeb アプリケーションのあるサーバ上のシェルとの間でのコネクションを張り、自分のもつマシンやサーバ上の適当なポートで実行結果を取得するといったものがあります。

    発生しうるリスク・被害

    OS コマンドインジェクション攻撃を受けた場合、様々な被害にあう可能性があります。ここでは被害の例を紹介します。

    1. 情報漏洩

    サーバ内のファイル閲覧、改竄、消去が可能になる事で個人情報やクレジットカード番号をはじめとした重要情報が漏洩してしまいます。

    2. 管理者権限の奪取

    管理者権限を奪取されてしまうと、攻撃者はサーバを管理者権限下で動作させることが可能となるため、Webコンテンツの改竄や、サービスの停止、侵入範囲拡大のための踏み台に利用されるなどの被害に繋がってしまいます。

    ここで挙げた被害は例に過ぎず、他にも多くの被害があり、OS コマンドインジェクション脆弱性は大きなリスクとなってしまいます。

    Webアプリケーション診断の解説記事