Il primo passo di un attacco è mappare l'applicazione e recuperare informazioni utili a capirne struttura e funzionamento.
Dobbiamo concentrarci sui contenuti e sulle funzionalità (molti dei quali accessibili con la sola navigazione, altri nascosti). La navigazione anonima dell'applicazione (magari passando per proxy o anonymizer vari) può aiutarci a capire se esistano differenze di comportamenti della stessa in base al paese di provenienza, al tipo, versione o lingua del browser.
In un secondo momento potremo autenticarci, registrandoci, ed esplorare funzioni nascoste e meccanismi dell'applicazione (recupero password, cambio password, registrazione utente ecc).
Adesso concentriamoci sulla mappatura per recuperare informazioni su contenuti e funzionalità.
Lo spider
Uno spider è un software che effettua la scansione di un sito web restituendo un report. L'utilizzo di uno spider ci permette di mappare rapidamente l'applicazione ottenendo un elenco strutturato dei contenuti.
Nota: Il file robots.txt è utilizzato per comunicare ai motori di ricerca quali pagine posizionare e quali no. Può contenere diverse informazioni sulla struttura della nostra applicazione. Per visualizzarlo è sufficiente digitare www.nomesito.it/robots.txt.
Fate attenzione: L'utilizzo di strumenti automatici può generare enormi problemi. Immaginate se uno script (asp, php, Java, .net e così via) viene richiamato da un'altra pagina per eliminare la cronologia dei messaggi o (esagero) eliminare tutti gli utenti. Lo sviluppatore ha previsto che questo script venga chiamato da un link su una pagina ad accesso riservato, ma ha dimenticato di "proteggere" l'accesso diretto allo script..
Bene, può succedervi che mentre il vostro spider lavora, una qualche funzionalità non protetta venga attivata. Pensate se il vostro spider chiamasse lo script eliminatuttiicontenuti.php!
Tornando al discorso spider, esistono numerosi software per questa operazione. Noi consigliamo Burp suite (in edizione gratuita o a pagamento) o Webscarab (gratuito). Nella prossima lezione vedremo un utilizzo pratico di uno dei due.
La mappatura manuale
Uno spider, in alcuni casi, può generare risultati errati o parzialmente esatti. Ad esempio:
- In una funzionalità multistage per esempio (diverse maschere in successione per la compilazione dei dettagli di un profilo utente) può succedere che lo spider si fermi alla prima maschera perché impossibilitato a proseguire in quanto non in grado di compilare correttamente i campi.
- In alcuni casi uno stesso url può fornire contenuti differenti (per esempio perché alcuni dati sono inviati utilizzando il metodo "post" ) se lo spider non è configurato per verificare l'invio di parametri tramite il metodo "get" e "post".
- Lo spider può essere programmato per utilizzare autenticazione (inserimento user e password), ma la sessione può scadere o può venire non accettato, per esempio perché richiama la funzione logout o perché effettua un'operazione non consentita.
In alternativa all'automazione totale, possiamo effettuare una mappatura manuale utilizzando comunque un web proxy che intercetti il traffico inviato e ricevuto (Burp, WebScarab hanno anche questa funzionalità).
Questo approccio può essere un po' faticoso all'inizio, ma si rivela una risorsa di informazioni incredibile. Con un po' di esperienza potremo valutare alcuni errori tipici di sicurezza semplicemente dando un'occhiata ai messaggi di request o response risultante dal click di un link.
I vantaggi di un approccio manuale sono molteplici, abbiamo il controllo sui dati inviati e trasmessi potendo valutare di volta in volta se e come vengono processati dall'applicazione. Possiamo inoltre focalizzare la nostra attenzione verso un percorso di navigazione piuttosto che un altro, possiamo (lo vedremo poi) manipolare i dati trasmessi e ricevuti per effettuare verifiche varie.
L'unica "pecca" di questo sistema è che necessita di una componente umana per essere efficace (a mio avviso è meglio avere il controllo piuttosto che affidarsi ad automatismi).