Come posso ottenere JavaScript dinamico da una pagina Web?

3

Sto cercando di capire gli attacchi di Cross Site Script Inclusion (XSSI). Per questo, ho letto il recente articolo su questo tipo di attacco.

Ora il mio obiettivo principale è il rilevamento di file javascript dinamici dalla pagina Web di destinazione.

Quello che voglio sapere è, è davvero possibile ottenere uno script diverso colpendo due volte la stessa fonte di script (una volta con i cookie, una volta senza i cookie)? O sto fraintendendo il giornale? Finora ho testato diverse pagine web e non ho trovato alcun caso.

Qualsiasi set di dati di esempio o qualsiasi JS di esempio che restituisce output diversi basati sui cookie di autenticazione sarà utile per me.

    
posta Tasnim Fabiha 17.10.2017 - 17:13
fonte

1 risposta

3

La teoria

Il 99,9% di tutto il JavaScript pubblicato sul web è statico, ad es. lo stesso indipendentemente dal valore di qualsiasi cookie o quant'altro. È solo un file che viene servito così com'è dal server, proprio come si dice un'immagine JPG ordinaria.

Per alcuni casi, però, il codice JavaScript potrebbe essere generato dinamicamente (usando un linguaggio come PHP), e una richiesta potrebbe produrre risultati diversi se fatta con o senza cookie. In questi rari casi potrebbe esserci una vulnerabilità XSSI.

La generazione di JavaScript dinamico è una pratica di progettazione orribile e non qualcosa che ci si aspetterebbe da sviluppatori ben addestrati. Quindi non aspettarti di trovare facilmente vulnerabilità come questa. Ma certo, sono là fuori, da qualche parte ... Ma se sapessi dove trovarli, non te lo direi. Sarei in grado di rivelare le vulnerabilità in modo responsabile ai proprietari dei siti.

Un esempio

Diciamo che sto scrivendo una pagina web in cui gli utenti possono passare messaggi segreti tra loro, ospitati a secretmessage.com . La pagina web controlla i nuovi messaggi caricando new_messages.js dal server. Il contenuto di quel file è generato con PHP come questo (nota che il risultato sarà diverso a seconda dei cookie nella richiesta):

<?
session_start();
$user_id = $_SESSION["user_id"];
?>
var latestMessage = "<?= $database->getLatestMessage($user_id); ?>";

L'esecuzione di quello script metterà l'ultimo messaggio per l'utente che effettua la richiesta in una variabile JS, che poi posso produrre in modo convincente da qualche parte. Grande, non è vero? Bene, no ...

Ora immagina che l'attaccante malvagio crea una pagina ( http://evil.com ) che include http://secretmessages.com/new_messages.js in un tag script. Il browser richiederà diligentemente il new_messages.js da secretmessages.com con i cookie e tutto, compreso il cookie di sessione. Il contenuto di latestMessage sarà quindi leggibile dal codice su evil.com . Quindi tutto ciò che l'utente malintenzionato deve fare per leggere i messaggi segreti delle persone è ingannarli per visitare evil.com .

    
risposta data 17.10.2017 - 17:39
fonte

Leggi altre domande sui tag