
Exploit de prova de conceito para CVE-2025-56015, um escape de sandbox e RCE no GenieACS. Automatiza a criação de provision malicioso, mapeamento de predefinições e entrega de reverse shell via simulação CWMP.
Exploit de Prova de Conceito para CVE-2025-56015, uma vulnerabilidade crítica de escape de sandbox e injeção de código no GenieACS que permite a execução arbitrária de JavaScript no contexto de provisionamento. Aproveitando a cadeia de protótipos declare.constructor.constructor, um atacante pode escapar do ambiente JavaScript restrito, acessar os módulos subjacentes do Node.js child_process e net, e alcançar execução remota de código (RCE) completa.
Tipo de exploit: Remoto
Autenticação: Requer acesso de rede ao NBI do GenieACS (Porta 7557) e ao ACS (Porta 7547)
Impacto: Comprometimento total do servidor, execução de reverse shell, pivoting de rede
O endpoint NBI na Porta 7557 permite acesso não autenticado para recuperar dados sensíveis. Exemplos de endpoints da API incluem:
Obter Dados de Usuários:
$ curl 'http://myhost:7557/users/'
A resposta inclui informações sensíveis, como hashes de senhas e salts.
Obter Lista de Arquivos:
$ curl 'http://myhost:7557/files/'
Obter Detalhes de Provisions:
$ curl 'http://myhost:7557/provisions/'
Além disso, arquivos podem ser baixados diretamente do servidor de arquivos (Porta 7567) sem autenticação:
wget 'http://myhost:7567/SCR-20250623-qjoi.png'
Um endpoint de depuração de teste dentro de um sandbox restringe o acesso direto ao objeto process do Node.js. No entanto, é possível contornar essa restrição por meio da travessia de objetos, especificamente usando a cadeia de construtores (ex.: constructor.constructor).
Ao chamar isso em objetos disponíveis (como declare), atacantes podem escapar do contexto do sandbox e obter acesso ao objeto global process. Isso concede a capacidade de ler variáveis de ambiente e executar comandos arbitrários.
RCE Pós-Autenticação:
Scripts de provisionamento podem ser executados diretamente via endpoint da API /api/devices/{device_id}/tasks para obter um shell. Requisições enviadas apenas através do NBI são enfileiradas, mas não executadas imediatamente.
RCE Pré-Autenticação (RCE Não Autenticado): Usando a API NBI, um atacante pode criar provisions e presets sem autenticação. O preset serve para executar scripts de provisionamento automaticamente quando um dispositivo envia um evento através da interface CWMP.
Passos para Explorar:
PUT /provisions/{provision_name}.PUT /presets/{preset_name} (vinculando-o a um evento como "Periodic").declare.constructor.constructorAntes de executar o exploit, atualize as configurações ACS_URL, NBI_URL, LHOST e LPORT diretamente dentro do exploit.py para corresponder ao seu ambiente e às configurações da máquina atacante.
# Start listener on your attacker machine
nc -lvnp 4444
# Run the exploit
python3 exploit.py

requests library (pip install requests)Este código é fornecido apenas para fins educacionais e de teste de segurança autorizados.
O uso não autorizado contra sistemas que você não possui ou para os quais não tem permissão explícita para testar é ilegal e antiético.
Vulnerabilidades descobertas e exploit desenvolvido por:
Da Datafarm Co., Ltd.
Desenvolvido por DF Pentest Team • Tailândia