
Guida PoC e remediation per vulnerabilità CSRF per la disattivazione dei dipendenti in un pannello di amministrazione. Include punteggio CVSS, passaggi per la riproduzione dell'attacco e raccomandazioni per il rafforzamento della sicurezza.
La funzionalità Gestisci Dipendenti è vulnerabile a Cross-Site Request Forgery (CSRF).
Un attaccante può ingannare un amministratore connesso per inviare una richiesta falsificata che disattiva un dipendente (ad esempio, inid=1) senza che l'amministratore ne sia a conoscenza o dia il consenso.
Stringa del Vettore: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L
Modulo: Pannello di Amministrazione → Dipendenti → Gestisci Dipendenti
Azione: Disattiva dipendente (tramite parametro inid)
Accedi come Amministratore
/admin e accedi con credenziali di amministratore valide.
Apri Gestisci Dipendenti

Cattura la Richiesta di Disattivazione
Attiva l'intercettazione nel tuo proxy (es. Burp Suite).
Clicca su Inattivo su un dipendente e cattura la richiesta che disattiva l'utente.
Nota il parametro inid nella richiesta (es. inid=1).

Genera il PoC CSRF
inid=1 per disattivare l'utente 1.
Attiva il CSRF come Vittima
Ospita o apri il PoC HTML in un browser.
Mentre l'amministratore è connesso all'applicazione, se visita questa pagina PoC e invia il modulo, l'utente 1 verrà disattivato.

Verifica l'Effetto
Torna alla dashboard di amministrazione → Gestisci Dipendenti.
Osserva che l'utente 1 è ora contrassegnato come Inattivo.

Di seguito un tipico PoC assumendo una richiesta
POSTcon parametroinid:
<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>
Salva questo come csrf_inactivate_emp1.html.
Invia/ospita questo file e fai in modo che un amministratore autenticato lo carichi e clicchi sul pulsante.
Un attaccante può costringere un amministratore autenticato a disattivare dipendenti arbitrari ingannandolo a visitare una pagina malevola.
Questo può portare a:
Disattivazione non autorizzata degli account, che compromette la disponibilità degli account utente.
Interruzione operativa (es. dipendenti disabilitati durante operazioni critiche).
Possibile abuso combinato con altre vulnerabilità (es. disattivazione di account di monitoraggio o privilegiati).
L'attacco richiede solo che:
L'amministratore sia connesso, e
L'amministratore visiti una URL/pagina malevola controllata dall'attaccante (phishing, iframe incorporato, link malevolo, ecc.).
Dato che questo manipola direttamente la gestione degli utenti nel portale di amministrazione, questo problema dovrebbe essere considerato di Alta gravità.
Implementare Token di Protezione CSRF
Aggiungi un token CSRF crittograficamente sicuro e imprevedibile a tutte le richieste che modificano lo stato (es., disattivazione, eliminazione, aggiornamenti).
Inserisci il token nei moduli come campo nascosto.
Sul lato server, valida:
La presenza del token,
La correttezza del token, e
L'associazione del token con la sessione utente corrente.
Rifiuta la richiesta se il token è mancante o non valido.
Utilizzare Cookie Same-Site
Imposta i cookie di sessione con SameSite=Lax o preferibilmente SameSite=Strict dove possibile.
Questo impedisce l'invio automatico dei cookie su richieste cross-site, riducendo il rischio CSRF.
Applicare Metodi HTTP Corretti
Assicurati che tutte le operazioni che modificano lo stato (come disattivare un dipendente) utilizzino POST (o PUT/DELETE) invece di GET.
Non accettare modifiche di stato sensibili tramite parametri GET.
Validare gli Header Origin/Referer
Su endpoint sensibili, verifica l'header Origin o Referer per assicurarsi che le richieste provengano da domini fidati.
Se l'header è mancante o proviene da un'origine non attendibile, rifiuta la richiesta.
Rafforzamento UI/Workflow
Aggiungi flussi di conferma o ri-autenticazione lato server per azioni sensibili (es., disattivazione di utenti con ruoli amministrativi).
Implementa controlli di autorizzazione adeguati per garantire che solo i ruoli previsti possano eseguire l'azione, anche se viene tentato un CSRF.
Test di Sicurezza
Integra i controlli CSRF nei test di sicurezza regolari (manuali e automatizzati).
Ripeti il test di questo endpoint (e di simili) dopo aver implementato le protezioni per verificare che il PoC non funzioni più.