
CVE-2024-22515 upload arbitrário de arquivos e CVE-2024-22514 execução remota de código para AgentDVR 5.1.6.0 (Autenticado)
CVE-2024-22515 upload arbitrário de arquivos e CVE-2024-22514 execução remota de código para AgentDVR 5.1.6.0 (Autenticado)
(Versões mais antigas provavelmente afetadas)
https://github.com/Orange-418/CVE-2024-22514-Remote-Code-Execution
https://github.com/Orange-418/CVE-2024-22515-File-Upload-Vulnerability
https://www.ispyconnect.com/docs/agent/about
https://www.youtube.com/watch?v=RXmoXERWVk8
Testado em 4.7.3.0 e 5.1.6.0. Versões intermediárias e mais antigas também provavelmente são afetadas. Testado em instalações para Windows x64, Linux x64 e Docker. Vale notar que o caminho de exploração para Windows varia ligeiramente. Em vez de chamar o bash, você pode simplesmente chamar um arquivo exe diretamente, como "/AgentDVR/sounds/payload.exe".
O AgentDVR versão 5.1.6.0 contém duas vulnerabilidades: uma vulnerabilidade de upload arbitrário de arquivos e uma vulnerabilidade de execução arbitrária de arquivos. Ambas se encadeiam para obter a execução de qualquer arquivo arbitrário enviado, incluindo payloads maliciosos. Isso resulta em possível RCE para indivíduos com credenciais válidas de um servidor AgentDVR.
Devido à natureza do programa, que usa amplamente WebRTC, não fiz um script de PoC. No entanto, o processo manual é de complexidade muito baixa. Se alguém criar um script de PoC e entrar em contato comigo, vou linká-lo aqui.
Primeiro, após fazer login no painel, adicione um novo dispositivo. Crie apenas um dispositivo "Dummy" com as configurações padrão.

No dispositivo, adicione uma ação para acionar uma tarefa se uma foto for tirada. Em seguida, adicione uma tarefa e selecione "Execute Command" e selecione qualquer "File" no menu suspenso para qual comando acionar.

Agora, prepare o seu payload. Você pode modificar e usar o arquivo "payload.sh" neste repositório. É um script de reverse shell muito simples.
Depois de pronto, volte ao menu do servidor e selecione "File Upload". Selecione "Audio" e comece a procurar o arquivo, mas altere o menu suspenso do seletor de arquivos de "*.wav" para "All Files".


Em seguida, volte ao menu do servidor e selecione "Backup/Restore". Selecione "Download". Você receberá um arquivo zip contendo alguns arquivos .XML diferentes.

Extraia o conteúdo e abra o "config.xml". Perto da parte inferior, você encontrará uma linha semelhante a '<Directory Entry="/path/to/media/"'. Isso é importante, pois é a estrutura de pastas da instalação do AgentDVR, que pode vir em algumas formas diferentes, dependendo do tipo de instalação.

Em seguida, edite o arquivo objects.xml e encontre uma linha perto da parte inferior semelhante a '<entry type="EXE" param1='. Edite o caminho, que deve estar chamando um arquivo bat de alerta padrão, e insira um caminho chamando o bash para então chamar seu script .sh. Você pode usar como modelo o caminho da etapa anterior para saber o que inserir.

Depois disso, você pode iniciar seu listener.

Agora, volte ao menu do servidor e selecione "Backup/Restore" novamente. Desta vez, escolha enviar um arquivo e selecione o arquivo "objects.xml" modificado.

O painel deve reiniciar com as alterações. Agora, em teoria, você deve ter uma câmera dummy com um alerta para acionar seu script de reverse shell quando uma foto for tirada. Com o listener iniciado, clique com o botão direito no feed da câmera dummy e selecione "Take Photo".

Agora você deve ter um shell root.
