
RealPlayer G2 ActiveX コントロールにおけるリモートコード実行(RCE)脆弱性の概念実証(PoC)エクスプロイト。javascript: および mhtml: URI を活用し、細工されたプレイリストファイルを介してコード実行を達成します。
ビデオデモ: https://www.youtube.com/watch?v=9c9Q4VZQOUk
Real Player G2 Control コンポーネントは、引数として 'javascript:' URI を渡すことを許可しているため、リモートコード実行の脆弱性を含みます。これは通常安全ではありません。なぜなら、一部のシナリオでは任意のドメインへのスクリプトコードの注入(Universal Cross Site Scripting - uXSS)を可能にし、例えばクッキーの窃取などに悪用される可能性があるからです。 'URL' パラメータに 'javascript:' URI を設定し、'target' パラメータに 'iframe' HTML 要素を設定することで、同じ Control を使って 'mhtml:http://%SERVER%/frame.htm' のような無効な URI に移動した後に表示されるローカルエラーページのコンテキストで JavaScript コードを実行させることが可能です。'mhtml:' URI が MS IE レンダリングエンジンによって呼び出されると、MIME タイプが "message/rfc822" に設定された拡張子の MHTML ファイルが期待されます。これは '.mht' ファイルの場合に当てはまります。'.htm' ファイルの MIME は 'text/html' に設定されているため、IE はドキュメントの読み込みをキャンセルし、ローカルエラーページ(ナビゲーションがキャンセルされました)を表示します。ローカルエラーページのアドレスは 'res://ieframe.dll/navcancl.htm' で、これは IE / Windows の 'My computer' セキュリティゾーンに属しており、設計上、任意のローカルファイルの読み取りと任意のコード実行が許可されています。 コントロール内で 'javascript:' URI を禁止することで、この問題は軽減されます。
PoC は 'SYSMON' ActiveX コントロールを使用して、ユーザーのスタートアップフォルダに HTA ファイルを配置します。これは次回のログオンまたは起動時に実行されます。HTA ファイルには、例えば埋め込まれた EXE ファイルをダウンロードまたは抽出して実行するコードを含めることができます。 PoC は、Real Player のカレントワーキングディレクトリがユーザーのホームディレクトリのサブディレクトリに設定されていることを前提としています。例えば Web ブラウザを使用してファイルをダウンロードすると、デフォルトでユーザーの 'Downloads' フォルダにダウンロードされるため、スタートアップフォルダに HTA ファイルを配置するために Windows ユーザー名を取得する必要はありません。これは便宜上のものであり、MS Web Browser ActiveX を含むさまざまな方法でこの情報を取得することが可能です。
この脆弱性は、RAM ファイルなどの Real Player プレイリストファイルを開くことで悪用される可能性があります。
問題を再現するには、次の手順を実行します。
a) Web サーバーをセットアップします b) Web サーバーのルートディレクトリに、"RP_G2" フォルダを展開します。 c) 展開したばかりの "RP_G2" フォルダを開き、次のファイルをテキストエディタで開きます。 "poc.htm"、"sm_rpx.js"、"start.ram" の各ファイルで、文字列 %SERVER% が含まれるすべての箇所を、実際の Web サーバーの IP アドレスに置き換えてください。 d) Web サーバーと関連するすべてのファイルにアクセスできることを確認してください。MS IIS Web サーバーでは、新しい拡張子を追加して MIME タイプに関連付ける必要がある場合があります。.RAM 拡張子を MIME タイプ "audio/x-pn-realaudio" に関連付けてください。 e) クライアント側(被害者)では、Web ブラウザを開いて "start.ram" ファイルをダウンロードし(または 'rtsp:' などの URL プロトコルを使用してアクセスすることもできます)、それを開きます。数秒後、ユーザーのスタートアップフォルダに HTA ファイルが配置されているのが確認できるはずです。
注: スタートアップフォルダを開くには、次のようにします。「ファイル名を指定して実行」(Run)メニューを開いて、次のように入力します。
shell:Startup
Enter キーを押すと完了です。
Real Player v.20.0.8.310(および数年前、例えば2014年頃までの下位バージョン)で、Windows XP SP3、Vista、7、8.1、10、11 上で、すべて最新のパッチが完全に適用された状態でテストに成功しました。 (例: Windows XP の最新アップデートは 2014 年 4 月、Windows 7 は 2020 年 1 月など)