• TREND MICRO
検索:
  • サイバー攻撃
  • サイバー犯罪
  • モバイル
  • クラウド
  • ソーシャル
  • 脆弱性
ホーム   »   脆弱性   »   データベース「MongoDB」の管理ツール「phpMoAdmin」に存在するゼロデイ脆弱性の解析

データベース「MongoDB」の管理ツール「phpMoAdmin」に存在するゼロデイ脆弱性の解析

  • 投稿日:2015年3月10日
  • 脅威カテゴリ:脆弱性, TrendLabs Report
  • 執筆:Vulnerability Research Engineer - Suraj Sahu
0

「PHP MongoDB administration tool(phpMoAdmin)」は、オープンソースのドキュメント指向データベース「MongoDB」をグラフィカルユーザインタフェース(GUI)で操作できる無料の管理ツールです。phpMoAdmin は 、NoSQL のデータベース「MongoDB」を管理する人気のツールで、PHP言語で記述されています。

2015年3月上旬、リモートでコードが実行されるゼロデイ脆弱性が、「phpMoAdmin」で確認されました。この脆弱性を利用することにより、攻撃者は、認証なしに任意のコードを実行することができます。これは、コマンドインジェクションの脆弱性で、通常は、Webアプリケーションがユーザの入力に基づいて特定のオペレーティングシステム(OS)のコマンドを実行する際に発生するものです。

■脆弱性の解析
この脆弱性は、「moadmin.php」という PHPファイルに存在します。ファイル「moadmin.php」のコード内での関数「eval」の使用方法が適切でないため、攻撃者は「system」や「eval」、「exec」などの PHP の関数を用いて、シェルコマンド(OSコマンド)を実行することができます。

この脆弱性を利用するためには、以下の 2つの攻撃経路があります。以下はファイル「moadmin.php」の脆弱性を抱えたコードです。

  1. パラメータ「find」内の脆弱性を抱えたコード
  2. 図1:moadmin.php 内の脆弱性を抱えたコード(パラメータ「find」)
    図1:moadmin.php 内の脆弱性を抱えたコード(パラメータ「find」)

  3. パラメータ「object」内の脆弱性を抱えたコード

図2:moadmin.php 内の脆弱性を抱えたコード(パラメータ「object」)
図2:moadmin.php 内の脆弱性を抱えたコード(パラメータ「object」)

上述の 2つのパラメータにより、脆弱性を抱えたサーバ上で、適切なパラメータ値と共に任意コードの実行が可能になります。

パラメータ「find」を利用するために、「POST」や「GET」、「CONNECT」、「PUT」など、さまざまなHTTPのの要求を利用することができることを確認しました。しかしパラメータ「object」は、POST要求のみで利用することが可能でした。

この脆弱性を利用した攻撃は、容易に実行することができます。サーバ側は、修正プログラムを速やかに適用するか、この脆弱性に対応したセキュリティ対策製品を導入することを推奨致します。以下は、この脆弱性を利用した攻撃を検証したものです。

  1. パラメータ「find」を利用した場合

POST /xyz/moadmin.php?action=listrows&collection=nnn&find=array();system('ls'); HTTP/1.1
GET /xyz/moadmin.php?action=listrows&collection=nnn&find=array();system('ls'); HTTP/1.1
CONNECT /xyz/moadmin.php?action=listrows&collection=nnn&find=array();system('ls'); HTTP/1.1
PUT /xyz/moadmin.php?action=listrows&collection=nnn&find=array();system('ls'); HTTP/1.1

上記のコマンドにより、サーバはコマンド「ls」を実行します。図3 は、ネットワーク上でのこの脆弱性を利用した攻撃を示したものです。

図3:パラメータ「find」を利用した場合の HTTPヘッダ
図3:パラメータ「find」を利用した場合のリクエスト・レスポンス

コマンド「ls」の結果は、HTTPヘッダの後に確認することができます。HTTP のさまざまな要求を利用して、遠隔からコードを実行をすることが可能です。パラメータ「find」を利用するためには、「action=listrows」、「collection=ランダムな値」、「find=array()」で初期化する必要があります。コマンド「Is」は、最後の「system()」コール内で確認できます。

  1. パラメータ「object」を利用した場合

curl "http://xyz /moadmin.php" -d "object=1;system('id');exit"

以下はネットワーク上でのこの脆弱性を利用した攻撃を示したものです。

図4:パラメータ「object」を利用した場合のHTTPヘッダ
図4:パラメータ「object」を利用した場合のリクエスト・レスポンス

弊社は調査により、パラメータ「object」を利用した攻撃では、POST要求のみが利用可能であることを確認しました。パラメータ「object」を利用するために、「object」をランダムな値で初期化する必要があります。「find」の場合と同様、コマンド「ls」の結果は、HTTPヘッダの後に確認することができます。

攻撃者がこの脆弱性を利用してその他のコマンドを実行するのは、難しくないでしょう。その結果、不正なファイルがダウンロードされたり、実行されるなど、サーバにより深刻な被害を与える可能性があります。攻撃が成功すると、攻撃者がサーバを制御することが可能になります。

弊社のサーバ向け総合セキュリティ製品「Trend Micro Deep Security(トレンドマイクロ ディープセキュリティ)」ご利用のお客様は、以下のフィルタを適用することにより、問題の脆弱性を利用した攻撃から保護されます。

  • 1006559 – PHPMoAdmin Unauthorized Remote Code Execution Vulnerability

参考記事:

  • 「Zero-Day Vulnerability Found in MongoDB Administration Tool phpMoAdmin」
    by Suraj Sahu (Vulnerability Research Engineer)

翻訳:臼本 将貴(Core Technology Marketing, TrendLabs)

No related posts.

Tags: MongoDBphpMoAdmin

人気の投稿

  • SSL/TLS通信時の脆弱性「FREAK」、その影響度は?
  • Linuxに存在する脆弱性「GHOST」、システム管理者は落ち着いて対処を
  • Adobe Flash Playerのゼロデイ脆弱性への攻撃を確認
  • SSL 3.0 の脆弱性「POODLE 」とは?
  • 12月8日から急増の請求書偽装スパム、主な狙いは国内銀行15行の認証情報か?

関連記事

関連記事はありません。

関連ホワイトペーパー

    カレンダー

    2015年3月
    日 月 火 水 木 金 土
    « 2月    
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  
    • 個人のお客さま向けオンラインショップ
    • |
    • 法人のお客さま向け直営ストア
    • |
    • 販売パートナー検索
    • Asia Pacific Region (APAC): Australia / New Zealand, 中国, 日本, 대한민국, 台灣
    • Latin America Region (LAR): Brasil, México
    • North America Region (NABU): United States, Canada
    • Europe, Middle East, & Africa Region (EMEA): France, Deutschland / Österreich / Schweiz, Italia, Россия, España, United Kingdom / Ireland
    • 電子公告
    • ご利用条件
    • プライバシーポリシー
    • Copyright © 2014 Trend Micro Incorporated. All rights reserved.