Hacking di applicazioni web

Per quanto riguarda gli attacchi alle applicazioni web ci sono due scenari principali:
  1. Attacco ai server
  2. Attacco alle applicazioni web
In questo articolo ci concentreremo sulle seconde, ovvero l'hacking delle applicazioni web.
In questo caso l'attacco è più lungo e complesso in quanto si tratta di attaccare un'applicazione sviluppata appositamente per quel sito e non, come ad esempio al punto 1 un server apache che è possibile studiare e reperire info a riguardo da altri hacker. 

Per portare a termine l'attacco l'hacker dovrà trovare dei punti deboli nell'applicazione, molto spesso questi coincidono con delle vulnerabilità già note e comuni a molte applicazioni web progettate non a regola d'arte e senza tener conto della sicurezza ma puntando piuttosto sulla velocità di sviluppo e altri aspetti come ad esempio un front hand accattivante.

Gli attacchi sono possibili quando abbiamo uno o più dei seguenti punti deboli:
  • validazione degli input;
  • accesso al codice sorgente;
  • vari tipi di attacchi alla sezione di login tramite attacchi dizionario o brute force;
  • furto dei dati di sessione.
Per trovare queste falle generalmente si procede per gradi seguendo un metodo che prevede diverse fasi al fine di rendere efficace la raccolta delle informazioni per decidere come apportare l'attacco finale.
Per prima cosa un'hacker navigherà sul sito in questione per prendere familiarità con la struttura e carpirne le prime informazioni, un hacker è un bravissimo programmatore e riuscirà a capire da diversi dettagli strutturali del sito bersaglio che tecniche sono state usate e di conseguenza anche l'abilità dello sviluppatore che lo ha programmato per farsi una prima idea di quanto potrà dover cercare in profondità una possibile vulnerabilità o se già a prima vista traspare la possibilità di trovare diverse vulnerabilità da sfruttare.

Fatto ciò generalmente si preferisce scaricare una copia del sito per poterla comodamente consultare off line e fare tutte le indagini che si vogliono senza il rischio di allarmare possibili controlli su operazioni sospette sui siti. Questo è noto come web crawling e a tale scopo ci sono diversi programmi disponibili che un hacker può usare, per citarne alcuni ad esempio Wget e HTTrack, permettono di scaricare un sito web e consultarlo in locale andando in cerca di obiettivi facili da attaccare, si ricercano cose come informazioni sui path locali (i percorsi delle varie pagine o cartelle), nomi dei server di back-end (magari scopro che è più semplice violare il sito attaccando direttamente il server), idirizzi IP vari come risorse esterne usate dal sito (librerie, CDN, server etc), query di ricerca dove vengono passati dati di sessione interessanti come cookies, password o parametri vari ad esempio per stabilire il livello di accesso di un utente etc, commenti al codice che possono farmi capire come gestisca i dati il server e altre info di questo tipo. 

Spesso si ricorre anche all'uso dell'ingegneria sociale per cercare un punto debole che ci fornisca l'accesso ad un sistema, dall'analisi di un sito si possono ottenere preziosissime info ad esempio sul proprietario dell'azienda in questione, sui dipendenti e anche su chi l'ha progettato in modo da cercare una strada alternativa per hackerare l'obiettivo ma di questo ce ne occuperemo in un'articolo dedicato.

Molti siti offrono la possibilità di registrarsi etc, anche questa cosa viene sfruttata dagli hacker per capire come si comporta l'applicazione quando si esegue un'accesso legittimo e quando no. In base alla gestione dell'errore otterremo info molto importanti su dove trovare possibili falle nel sistema.

Ad esempio se effettuo il login con solo username corretto e password errata e ricevo un'allert del tipo password errata riprovare ho già scoperto una grossissima vulnerabilità (voleva essere un'esempio semplice per comprendere meglio, spero che non ci siano più applicazioni che si comportano così) oppure provo ad inserire i dati di login molte volte e non noto nessuna contromisura per prevenire un brute force, oppure immettendo i dati correttamente noto che sono passati in get quindi in chiaro etc.

Uno dei pericoli maggiori per un'applicazione web è sicuramente rappresentato dall'interazione con l'utente, più precisamente quando deve compilare form e inviare i contenuto al server. Potrebbe essere il form di login oppure quello per inserire i nostri dati per iscriverci alla news letter, questi sono i punti maggiormente vulnerabili e che un hacker andrà a controllare a fondo perchè trovare una vulnerabilità qui permette di violare l'intero sistema.

Purtroppo spesso la validazione degli input è sottovalutata, ad esempio in m olti casi si analizzano solamente gli input che ha inserito direttamente l'utente andando a scriverli come ad esempio il nome o la mail, non prestando attenzione a validare comunque anche i campi inseriti tramite scelte preimpostate come le selezioni dai menù a tendina (città, stato etc) pensando che non sia possibile modificarli. Nulla di più sbagliato anche se i dati venissero inviati tramite metodo post e non in chiaro tramite get, questo sarebbe già sufficiente a rendere vulnerabile l'applicazione in quanto un hacker potrebbe facilmente inviare comandi sql al data base e a quel punto avrebbe nelle sue mani il destino della nostra applicazione.

Un'altro tipo di attacco molto usato è il man in the middle, consiste nell'interporsi tra il server e l'utente legittimato ad usarlo, a questo punto vedendo tutto il suo traffico potremo filtrarlo in cerca di password, cookie di sessione e qualsiasi altro tipo di informazione che potrebbe tornarci utile. Immaginiamo di non aver recuperato nessuna password, o di averne recuperato l'hash ma sitratta dell'hash di una password complessa e usando tabelle arcobaleno etc non riusciamo a decifrare, ci basterà recuperare i cookies di sessione per poter impersonificare l'utente legittimo, che magari si è appena disconnesso, sfruttando il suo grado di accesso per reperire ulteriori informazioni o se si trattasse di un utente amministratore avremo accesso completo a tutta l'applicazione al primo tentativo. 



Ovviamente esistono diverse contromisure a questi tipi di attacchi ma sono ancora molto attuali perchè queste ultime non sono di facile impostazione e anche in loro assenza l'applicazione funziona correttamente quindi quando ci sono tempi ristretti per la consegna una delle prime cose sulla quale si taglia per risparmiare tempo è la sicurezza.

Ci sono numerosi altri tipi di attacchi e di sotto categorie e varianti di quaelli sopra descritti, ma lo scopo di questo articolo era far conoscere a chi non è un professionista in Cyber Security e sopratutto ai proprietari e committenti di applicazioni web che la sicurezza è fondamentale e le vulnerabilità di un prodotto apparentemente ben fatto possono essere enormi e facilmente sfruttabili da mal intenzionati arrecando danni ingenti.

Se volete conoscere lo stato di sicurezza e affidabilità dei vostri sistemi e applicazioni non esitare a visitare il nostro sito e a contattarci:

https://cyberconsulting.cloud/view/it/it_index.php##anchor_serviziCards

Se siete interessati alla trattazione approfondita di qualche tipo di attacco ai sistemi web fatemelo sapere nei commenti.

Commenti

Post più popolari