CVE-2022-28810
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply updates per vendor instructions.
Resumo
Falha na função de "custom script" (Post Action Script) do ManageEngine ADSelfService Plus, usada para disparar um script após reset de senha ou desbloqueio de conta. Um administrador autenticado pode configurar esse script para executar comandos arbitrários como SYSTEM, e como o produto vem com senha padrão de admin ("admin"), a barreira de autenticação é quase inexistente na prática. Além disso, se o script configurado usa a variável %password%, um atacante com credenciais de domínio válidas — sem ser admin — pode injetar comandos ao provocar um reset de senha, porque o campo não é sanitizado antes de ir para a linha de comando.
Detalhamento técnico
A Policy Configuration do ADSelfService Plus (Configuration -> Self Service -> Policy Configuration -> Advanced -> Password Sync) permite ao admin definir um script pós-ação, com exemplo oficial na UI como `cscript test.vbs %userName% %password%`. O produto assume que esse arquivo .vbs/.bat existe em C:\ManageEngine\ADSelfService Plus\bin e foi colocado ali por alguém com acesso ao SO — mas na prática o campo aceita qualquer comando via interface web, sem restrição. Isso é CWE-78 (OS Command Injection) combinado com CWE-259 (uso de senha hard-coded/padrão), já que a conta admin vem com credencial padrão previsível.
Existem dois vetores distintos empacotados na mesma CVE. No primeiro, o próprio admin (ou quem tiver essas credenciais, muitas vezes o default) escreve diretamente um comando malicioso no campo de script — por exemplo `cmd.exe /c whoami` ou algo que baixe um payload — e esse comando é executado como SYSTEM sempre que qualquer usuário de domínio reseta a senha. No segundo, quando o script legítimo referencia %password%, o valor da nova senha é interpolado sem sanitização na linha de comando. Um atacante que controla o valor da nova senha (via fluxo normal de self-service password reset) pode inserir metacaracteres de shell (como `&&`) para anexar comandos próprios, mesmo sem ser admin.
Como consequência colateral, como %password% não é ofuscada nem sanitizada, o admin que configura o script pode literalmente capturar em claro todas as senhas trocadas pelos usuários — um problema de exposição de credenciais além da execução de comando.
Como é explorada
O vetor observado por equipes de resposta a incidentes em ambientes reais foi o mais simples: atacante obtém (ou já sabe, por ser o padrão) a senha do admin, acessa a interface web, grava um comando malicioso no campo de script pós-ação (por exemplo, para baixar e executar um payload via PowerShell) e então dispara ou espera por um reset de senha para que o comando rode como SYSTEM. A Rapid7 relatou exploração ativa contra clientes antes mesmo da divulgação pública, usada para obter persistência e pivotar na rede.
O módulo Metasploit público (`exploit/windows/http/manageengine_adselfservice_plus_cve_2022_28810`) automatiza esse caminho: autentica via API como admin, envia a configuração de policy maliciosa pelo endpoint `/ServletAPI/configuration/policyConfig/getPolicyConfigDetails`, e aguarda passivamente até que um reset de senha real dispare o script, retornando shell reverso via jjs (motor Nashorn do Java empacotado com o produto), o que evade detecção de AV baseada em assinatura de PowerShell. O serviço roda por padrão em HTTP na porta 8888 ou HTTPS na 9251.
O segundo vetor — injeção via %password% sem precisar de credenciais de admin — exige que o script configurado use essa variável sem tratamento, e que o atacante tenha capacidade de disparar um reset de senha próprio ou de outra conta ("partialmente autenticado": precisa de credenciais de domínio, mas não de admin). É mais restrito a ambientes onde o admin já configurou scripts desse tipo, mas não depende de senha padrão.
Versões
Como se proteger
Atualizar para build 6122 ou superior remove a possibilidade de configurar scripts pós-ação pela interface web: agora esses scripts devem ser colocados no disco por um usuário com acesso ao sistema operacional, e os argumentos passados a eles (incluindo %password%) são codificados em base64, o que quebra a injeção direta via shell metacharacters.
Trocar a senha padrão do usuário admin é mitigação obrigatória e imediata, independente de patch — a CVE só se torna trivial de explorar por causa dessa credencial padrão previsível. Antes e depois de atualizar, auditar manualmente o conteúdo atual dos campos Post Action em Configuration -> Self Service -> Policy Configuration -> Advanced -> Password Sync, pois um atacante pode já ter plantado um comando malicioso ali antes do patch ser aplicado — atualizar a versão não remove scripts já configurados.
Não existe mitigação de rede eficaz equivalente à correção: restringir acesso à interface administrativa reduz a superfície de ataque para o vetor admin, mas não corrige a raiz do problema (validação e senha padrão), e não impede o vetor via %password% se o script vulnerável continuar configurado.
Como detectar
Verificar manualmente o conteúdo configurado em Configuration -> Self Service -> Policy Configuration -> Advanced -> Password Sync (campos Post Action Script) por comandos incomuns — download de payload, PowerShell com flags de evasão, chamadas a cmd.exe fora do padrão esperado — é o indicador mais direto de comprometimento, conforme recomendado pela Rapid7. Regras de detecção comportamental relevantes incluem processos suspeitos de PowerShell com Invoke-WebRequest, uso de attrib para ocultar arquivos/diretórios, enumeração de Domain/Enterprise Admins via comando net, e processos filhos inesperados gerados pelo processo do ManageEngine ADSelfService Plus.
Em nível de rede/HTTP, uma verificação não autenticada pode identificar a versão vulnerável pela string de versão exposta na página (builds até 6121 são vulneráveis); tráfego para os endpoints `/ServletAPI/configuration/policyConfig/*` seguido de atividade de reset de senha do usuário é o padrão observado em exploração real, mas não é um sinal exclusivo de ataque — é preciso correlacionar com a existência de scripts maliciosos configurados.