Reindirizzamento URL non sicuro

Reindirizzamento URL non sicuro

Dominio reale, login reale, quindi un 302 per l'aggressore.

Cos’è Reindirizzamento URL non sicuro?

Un reindirizzamento aperto invia il browser a una destinazione presa dalla richiesta senza chiedere se la destinazione è la tua. L'applicazione non guadagna nulla dal bug; l'aggressore ottiene il tuo nome host, al momento l'utente si fida di più. Riprodurrai un accesso che rispetta un parametro next e guarderai un 302 portare la vittima a una pagina di accesso simile. Quindi correggi res.redirect(req.query.next) solo con percorsi relativi o un elenco consentito di nomi host e scopri perché startsWith('/') consente un //host relativo al protocollo direttamente passato.

Cosa imparerai in Reindirizzamento URL non sicuro

Reindirizzamento URL non sicuro — Fasi della formazione

  1. Misurare l'obiettivo

    Oggi Bob sta cercando i conti Fernloft. È un servizio cloud personale, quindi un account contiene tutta la vita di qualcuno: foto, documenti fiscali, scansioni di documenti d'identità, backup. Non ha la password di nessuno, quindi ha intenzione di studiare come funziona l'accesso dall'interno. Fernloft consente a chiunque di iscriversi, quindi inizia dalla pagina di registrazione.

  2. Crea un account usa e getta

    Per prima cosa ha bisogno di un resoconto tutto suo con cui testare, uno che non lo riconduca da nessuna parte. Compila un indirizzo e una password usa e getta e lo crea.

  3. Leggi l'indirizzo di accesso

    Fatto l'account, Bob arriva sulla pagina di accesso. Prima di accedere, legge la barra degli indirizzi. Il collegamento di accesso contiene un valore redirect_to , in questo momento /home , che decide dove l'app invia il browser dopo un accesso riuscito.

  4. Accedi e guarda dove ti manda

    Ora Bob accede con il suo account usa e getta e osserva dove l'app invia il browser una volta accettata la password.

  5. Crea il collegamento dannoso

    Bob ricostruisce lo stesso collegamento di accesso, ma modifica il valore redirect_to in modo che punti a una pagina di sua proprietà anziché a /home . Modifica solo quel valore nella barra degli indirizzi per vedere se l'app obbedirà a un target fuori sito nello stesso modo in cui ha obbedito a /home .

  6. Reindirizzamento aperto confermato

    Bob accede alla pagina reale di Fernloft con il suo account usa e getta. Le credenziali sono reali, quindi l'accesso ha esito positivo e quindi l'app legge il valore redirect_to creato per decidere dove inviare il browser.

  7. Rendere il collegamento un'arma

    Bob racchiude il collegamento di accesso creato in un messaggio sul quale chiunque potrebbe agire: un avviso di sessione scaduta. Estrae gli indirizzi di Fernloft da una discarica di violazioni e invia lo stesso collegamento a tutti loro. Seguiamo un destinatario, Alice.

  8. Un avviso sul tuo account

    Fuori orario, Alice controlla la sua casella di posta personale. C'è un messaggio da Fernloft: la sua sessione è scaduta e deve verificare per conservare i suoi file. Usa Fernloft per tutto, quindi perdere l'accesso sarebbe un vero grattacapo.

  9. Fare clic sul collegamento

    Il collegamento punta a account.fernloft.com, il vero indirizzo di Fernloft, quindi Alice lo clicca come farebbe chiunque.

  10. La vera pagina di accesso

    Il collegamento apre la pagina di accesso autentica di Fernloft. La barra degli indirizzi mostra il vero dominio su https, tutto sembra a posto e questo è il momento in cui Alice decide di fidarsi della pagina.

Copertura dei framework di sicurezza

OWASP Top 10

  • A01:2025 Broken Access Control
  • A01:2021 Broken Access Control

CWE

  • CWE-601 URL Redirection to Untrusted Site ('Open Redirect')

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security