
Sites Ghost CMS desatualizados que foram comprometidos pelo CVE-2026-26980 podem sofrer com injeção de código spam em páginas. Use esta ferramenta para limpar e editar em massa campos de injeção de código.
Remove toda a injeção de código por post e por página de um site Ghost CMS via a API de Administração.
A injeção de código em todo o site (Ghost Admin → Configurações → Injeção de código) nunca é tocada.
pip install requests PyJWT
6478abc123def456:8f9e0d1c2b3a4567890abcdef1234567890abcdef1234567890abcdef12345678
Crie um arquivo chamado ghost_cleaner_config.json no mesmo diretório do script:
{
"ghost_url": "https://seudominio.com",
"admin_api_key": "SEU_ID_DA_CHAVE:SEU_SEGREDO_DA_CHAVE"
}
Se você pular esta etapa, o script criará um arquivo de configuração de exemplo na primeira execução e sairá — basta preenchê-lo e executar novamente.
Execute sempre primeiro para ver exatamente o que seria limpo antes de tocar em qualquer coisa:
python3 ghost_injection_cleaner.py
Exemplo de saída:
Ghost Injection Remover
Modo : SIMULAÇÃO (somente leitura)
Alvo: https://seudominio.com
NOTA: /ghost/api/admin/settings/ (injeção em todo o site) nunca
é lida ou escrita por este script.
============================================================
POSTS
============================================================
47 posts obtidos.
✦ 'Meu Primeiro Post'
HEAD: '<script>(function(){var _x="...ofuscado..."</script>'
🔍 SIMULAÇÃO — seria limpo.
============================================================
PÁGINAS
============================================================
6 páginas obtidas.
============================================================
RESUMO
============================================================
Limparia : 1 posts/páginas
Já limpo: 52 posts/páginas
Execute novamente com --apply para confirmar essas alterações.
Depois de satisfeito com a saída da simulação, execute com --apply. Será solicitada confirmação:
python3 ghost_injection_cleaner.py --apply
Digite SIM para confirmar as alterações nos posts e páginas: SIM
...
✅ Limpo.
python3 ghost_injection_cleaner.py --config /caminho/para/meu_config.json
Para cada post e página, define ambos os campos como null:
| Campo | Localização no editor do Ghost |
|---|---|
codeinjection_head | Configurações do post/página → Injeção de código → Cabeçalho |
codeinjection_foot | Configurações do post/página → Injeção de código → Rodapé |
Posts e páginas que não têm injeção são ignorados silenciosamente.
Dependências ausentes
Execute pip install requests PyJWT e tente novamente.
admin_api_key deve estar no formato 'id:segredo'
Certifique-se de que sua chave tenha dois pontos no meio. Deve se parecer com duas strings hexadecimais separadas por :. Copie diretamente do Ghost Admin sem adicionar espaços.
401 Não autorizado
Sua chave da API de Administração pode estar errada ou a integração pode ter sido excluída. Volte para Ghost Admin → Configurações → Integrações e verifique.
ConnectionError ou tempo limite
Verifique se ghost_url no seu arquivo de configuração está correto e se o site está acessível a partir da máquina onde você está executando o script.
O script trava em um site grande Cada página de 50 posts gera um novo JWT e aguarda a API. Isso é normal — dê um minuto.