アプリケーションの攻撃パターン - 8) ステルス・コマンディング

CGIなどのリクエストに不正な命令文を隠し込むことで、Webブラウザ上からWebアプリケーションに予想外の動作を引き起こす攻撃です。パラメータに不正な命令文を隠し込むことから、ステルスという名で呼ばれています。

a) OSコマンドインジェクション
WebアプリケーションのHTMLフォームやURLパラメータにOSコマンドを挿入することで、Webサーバ上で任意のOSコマンドを実行させる攻撃方法です。OSコマンドを外部から自在に実行できてしまうので、以下のような致命的な被害が生じる可能性があります。

  • 個人情報の窃取、消去
  • 管理者権限の奪取
  • サーバの設定変更
  • システムファイルの削除(システム破壊)
  • その他、OSコマンドで実行できるほとんどの現象
  • ※ もちろん、Webアプリケーションに脆弱性が存在しても、サーバの設定によっては外部から実行できるOSコマンドは制限されます。
b) SQLインジェクション
本格的なWebアプリケーションの場合、たいてい背後でデータベース管理システムが稼動しています。SQLは、データベースに接続するときに使われるプログラミング言語です。SQLインジェクションは、WebアプリケーションのHTMLフォームやURLパラメータにSQL文を挿入することで、Webブラウザ上からデータベース内の情報を操作してしまう攻撃です。

以下に具体例を示します。ここでは、ログイン画面上のパスワード入力欄にSQL文を挿入することで、任意のIDでログインを成功させてしまう例をご紹介します。

前提条件として、ユーザがアカウント情報を入力すると、WebアプリケーションがSQL文を発行し、データベース内の情報と照会が行われ、ログインの可否が判断されるという仕組みが使われているとします。
右の入力フォーム (図8-1)に、「techmatrix」というユーザIDと「1234」というパスワードを入力し、OKボタンを押すと、Webアプリケーションは以下のようなSQL文を発行し、データベースに照会を行います。

ステルス・コマンディング 図8-1

図8-1

ステルス・コマンディング 図8-2

ステルス・コマンディング 図8-2

図8-2

紹介した結果、情報が一致すればログインが成功します。

では、同じログインページで「techmatrix」というユーザIDと「’ OR ‘1’ = ‘1」というパスワードを入力してみます。すると、以下のようなSQL文が発行されます。(図8-3)
ステルス・コマンディング 図8-3

ステルス・コマンディング 図8-3

図8-3

すると、「‘1’ = ‘1’」という恒真式がOR演算の対象になるので、WHERE句全体が常に真(TRUE)となり、正規のパスワードが何であってもログインが成功してしまいます。
URLパラメータでユーザIDとパスワードを送信している場合は、アドレスバーに直接SQL文を挿入することで同じことが可能となります。

他の例としては、ユーザ登録情報を変更・削除を行うようなページで同じようにSQLインジェクションを実行すれば、すべてのユーザ情報を一挙に変更したり削除したりすることなども可能となってしまいます。

ステルス・コマンディングには他にも、XML検索条件をかく乱するXPATHインジェクション、ディレクトリ検索条件に干渉するLDAPインジェクションなどがあります。 いずれも、OSコマンドやSQLなどで利用される特殊記号の入力をそのまま受付けてしまうようなWebアプリケーションに対して実行できてしまう非常に危険な攻撃です。


本文中に記載されている会社名および製品名はそれぞれ各社の商標、または登録商標です。

AppScanに
関するお問い合わせ

  • テクマトリックス株式会社
    東京本社

    ネットワークセキュリティ事業部
    第3営業部
    セキュリティプロダクツ営業2課

    03-4405-7814

メールでのお問い合わせ
watchfire@techmatrix.co.jp

お問い合わせ

製品についてやテクマトリックスについてなど、
こちらよりお気軽にお問い合わせいただけます。