Se un sito è scritto abbastanza male, è possibile rimuoverlo o metterlo a dura prova usando solo javascript nella barra degli indirizzi?
Sì, in teoria, un sito potrebbe avere una funzione javascript che avvierà una chiamata AJAX per distruggere il sito. Quindi, è sufficiente inserire:
javascript:destroySite();
Non riesco a pensare perché un sito abbia una funzione destroySite
, ma è teoricamente possibile. Più probabile sarebbe una sorta di funzione di ricerca, che è vulnerabile all'iniezione SQL:
javascript:search("'; drop table users; --");
Devo aggiungere che questi vettori di attacco si basano su vulnerabilità lato server, e dovresti puntellare il codice lato server per proteggerlo da SQL injection e assicurarti di autenticare qualsiasi richiesta AJAX che dovrebbe richiedere l'autenticazione, prima di permetterli per cambiare qualcosa sul server.
In sostanza, la linea di fondo è: Non fidarti mai dell'input dell'utente e le richieste AJAX sono input dell'utente
Lo schema javascript: esegue le istruzioni Javascript nel contesto della pagina corrente. È possibile ottenere lo stesso effetto scrivendo o incollando snippet di Javascript nella console di Firebug. Quindi se il sito può essere "abbattuto" da alcuni Javascript in esecuzione nel contesto della pagina corrente, è possibile (tramite javascript: nella finestra del browser, con Firebug o altra console Web).
Ma javascript: (e data :) gli schemi URL pongono problemi speciali con gli attacchi di cross-site scripting - è spesso possibile "abbattere" (compromettere) l'UTENTE. Se il sito consente l'immissione dei dati dell'utente in URL e non convalida correttamente i dati in arrivo, potrebbe creare un buco di scripting cross-site. Ad esempio, considera una pagina che accetta un parametro cgi lastpage, filtra tutti i tag e le virgolette dall'input ed echa l'input filtrato all'interno del tag: "> Fai clic qui per tornare indietro
Se l'utente malintenzionato ottiene un utente per fare clic sull'URL in cui è presente il parametro cgi lastpage: lastpage = javascript: alert (document.cookie) il sito potrebbe finire con: Clicca qui per tornare indietro (nota che non ci sono tag o virgolette nei dati iniettati). Quando l'utente fa clic sul collegamento, viene eseguito il Javascript iniettato (a volte chiamato "XSS in un clic" poiché spesso richiede l'interazione dell'utente per l'esecuzione) - ovviamente, nell'attacco reale, non farebbe un avviso ma eseguirà invece un script che invia i cookie rubati al sito dell'aggressore o fa qualcosa di altrettanto sgradevole).
La cosa giusta da fare è ricordare dove sulla pagina verrà utilizzato l'input filtrato (in quale contesto - in questo, l'URL uno) e regolare di conseguenza il filtro - ad esempio, verificare che lo schema sia limitato solo a http: // o https: //.
Il filtraggio degli URL ed evitare gli attacchi javascript: injection non si riflettono (ancora) nel Cheat Sheet OWASP XSS Prevention link
Leggi altre domande sui tag javascript web-application injection