[Linuxtrent] Re: Sun & Google per AJAX Office: un articolo da non perdere

  • From: paolo massa <paolo.massa@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Sat, 15 Oct 2005 20:23:44 +0200

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


Other related posts: