ush.it - a beautiful place

Google XSS Example

January 15, 2006 at 12:37 am - Filed under Insecurity, Language IT - 266 words, reading time ~0 minutes - Permalink - Comments

L'articolo e' una traduzione in italiano di Google XSS Example.

Nei commenti del mio post precedente, Ivo Jansch domandava:

To be able to comprehend how this may affect my website, could you explain how this could be exploited, even though you cannot demonstrate it?

Al posto di dare un'altra risposta vaga, ho deciso di fornire un semplice proof of concept che dimostra come le inconsistenze di encoding dei caratteri possono rivelarsi dannose. La vulnerabilita' di Google e' gia' stata fixata ma con questo semplice script PHP possiamo riprodurre la situazione:

<?php
 header(\'Content-Type: text/html; charset=UTF-7\');
 $string = \"<script>alert(\'XSS\');</script>\";
 $string = mb_convert_encoding($string, \'UTF-7\');
 echo htmlentities($string);
?>

Se fate girare questo script PHP dovreste vedere il seguente popup:

google xss

Nonostante l'output sia passato per htmlentities() il JavaScript e' ancora eseguito dal browser.

L'attacco nell'esempio e' una stringa UTF-7 (Ho utilizzato mb_convert_encoding() per questa dimostrazione), e il browser assume la pagina come encodata in UTF-7 a causa dell'header Content-Type. Internet Explorer fa quest'assunzione by default (quindi e' possibile rimuovere la chiamata esplicita a header()), ma cosi' facendo quest'esempio dovrebbe funzionare in tutti i browser.

Si spera che gli sviluppatori inizino ad apprezzare la necessita' di avere la character encoding consistency. Se qualcuno dovesse asserire che non e' importante puoi mandarlo qui :).

Reed's Alert! Got something burning? Tell USH team.
THP USH Wisec DigitalBullets