Sicurezza

Esecuzione di un attacco di falsificazione di richieste tra siti

Esecuzione di un attacco di falsificazione di richieste tra siti
Un attacco CSRF è quello che fa eseguire agli utenti autenticati azioni indesiderate nell'applicazione web con cui sono autenticati. Questo viene fatto attraverso un sito esterno che l'utente visita e che attiva queste azioni.

In questo articolo, otterrai le informazioni richieste dall'applicazione per sapere cosa dovrebbe fare il sito attaccante per inviare richieste valide al server vulnerabile. Quindi, creerai una pagina che simula le richieste legittime e induce l'utente a visitare quella pagina mentre è autenticato. Farai anche alcune iterazioni sulla dimostrazione di base del concetto per farlo sembrare più simile a un attacco nel mondo reale, in cui la vittima non se ne accorge. Nota che il file di codice per questo articolo può essere trovato nel github dell'autore.

Prepararsi

Avrai bisogno di un account utente valido in BodgeIt per questo articolo. Questo articolo usa [e-mail protetta] come vittima:

Come farlo…

Per prima cosa, devi analizzare la richiesta che vuoi costringere a fare la vittima. Per fare ciò, hai bisogno di Burp Suite o di un altro proxy configurato nel browser:

  1. Accedi a BodgeIt come qualsiasi utente e fai clic sul nome utente per accedere al profilo.
  2. Modifica la password. Guarda come appare la richiesta nel proxy:

    Quindi, è un INVIARE richiesta a http://192.168.56.11/bodgeit/password.jsp, e ha solo la password e la sua conferma nel corpo.

  3. Prova a creare una pagina HTML molto semplice che replichi questa richiesta. Crea un file (chiamalo csrf-cambia-password.html) con i seguenti contenuti:







  4. Ora carica questo file nello stesso browser della tua sessione di accesso:
  5. Fai clic su Invia e verrai reindirizzato alla pagina del profilo dell'utente. Ti dirà che la password è stata aggiornata con successo.
  6. Sebbene ciò dimostri il punto, un sito esterno (o una pagina HTML locale come in questo caso) può eseguire una richiesta di modifica della password sull'applicazione. È ancora improbabile che un utente faccia clic sul Invia Puoi automatizzarlo e nascondere i campi di input in modo che il contenuto dannoso sia nascosto. Ora, crea una nuova pagina basata su quella precedente; chiamalo csrf-change-password-scripted.html:


    Una pagina completamente innocua


    Puoi fidarti di questa pagina.
    Non succederà niente di male a te o al tuo account BodgeIt.





    Questa volta, il modulo ha un parametro ID e c'è uno script nella pagina che invierà il suo contenuto quando la pagina sarà caricata completamente.

  7.  Se carichi questa pagina nello stesso browser in cui hai avviato una sessione BodgeIt, invierà automaticamente la richiesta e successivamente verrà visualizzata la pagina del profilo dell'utente. Nella schermata seguente, il browser Debuggerimpostare un punto di interruzione appena prima della richiesta:
  8. Quest'ultimo tentativo sembra migliore dal punto di vista di un attaccante. Hai solo bisogno che la vittima carichi la pagina e la richiesta verrà inviata automaticamente, ma poi la vittima vedrà il La tua password è stata modificatamessaggio e questo sicuramente solleva un avviso.
  9. Puoi migliorare ulteriormente la pagina attaccante facendo caricare la risposta in una cornice invisibile all'interno della stessa pagina. Ci sono molti modi per farlo; uno veloce e sporco è impostare una dimensione 0per il telaio. Il tuo file sarebbe simile a questo:


    Una pagina completamente innocua


    Puoi fidarti di questa pagina.
    Non succederà niente di male a te o al tuo account BodgeIt.
    target="target_frame">





    Nota come la proprietà di destinazione del modulo è l'iframe definito appena sotto di esso e che tale frame ha 0% di altezza e larghezza.

  10. Carica la nuova pagina nel browser in cui è stata avviata la sessione. Questa schermata mostra come appare la pagina quando viene ispezionata con il browser Strumenti di sviluppo: Nota che l'oggetto iframe è solo una linea nera sulla pagina e, in Inspector, puoi vedere che contiene la pagina del profilo dell'utente BodgeIt.
  11. Se analizzi le comunicazioni di rete intraprese dalla tua pagina CSRF, puoi vedere che effettivamente effettua richieste di modifica della password BodgeIt:

Come funziona…

Quando invii una richiesta da un browser e hai già un cookie appartenente al dominio di destinazione memorizzato, il browser allegherà il cookie alla richiesta prima che venga inviata. Questo è ciò che rende i cookie così convenienti come identificatori di sessione, ma questa caratteristica di come funziona HTTP è anche ciò che lo rende vulnerabile a un attacco come quello che hai visto in questo articolo.

Quando carichi una pagina nello stesso browser, dove hai una sessione attiva in un'applicazione, il browser allegherà automaticamente il cookie di sessione a quella richiesta. Ciò accade anche se si tratta di una scheda o di una finestra diversa e questa pagina effettua una richiesta al dominio in cui è stata avviata la sessione.

Se il server non verifica che le richieste che riceve provengano effettivamente dall'interno dell'applicazione, consente a un sito dannoso di effettuare chiamate per conto di utenti legittimi e attivi che visitano questo sito dannoso mentre sono autenticati nel dominio di destinazione.

In un test di penetrazione di un'applicazione web, il primo codice utilizzato, quello con i due campi di testo e il Invia pulsante, può essere sufficiente per dimostrare la presenza di una falla di sicurezza. Tuttavia, il test di penetrazione dell'applicazione può essere parte di un altro impegno, come un esercizio di ingegneria sociale o di squadra rossa. In questo caso, sarà necessario uno sforzo extra per evitare che l'utente vittima sospetti che stia accadendo qualcosa.

In questo articolo, hai utilizzato JavaScript per automatizzare l'invio della richiesta impostando l'evento onload nella pagina ed eseguendo il metodo di invio del modulo nella funzione del gestore eventi. Hai anche utilizzato un iframe nascosto per caricare la risposta alla modifica della password, quindi la vittima non vedrà mai il messaggio che la sua password è cambiata.

Se hai trovato questo articolo interessante, puoi esplorare Kali Linux Web Penetration Testing Cookbook - Seconda edizione per scoprire le vulnerabilità web più comuni ed evitare che diventino una minaccia per la sicurezza del tuo sito. Kali Linux Web Penetration Testing Cookbook - Seconda edizione ti offre le competenze necessarie per coprire ogni fase di un test di penetrazione, dalla raccolta di informazioni sul sistema e sull'applicazione all'identificazione delle vulnerabilità attraverso il test manuale.

Come installare e giocare a Doom su Linux
Introduzione a Doom La serie Doom è nata negli anni '90 dopo l'uscita dell'originale Doom. È stato un successo immediato e da quel momento in poi la s...
Vulkan per utenti Linux
Con ogni nuova generazione di schede grafiche, vediamo gli sviluppatori di giochi spingere i limiti della fedeltà grafica e avvicinarsi di un passo al...
OpenTTD vs Simutrans
Creare la tua simulazione di trasporto può essere divertente, rilassante ed estremamente allettante. Ecco perché devi assicurarti di provare quanti pi...