
Guia de PoC e remediação de vulnerabilidade CSRF para desativação de funcionários em um painel de administração. Inclui pontuação CVSS, etapas de reprodução do ataque e recomendações de hardening de segurança.
A funcionalidade Gerenciar Funcionários é vulnerável a Cross-Site Request Forgery (CSRF).
Um atacante pode enganar um administrador logado para que envie uma solicitação forjada que desative um funcionário (por exemplo, inid=1) sem o conhecimento ou consentimento do administrador.
String do Vetor: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L
Módulo: Painel Admin → Funcionários → Gerenciar Funcionários
Ação: Desativar funcionário (via parâmetro inid)
Fazer Login como Admin
/admin e faça login com credenciais de administrador válidas.
Abrir Gerenciar Funcionários

Capturar a Solicitação de Desativação
Ative a interceptação no seu proxy (ex.: Burp Suite).
Clique em Inativo em um funcionário e capture a solicitação que desativa o usuário.
Observe o parâmetro inid na solicitação (ex.: inid=1).

Gerar PoC de CSRF
inid=1 para desativar o usuário 1.
Disparar o CSRF como Vítima
Hospede ou abra o PoC HTML em um navegador.
Enquanto o admin estiver logado na aplicação, se ele visitar esta página PoC e enviar o formulário, o usuário 1 será desativado.

Verificar o Efeito
Retorne ao painel admin → Gerenciar Funcionários.
Observe que o usuário 1 agora está marcado como Inativo.

Abaixo está um PoC típico assumindo uma solicitação
POSTcom o parâmetroinid:
<html>
<body>
<form action="http://localhost/elms/admin/manageemployee.php">
<input type="hidden" name="inid" value="1" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>
Salve isso como csrf_inactivate_emp1.html.
Envie/hospede este arquivo e faça com que um admin autenticado o carregue e clique no botão.
Um atacante pode forçar um admin autenticado a desativar funcionários arbitrários, enganando-o para que visite uma página maliciosa.
Isso pode levar a:
Desativação não autorizada de contas, afetando a disponibilidade de contas de usuário.
Interrupção operacional (ex.: funcionários sendo desabilitados durante operações críticas).
Possível abuso combinado com outras vulnerabilidades (ex.: desativar contas privilegiadas ou de monitoramento específicas).
O ataque requer apenas que:
O admin esteja logado, e
O admin visite uma URL/página maliciosa controlada pelo atacante (phishing, iframe incorporado, link malicioso, etc.).
Considerando que isso manipula diretamente o gerenciamento de usuários no portal admin, este problema deve ser considerado de Alta severidade.
Implementar Tokens de Proteção CSRF
Adicione um token CSRF criptograficamente seguro e imprevisível a todas as solicitações que alteram estado (ex.: desativação, exclusão, atualizações).
Incorpore o token nos formulários como um campo oculto.
No lado do servidor, valide:
Presença do token,
Corretude do token e
Associação do token com a sessão atual do usuário.
Rejeite a solicitação se o token estiver ausente ou for inválido.
Usar Cookies SameSite
Defina cookies de sessão com SameSite=Lax ou, preferencialmente, SameSite=Strict quando possível.
Isso impede que cookies sejam enviados automaticamente em solicitações entre sites, reduzindo o risco de CSRF.
Impor Métodos HTTP Adequados
Garanta que todas as operações de alteração de estado (como desativar um funcionário) usem POST (ou PUT/DELETE) em vez de GET.
Não aceite alterações de estado sensíveis via parâmetros GET.
Validar Cabeçalhos Origin / Referer
Em endpoints sensíveis, verifique o cabeçalho Origin ou Referer para garantir que as solicitações sejam originadas de domínios confiáveis.
Se o cabeçalho estiver ausente ou for de uma origem não confiável, rejeite a solicitação.
Endurecimento de UI/Fluxo de Trabalho
Adicione confirmação no lado do servidor ou fluxos de reautenticação para ações sensíveis (ex.: desativar usuários com funções de admin).
Implemente verificações de autorização adequadas para garantir que apenas funções pretendidas possam realizar a ação, mesmo que CSRF seja tentado.
Testes de Segurança
Integre verificações de CSRF em testes de segurança regulares (manuais e automatizados).
Teste novamente este endpoint (e similares) após implementar as proteções para verificar que o PoC não funciona mais.