On 10/15/05, Marco Cova <marco.cova@xxxxxxxxx> wrote: > Il 06/10/05, Guido Brugnara<gdo@xxxxxxxxx> ha scritto: > > Mi piacecebbe parlare di AJAX sì, ma con qualche idea variante ... > > interessa? > > 2005 > Cross site scripting worm, ajax-based: > http://namb.la/popular/tech.html > > A proposito di idee varianti ;-) Questo tipo (samy) e' un genio! Consiglio a tutti di leggere la pagina inviata da marco!!! Anzi prima questa che e' la spiegazione di quello che ha fatto: http://namb.la/popular/ e poi quella con il codice: http://namb.la/popular/tech.html " I could basically control the web browsing of anyone who hit my profile." sostanzialmente, il tipo ha messo dentro la pagina del suo profilo in myspace un po' di html. l'html comprendeva una serie di chiamate ajax tipo "xmlhttp.onreadystatechange = callback" quando qualcuno visita la pagina del suo profilo, questo codice faceva delle chiamate GET (e POST) del tipo /index.cfm?fuseaction=invite.addfriend_verify&friendID=1185165 con le quali l'ignaro visitatore "dichiarava" di agggiungere samy tra i suoi amici! Geniale, pero' niente di super-eccezionale, e' gia' stato fatto per altri siti; tuttavia myspace.com fa l'escaping di molto html (non ti permette di scrivere javascript ad esempio) e l'interessante e' vedere come il tipo ha superato queste restrizioni: ad esempio usando gli "a capo" o la concatenazione di stringhe. 1) eval('xmlhttp.onread' + 'ystatechange = callback'); 2) <div id="mycode" expr="alert('hah!')" style="background:url('java[A_CAPO!] script:eval(document.all.mycode.expr)')"> ma perche' fermarsi li' e non farlo fare anche agli amici degli amici? e cosi' il codice HTML nel suo profilo introduceva anche se stesso (ecco la parte WORM!), usando una write in innerHTML, nel profilo dei suoi amici (ovvero delle persone contagiate dalla sua amicizia ;-) cosi' chiunque visitasse un contagiato (suo amico...) si contagiava a vicenda (e il suo profilo diventava diffusore del virus dell'amicizia). WOW! il processo e' chiaramente esponenziale 7 hours later, 8:35 am: You have 74 friends and 221 friend requests. 1 hour later, 9:30 am: You have 74 friends and 480 friend requests. 1 hour later, 10:30 am: You have 518 friends and 561 friend requests. 3 hours later, 1:30 pm: You have 2,503 friends and 6,373 5 hours later, 6:20 pm: I timidly go to my profile to view the friend requests. 2,503 friends. 917,084 friend requests. I refresh three seconds later. 918,268. I refresh three seconds later. 919,664 (screenshot below). A few minutes later, I refresh. 1,005,831. " I can propagate the program to their profile, can't I. If someone views my profile and gets this program added to their profile, that means anyone who views THEIR profile also adds me as a friend and hero, and then anyone who hits THOSE people's profiles add me as a friend and hero... So if 5 people viewed my profile, that's 5 new friends. If 5 people viewed each of their profiles, that's 25 more new friends. And after that, well, that's when things get difficult. The math, I mean. Some people would call this a worm. I call it popularity." Secondo me, il tipo e' un genio totale. E il suo hack ci deve far riflettere: il Web e' sempre piu' utilizzato come piattaforma per interazioni sociali ... eppure puo' capitare che gli utenti scatenino reazioni (ad esempio dichiarino che uno e' loro amico oppure inviino una email) senza volerlo, semplicemente, ad esempio, perche' visitano un sito web. Ad esempio, io sto scrivendo questa email da mail.google.com, ho un po' il timore che sia possibile gia' oggi fare un sito con un po' di HTML e javascript, tale per cui se lo visito, il sito puo' inviare una email a mio nome, oppure carpire tutte le email che ho ricevuto da sempre, ... sostanzialmente gli basterebbe farmi fare le GET e POST che io genero (o credo di generare) quando, ad esempio, pigio sul bottone "Archive" o "send". O mi sono perso qualcosa? Ad ogni modo consiglio di leggere l'articolo e il codice scritto da questo "samy is my hero" ;-) P. -- Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx