In questo articolo, otterrai le informazioni richieste dall'applicazione per sapere cosa dovrebbe fare il sito di attacco per inviare richieste valide al server vulnerabile. Quindi, creerai una pagina che simuli le richieste legittime e inganni l'utente a visitare quella pagina mentre è autenticato. Farai anche alcune iterazioni sulla prova di base del concetto per renderlo più simile a un attacco del mondo reale, in cui la vittima non se ne accorge. Si noti che il file di codice per questo articolo è disponibile presso il github dell'autore.
Avrai bisogno di un account utente valido in Bodgeit per questo articolo. Questo articolo utilizza [email protected]
Come vittima:
Come farlo…
Innanzitutto, devi analizzare la richiesta che desideri forzare la vittima a fare. Per fare ciò, hai bisogno di Burp Suite o un altro proxy configurato nel browser:
Quindi, è un INVIARE
richiesta a http: // 192.168.56.11/Bodgeit/password.JSP,
e ha solo la password e la sua conferma nel corpo.
CSRF-CHANGE-PASWORD.html
) con i seguenti contenuti: CSRF-CHANGE-PASSWORD SCRIED.html
: Questa volta, il modulo ha un parametro ID e c'è uno script nella pagina che invierà il suo contenuto quando la pagina viene caricata completamente.
Notare come la proprietà target del modulo è l'iframe definito appena sotto di esso e che tale frame ha altezza e larghezza dello 0%.
Quando si invia una richiesta da un browser e hai già un cookie appartenente al dominio target memorizzato, il browser collegherà il cookie alla richiesta prima che venga inviato. 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 si carica una pagina nello stesso browser, in cui si dispone di una sessione attiva in un'applicazione, il browser collegherà automaticamente il cookie di sessione a tale richiesta. Questo accade anche se è una scheda o una finestra diversa e questa pagina fa una richiesta al dominio in cui viene avviata la sessione.
Se il server non verifica che le richieste che riceve effettivamente originate dall'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 target.
In un test di penetrazione dell'applicazione Web, il primo codice utilizzato, quello con i due campi di testo e il Invia pulsante, potrebbe essere sufficiente per dimostrare la presenza di un difetto di sicurezza. Tuttavia, il test di penetrazione dell'applicazione può far parte di un altro impegno, come un ingegneria sociale o un esercizio di squadra rossa. In questo caso, saranno necessari qualche sforzo extra per impedire all'utente della vittima di sospettare che qualcosa stia accadendo.
In questo articolo, hai utilizzato JavaScript per automatizzare l'invio della richiesta impostando l'evento Onload sulla pagina ed eseguendo il metodo di invio del modulo nella funzione Handler Event. Hai anche usato un IFRAME nascosto per caricare la risposta della modifica della password, quindi la vittima non vede mai il messaggio che la sua password è cambiata.
Se hai trovato questo articolo interessante, puoi esplorare Libro di cottura di Kali Linux Web Penetration Test - Seconda edizione Scoprire le vulnerabilità del web più comuni e impedire loro di diventare una minaccia per la sicurezza del tuo sito. Libro di cottura di Kali Linux Web Penetration Test - Seconda edizione ti dà 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 i test manuali.