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
- Riconoscere un reindirizzamento aperto come acceleratore di phishing: l'aggressore prende in prestito il nome host legittimo per il trust ancoraggio
- Tieni presente che gli URL relativi al protocollo (<code>//host</code>) superano i controlli <code>startsWith("/")</code> ingenui e devono essere bloccati separatamente
- Applicare la convalida solo relativa (o l'elenco consentiti dei nomi host se i reindirizzamenti esterni sono un requisito reale)
- Distinguere il reindirizzamento aperto da SSRF: l'aggressore sta controllando il browser, non il server, e l'impatto è sulla precisione del phishing, non sull'accesso alla rete interna
- Controlla ogni risposta <code>res.redirect</code>, <code>location.href</code> e <code>302 Location</code> il cui obiettivo è derivato dall'input della richiesta
Reindirizzamento URL non sicuro — Fasi della formazione
-
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.
-
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.
-
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.
-
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.
-
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 .
-
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.
-
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.
-
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.
-
Fare clic sul collegamento
Il collegamento punta a account.fernloft.com, il vero indirizzo di Fernloft, quindi Alice lo clicca come farebbe chiunque.
-
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