最近のペネトレーション(侵入)テストにおいて、自然に私の目にとまった非標準ポート 5054 で実行される、興味深い RLM と呼ばれる Web アプリケーションに遭遇しました。ちょっとした ことで、私はサーバー上でコードを実行できる重大な脆弱性を特定することができ、最終的に は完全なドメイン侵害につながるものです。
残念ながら、私の最善の努力にもかかわらず、ベンダーはこれらの発見が脆弱性であるとは 考えていないため、パッチの発行を拒否しています(下記ベンダーの対応を参照)。
責任ある開示のために、詳細は次のとおりです。
ベンダー: Reprise Software (//www.reprisesoftware.com)
製品: RLM
Version 影響を受けるバージョン: 12.2BL2 and earlier
説明:
「RLM は、エンタープライズクラスのライセンスマネージャーから必要と期待されるすべ ての機能を提供し、オンプレミスまたはクラウドのどちらかで使い慣れた簡単な管理機 能を備えています。」
残念ながら、ポート 5054 上で実行されている RLM Web アプリケーションでは、攻撃者はサ ーバー上の任意のライセンスファイルを指定して読み取りおよび変更することができます。 rlm.exe で提供された Web インターフェイスでこの脆弱性を悪用すると、マルウェアのアップロ ードによる情報漏洩やリモートコード実行が発生する可能性があります。
XSS(反射型)脆弱性もライセンスエディタに存在します。それについてはこの記事の後半で説 明します。
PoC: 任意のファイル書き込みを伴う RCE
攻撃者は、RLM Web インターフェイスを使用して、 rlm.exe がアクセスできる限り、ディスク上 の任意のファイルにデータを読み書きすることができます。デフォルトでは、ポート 5054 上で 実行されている RLM の Web サーバーは認証を必要としません。
リモートでコードが実行できるように、この脆弱性を利用して次のいずれかにマルウェアを書き 込むことができます。
- ユーザーAppData スタートアップフォルダー: %APPDATA%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
- (rlm.exe が特権を持っている場合) IIS Webroot: %SYSTEMDRIVE%:\inetpub\wwwroot\shell.aspx
- (rlm.exe が特権を持っている場合) すべてのユーザーStartup folder:%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Startup\
ユーザースタートアップフォルダ経由の RCE の例
次の例では、ユーザーのスタートアップフォルダに ConfigureProfile.bat リバースシェルを書き 込みます %APPDATA%\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\. 。この攻撃は管 理アクセスを必要とせず、RLM が低特権ユーザとして実行されている場合にコードを実行する ために使用できます。
rlm.exe のユーザーコンテキストと書き込み可能な Start Menu Startup フォルダを見つける ために、Web ベースの診断ツールを使用できます。//TARGET:5054/goforms/diagnostics //TARGET:5054/goforms/diagnostics
診断テキストファイルは、Web ベースのライセンスエディタを使用して読み取ることができるユ ーザー指定の場所に生成されます。
次の Empire リバースシェルが以下のフォルダに書き込まれます。 C:\Users\Bob\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\ConfigureProfile.bat:
マルウェアをディスクに書き込む
マルウェアのコンテンツは lfdata 経由で渡され、ターゲットパスは lf で指定されます。
ユーザー Bob が再びログインすると ConfigureProfile.bat が実行されます。この攻撃とサー ビス拒否攻撃を組み合わせると、新しいログインや再起動を迅速に行うことができます。
昇格された権限で rlm.exe が実行されている場合は、代わりに、 %PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Startup\ にシェルを書き込 むほうがよいかもしれません。
PoC: RLM における反射型 XSS
RLM の Web インターフェイスにある /goform/edit_lf_get_data URL の lf パラメータに、クロス サイトスクリプティングの脆弱性が存在します。
RLM はこの URL に対しては POST を実行せず、ペイロードも GET リクエストで渡されます。
レスポンスにおいて反射された XSS ペイロード
ペイロードは、 POST か GET を使って lf パラメータを介して渡されます。
ベンダーの対応
ベンダーにコンタクトしましたが、これがセキュリティ上のリスクであると受け入れるか、パッチ を発行することを拒否しました。私たちの電子メールの対応の間、一般的なテーマは以下のよ うになります。
「我々はエンドユーザに対して、特権モードで rlm サーバ(Web サーバを実装している) を実行しないように伝えます。昇格された権限で実行する必要はありません。」
良い。それがベストプラクティスです。もちろん、彼らは、ユーザーがベストプラクティスを無視 し、通常はデフォルト設定を使用していることを認識しています。正しいですか?
良い。それがベストプラクティスです。もちろん、彼らは、ユーザーがベストプラクティスを無視 し、通常はデフォルト設定を使用していることを認識しています。正しいですか?
うーむ、あなたのシステムのメモ帳やワードパッドに RLM ポートへのアクセス権を持つ誰もが アクセスできないようにしない限り、そうではありません。我々は、リモートから匿名でアクセス できるファイルエディタと notepad.exe との違いを説明しようとしましたが、ベンダーの最終的 な回答は次のとおりでした。
「これは脆弱性とはみなされず、vi やメモ帳以外の脆弱性も存在します。もちろん、誰も サーバーを root/administrator として実行するべきではありません。それでもするので あれば、なるようになるでしょう。Web インターフェイスを無効にすることもできますし、 実行したい場合はログインを有効にすることもできます。 そのため、管理者がファイル の書き込みを防止する機会がたくさんあります。」
このサポート担当者が潜在的なリスクについて十分に教育されていないことは明らかですが、 実際の問題はサポートスタッフではなく、サードパーティの脆弱性レポートを承認するプロセス が確立されていない組織です。彼らの反応は敵対的に聞こえるかもしれませんが、このサポ ート担当者にはエスカレーションの道がなかったのです。
この開示プロセスの間で直面した最大の問題は、正しいオーディエンスの前での開示を行うこ とです。これらのベンダーは、基本的に顧客のために製品を保護するための無料の監査を受 けていますが、我々は彼らがレポートを処理する方法がわからないという単純な理由のため に敵意を持たれことがよくあります。もしあなたが自前でこのプロセスをサポートする能力を持 てないのであれば、自身のためにプロセスを開始し管理することができる Bugcrowd のような サードパーティも利用することが可能です。
推奨事項
Web サーバーコンポーネントを使用する必要がある場合:
- 高い権限で RLM を実行しないでください
- RLM Web サーバーへのネットワークアクセスを制限してください
- RLM Web サーバーの強力な認証を有効にしてください
タイムライン
- 05/18/2018 - 脆弱性情報がベンダーに開示された
- 05/18/2018 - ベンダーは修正を拒否し、脆弱性ではないと主張
- 05/21/2018 - ベンダーは再検討とパッチ適用を推奨された
- 06/04/2018 - ベンダーがコミュニケーションの中止を選択
- 07/18/2018 - 一般公開