
Real PlayerのDCP URIスキームを介した任意のコード実行に対する概念実証エクスプロイト(ファイルプランティングとActiveXコントロールのバイパスを利用)。
Real Playerの'DCP://'URIリモート任意コード実行の脆弱性
ビデオデモ: https://youtu.be/AMODp3iTnqY
'DCP://' URIスキームは、Real PlayerがPlayerブラウザタブに表示するURLを取得するために使用する内部プロトコルです。 これは「Data Cache Protocol」の略です。'%appdata%\real\realplayer' からファイルを取得します。 これらのファイルは、以下のコードを持つ単純な '.ini' ファイルです。
'offlineurl' 属性は無視されるように見えますが、ローカルファイルへのURLや安全でない 'Javascript:' URIを含む任意のURLを渡すことが可能です。
例: dcp://custom.ini
これにより、ユニバーサルクロスサイトスクリプティング状態(uXSS)が発生する可能性があります。
Real PlayerはMicrosoft Internet Explorerの機能を使用し、アプリケーション固有の特別な手段を通じてプロパティとメソッドを公開します:
'external' オブジェクトは、いくつかのカスタムメソッドとプロパティを公開します。
リモートファイルを取得することはできませんが、親ディレクトリ(..\)を使用してファイルを取得することが可能です。そのためには、'external::OpenURLInPlayerBrowser()' メソッドを使用できます。
この問題を 'external::RecordClip()' メソッドによるファイルプランティングの問題と組み合わせることで、予測可能な場所に有効な '.ini' ファイル(拡張子はありませんが)を植え付けることができます:
'Videos\RealPlayer Downloads'。
2つのファイルを植え付け、さらに 'DCP://' URIを介してそれらを参照することで、任意のドメインまたは「セキュリティゾーン」(Windowsセキュリティゾーン)に属するURLを参照し、カスタムJavaScriptコードを注入することが可能です。
PoCは、安全でないActiveXコントロールのプロンプトを「無効化」し、'cmd.exe' を実行するコードを持つ2番目のファイルを指すMSHTAを実行するコードを使用します。例えば、埋め込みEXEを含むことができます。
この問題を再現するには、ファイルを編集して '%server%' を実際のサーバーのホスト名またはIPに置き換えるだけです。また、'dcp1.txt' と 'rp_dcp.htm' のファイルで '%username%' をターゲットの実際のWindowsユーザー名に置き換えます。
注:Windowsユーザー名は、SMBサーバーまたはWebDAVサーバーへのリクエストによって取得できます。
影響を受けるバージョン: 16.0.3.51, Cloud 17.0.9.17, v.20.0.7.309 (すべてのWindowsバージョン、XPから11まで)