
CVE-2024-23997 の PoC
CVE-2024-23997 脆弱性の Proof-Of-Concept。
cf) プロキシ、特にWebプロキシは、Web通信の中間でエージェントとして動作し、他の人に代わってリクエストとレスポンスを受信・転送します。そのため、YANAが使用するポートに関係なく、プロキシは通信を傍受できます。プロキシはセキュリティやキャッシュによる検索速度の向上に使用されますが、多くの悪意のあるプログラムがこれを悪用して、ユーザーが送信するWeb通信を盗聴します。
YANAを使った例を1つ見てみましょう。練習環境を構築するために、マルウェアとして動作するプロキシツールであるBurp SuiteをWindows 10にインストールしました。Burp SuiteはPortSwiggerによるネットワークセキュリティ診断ツールで、コミュニティ版は無料で利用できます。この例に従う場合は、練習のためにネットワーク設定の変更が必要となるため、復元が必要であることに注意してください。
ステップ1) 実際のマルウェアはインターネット設定を変更せず、Windows APIやLinux APIなどを使用してパケットをリッスンします。ただし、複雑なため、オプションは手動で有効化されます。Windowsキーを押して「インターネットオプション」を検索します。
ステップ2) 「接続」タブに移動し、「LANの設定」ボタンをクリックします。
ステップ3) 「LANにプロキシサーバーを使用する」にチェックを入れ、「詳細設定」ボタンをクリックします。設定を復元するには、チェックを外すだけです。
ステップ4) サーバーのHTTPの内容を「127.0.0.1」、「8080」に変更し、例外を「<-loopback>」に変更して、OKボタンをクリックして保存します。
ステップ5) Burp Suiteを開きます。
ステップ6) 検証のみ行うため、「Temporary project in memory」にチェックを入れ、「Next」ボタンをクリックします。
ステップ7) 「Use Burp defaults」を選択し、「Start Burp」ボタンをクリックします。
ステップ8) 「Proxy」タブに移動し、「Proxy settings」をクリックして、「Proxy listeners」でプロキシが127.0.0.1:8080に設定されているか、「Running」にチェックが入っているかを確認します。また、「Proxy listeners」の「Response interception rules」に移動し、「Intercept response based on the following rules」にチェックを入れます。設定ウィンドウを閉じると、オプションが自動的に適用されます。
ステップ9) 「Proxy」の「Intercept」タブに移動し、「Intercept is on」になっていることを確認してから、Yanaを開きます。Interceptが有効な場合、すべてのHTTP/HTTPS通信は保留され、Interceptが無効化されるか「Forward」が押されるまで相手に送信されません。
ステップ10) 「Forward」ボタンを押しながら、Yanaのバックグラウンドサーバーから受信したレスポンスの中からHTMLレスポンスを探します。HTMLドキュメントのtitleタグがYanaと書かれているため、区別は簡単です。
ステップ11) HTMLのbodyタグの下に、scriptタグを使用してJSコード(“<script>require('child_process').exec('C:/Windows/System32/calc.exe')</script>”)を挿入します。
ステップ12) 次に、「Intercept is on」を無効にすると、YanaのElectronプログラムがパケットを受信してスクリプトを実行し、電卓プログラムが起動します。
ステップ13) 練習が完了したら、「インターネットオプション」に移動し、プロキシサーバーの使用を無効にします。
これは、YanaでnodeIntegrationオプションが有効になっているためです。このオプションが無効になっている場合でも、他のさまざまな方法を使用してHTMLからNode.jsコードを実行することが可能になります。Yanaの権限で実行され、Yanaが管理者またはroot権限で実行されている場合、注入された悪意のあるコードもその権限で実行される可能性があります。したがって、前述のとおり、HTTPプロトコルを使用するよりも、プログラム間通信で傍受がより困難なFileプロトコルなどのプロトコルを使用してHTMLページを取得および表示する方が安全です。