sslstrip
e bettercap
funzionano "a volte" sui browser Chrome su siti come Facebook, Google, AOL e altri siti che utilizzano il precarico HSTS. Perché funziona a volte quando non dovrebbe funzionare affatto?
sslstrip
e bettercap
funzionano "a volte" sui browser Chrome su siti come Facebook, Google, AOL e altri siti che utilizzano il precarico HSTS. Perché funziona a volte quando non dovrebbe funzionare affatto?
Secondo la documentazione , questo funziona riscrivendo i link HTTPS ai collegamenti HTTP con un altro sottodominio. Poiché nessuno di questi siti utilizza la direttiva includeSubDomains
, il browser non utilizzerà HSTS per questi collegamenti riscritti. L'uso della direttiva includeSubDomains
impedisce questo attacco facendo in modo che i browser forzino l'uso di HTTPS per tutti i sottodomini di un sito, anziché solo determinati sottodomini.
Normalmente questo non dovrebbe funzionare per i siti precaricati, dato che l' elenco precarico richiede che venga specificato includeSubDomains
, ma appare l'elenco ha fatto alcune eccezioni a tale requisito, in particolare per Google e Facebook. Google ha un lungo elenco di sottodomini precaricati tra cui accounts.google.com, docs.google.com, encrypted.gogole.com, ecc., Ma google.com non è precaricato. Allo stesso modo Facebook ha www.facebook.com, m.facebook.com, secure.facebook.com, e molti altri precaricati, ma Facebook.com non lo è. Quindi se sei già su un sito HTTP, sslstrip2 può riscrivere un link da www.facebook.com a wwww.facebook.com per evitare HSTS.
Durante il test ho scoperto che l'elenco di precaricamento di Firefox differisce da quello di Chrome più di quanto ci si potrebbe aspettare. Come indicato qui , l'elenco di Firefox è basato su Chrome, ma Firefox esegue la propria convalida della lista. Ciò si traduce in casi come touch.facebook.com, dove Chrome ha includeSubdomains
impostato su true nel suo elenco di precaricamento, ma Firefox ha impostato su true (infatti, quando l'ho appena testato, l'intestazione che ho ottenuto era strict-transport-security max-age=15552000; preload
).