Recupero di informazioni:
- Spidering
- Motori di ricerca
- Informazioni sul sistema (componenti e versioni)
- Analisi dei messaggi di errore/alert.
Autenticazione
- Analisi delle procedure e dei protocolli
- Verifica della sicurezza dei canali di trasporto
- Prevenzione di attacchi "privilege escalation"
- Test della robustezza delle password (brute force)
- Verifica dei vettori potenziali di attacco per aggirare l'autenticazione
- Verifica delle funzioni che hanno a che fare con i dati di autenticazione (recupero password, imposta nuova password ecc)
- Verifica della correttezza del logout (in seguito a logout utente, chiusura del browser , scadenza di un intervallo di tempo)
Gestione delle sessioni
- Verifica della modalità di gestione
- Test degli attributi (per esempio i cookie) e della loro prevedibilità.
- Test sul mantenimento della sessione.
- Test sul termine della sessione.
Autorizzazione
- Attacco path traversal
- Bypass dei sistemi (puntare direttamente alla risorsa)
- Privilege escalation
Validazione dei dati di input
- Test contro gli attacchi Cross site scripting (xss) in tutte le varianti conosciute
- Test su Sql injection
- Test su Code injection
- Test su Ssi injection
- Test su altri tipi di injection (Ldap, xml, xpath e altri).
Web service e Ajax
- Analisi del flusso dei dati generato
- Individuazione di possibili vettori di attacco
- Manipolazione del flusso di dati
Altri test
Non abbiamo parlato di denial of service perché lo ritengo un attacco da implementare a cura di uno sviluppatore/sistemista. Come avete potuto notare, non ho mai fatto riferimenti espliciti a sistemi o tecnologie e ho preferito rimanere a un livello di astrazione abbastanza alto. In ogni caso il denial of service (parliamo sempre di web app) è l'interruzione di un servizio provocata da un utilizzo improprio dell'applicazione. Questo può essere provocato da:
- Request a cascata (o in loop) verso una risorsa e conseguente crash
- Attacchi al db attraverso script o comandi sql
- Blocco degli account utente
- Invio di grandi quantità di dati come input
Questa check list non è sicuramente esaustiva di tutti i controlli che potete effettuare. Consiglio di prenderla come spunto per creare un vostro metodo di lavoro personalizzato.
Memento: "Conosci il nemico come conosci te stesso e non avrai timore dell'esito di cento battaglie"