Vulnerabilità Open Redirect

Tempo di lettura: 5 minuti
Data pubblicazione: December 11, 2017

Recentemente sono incappato in un sito abbastanza noto che presenta una vulnerabilità di redirezione automatica aperta e consentiva, con opportuno link, di redirezionare l’utente vittima in qualunque sito scelto dall’attaccante. Al momento non hanno ancora risposto, ma, non avendo ancora trattato l’argomento sul blog, mi sembrava un buon articolo per riprendere con la pubblicazione!

Dettagli vulnerabilità

Quasi tutte le applicazioni web hanno funzioni di redirezione verso proprie pagine o altri link in uscita, solitamente filtrati e selezionati da apposite liste. La redirezione non validata consente all’attaccante di poter scegliere un link arbitrario e portare la vittima su un link scelto appositamente (malevolo, scam, di phishing, etc.).

Un redirect classico può essere

http://example.com/example.php?url=http://app.example.com

Questo link, se ben validato, non consentirà all’attaccante di modificarlo e genererà un errore se venisse modificato il parametro url. Una volta cliccato, il link porterà a

http://app.example.com

Nel caso in cui non venga fatto nessun controllo, un attaccante potrebbe creare un link del tipo

http://example.com/example.php?url=http://fakeexample.com

e redirezionare l’utente su un sito creato da lui, magari chiedendo nuovamente l’inserimento della password.

Esempio

Pagina di redirezione
Pagina di redirezione

Cliccando sul link la situazione che si crea è abbastanza semplice:

  1. Vengono utilizzati due parametri, uno per l’url di uscita e uno per l’hash
  2. L’hash probabilmente controlla l’url utilizzato, se non coincide non viene permessa la redirezione
  3. La domanda da porsi è: come viene generato l’hash?

Dopo qualche prova, la soluzione viene da sè

┌─[mrtouch@parrot]─[~]
└──╼ $ echo -n https://facebook.com | md5sum
a023cfbf5f1c39bdf8407f28b60cd134

L’hash non è altro che l**‘hash MD5 dell’url**. Per crearne un altro è bastato eseguire nuovamente il comando, ma con un altro link

┌─[mrtouch@parrot]─[~]
└──╼ $ echo -n https://hacktips.it | md5sum
f2178b1573b1efe6617b7e10ca4d3c6c

Ho omesso l’url della sfida perchè vietato esplicitamente nei termini del sito. Se interessa ritrovarlo, è nella lista delle sfide online stilata tempo fa.

Conclusioni

Questa vulnerabilità potrebbe sembrare inutile, ma sebbene non danneggi esplicitamente il sito vittima, colpisce in modo particolare gli utenti e i visitatori dello stesso. Rendere sicura questo tipo di vulnerabilità è a dir poco banale, e per chi vuole approfondire Google e Cwe.Mitre che ne parlano approfinditamente. Per altri payloads consiglio Open-Redirect-Payloads.