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='
URL tersebut akan saya pecah menjadi 3 bagian:
-
http://m.facebook.com/connect/prompt_feed.php
-
?display=wap&user_message_prompt=
-
'
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:
Hello!!
Perhatikan juga apa yang terjadi bila user_message_prompt diisi dengan kode HTML:
Bagaimana bila user_message_prompt tidak hanya diisi dengan kode HTML, tapi diisi dengan kode javascript? Mari kita coba memasukkan javascript sederhana berikut ini:
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='
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.
Kenapa bisa kena sampai berkali-kali? Mari kita lihat potongan awal source html dari www.freesmsvoip.com.
SMS Gratis Semua Operator - Kirim SMS Gratis Via Internet - SMS Gratis Online - Widget SMS Gratis
Perhatikan pada baris pertama ada tag iframe dengan src yang juga mengeksploitasi XSS vulnerability pada m.facebook.com/connect/prompt_feed.php. Tag iframe ini tidak hanya ada pada halaman depan saja, namun pada setiap halaman di web tersebut. Akibatnya bila pengunjung hanya melihat halaman depan saja, dia hanya kena satu kali, bila dia juga berkunjung ke halaman-halaman lain, maka dia akan melakukan update status berkali-kali.
Berbeda dengan kasus yang memakai jasa pemendek url seperti tinyurl.com, serangan memakai iframe bisa dilekatkan pada halaman web yang tampak normal, baik hati dan tidak sombong. Dengan maraknya kasus eksploitasi XSS dengan url-shortener, orang akan semakin curiga bila menerima link yang dipendekkan karena user tidak tahu url itu akan dibelokkan ke mana. Menerima url yang dipendekkan kini mirip dengan menerima paket yang tidak jelas apa isinya, buku atau bom. Namun berbeda kasusnya dengan url yang panjang, orang cenderung tidak curiga bila menerima url panjang, apalagi domainnya tampak seperti situs baik-baik.
Saya suka panasaran juga sih dengan link2 seperti itu
jadi pengen apaan sih isinya 😀
tapi biasanya saya akan coba buka di browser lain yang dimana saya sedang tidak login facebook di situ, klo ternyata pas di buka muncul halaman login facebook saya tidak akan teruskan, pasti link2 tersebut ‘SAMPAH’
waw.. om rizki emang jago nya urusan ginian.. mudah2an artikel nya tidak disalah gunakan..
Update:
sepertinya fitur execute html atau javascript di prompt_feed.php udah di nonaktifkan sama facebook deh. soalnya tadi di test parameter user_promt nya html atau javascript keluar “please try again later”. tapi kalo inputnya teks biasa masih bisa.
CMIW
yup, memang benar sudah dipatch facebook besoknya
Nice info Om Rizki,
Mungkin ada baiknya selalu logout dan gak usah save login sessions untuk mencegah hal2 kayak gini.
Tapi sepertinya Facebook telah menutup celah ini.
mantap pencerahannya kk……..thanks yaa
hadeh, ane salah satu korban nya om, jebakan XSS.thanks for iinfonya ya.
Terus bagaimana cara kita mengatasinya boss?kalo yang udah kejangkit autopublish status apakah bisa “diobati”?
sudah diperbaiki dari facebooknya kok, jadi udah nggak ngefek lagi
o… makanya saya coba kok gk bisa
Maaf, apakah saya bisa berlangganan postingan dari situs anda ini? mohon bantuannya.
wah nice info gan,.,.,
oyah klo abded status melalui telpon umum, hape pinjam, dll
itu gimana tu,.,..ada efek ke sana juga gak,.,., kayak pencurian cookie juga gak,.,.,. 🙂
tu berlaku untuk windows 7 aj ya?
kok link itu saya kunjungi, putih semua…?
saya pemula di FB. Baru2 ini FB + e-mail anak saya di hack orang, (diacak-acak diisi dengan sesuatu yang “kurang pantas”) Bgm cara pemecahannya…… makasih
Ternyata bisa sangat mengerikan seperti itu mas.. baru tau saya.. terima kasih informasinya
…basic..but ajib…
Mantap infonya gan! Hacker kayak gini nih yang saya demen. Ngasih tahu celah sekaligus cara mengatasinya. Beda sama suck cracker yang bisanya cuma ngerusak melulu 🙁
mantep infonya bro… btw sekarnag lagi marak yang bit.ly …. gitu2 deh padahal katanya beberapa temen kondisi dia offline tapi ngirim message sendiri ma chat.. nah kalo gitu kita klik nanti akun kita jadi ikut seperti itu bro..
nice info mas..
smoga bermanfaat..
jd pngen jago kayak mas rizky.. bagus nya mulai darimana ya??
eh…itu fungsi’nya apa ?…. berbahaya gx buat pengguna FB ??
gan kalo gitu cara buat masukan url palsu kedalam web yang kita g punya akses ke servernya gimana ?kan kita g bisa asal masukin url tanpa akses ke dalam server yg punya web itu ?
mohon jawabannya
oalah… nice artikel…
berat rasanya memahami.. 🙂 tapi asyik kok, nuwun
thanks pengetahuan anda benar-benar mantap .. di tunggu artikel selanjutnya
Indahnya saling memberi sesuatu yang bermanfaat buat orang lain,saling silahturahmi untuk menambah banyak teman dan wawasan.Artikel yang menarik, saya tunggu postingan berikutnya.tidak lupa borkmark ah..
salam buat para sahabat .
semoga sukses selalu
owalah, ha,ha
tadinya saya kira status berantai seperti itu karena kesalahan yang dilakukan seorang karena teburu2 atau karena koneksinya lemot, cz q pernah tanpa sengaja update stat, dan hasilnya seperti itu, status yang sama lebih dari 1, tetapi saya melalui HP
Makasih Ilmunya,,,, pengen belajarneh jadinya…..
seep hack the planet !!!!!!!!!!!!
izin copy…
terima kasih atas ilmunya
keren….ane baca dari awal mpe akhir ga mudeng blas..hhahaha//bukan bidang saya/// ampun dj
mantep..mmzzzzzz..
gimana ya cara buat gambar url yang kayak diblog ini?? krm jawabannya ke email saya.terima kasih.
thanks infonya smua
ARTIKEL YG MENARIK UNTUK DI BACA MAKASI OM INFO YG BERMANFAAT BWAT SY YG NEWBIE…
wah mantap….. harus ku coba juga nih…. makasih gan
di coba dulu.. okok
YOU R D BEST WHITE HAT HACKER INDON. THANKS SO MUCH FOR D IMPOH 😀
🙂 😉 😛 :confused:
waaah keren nih.. tapi tetep saja saya jadi kurang ngerti karena bahasa bukan bahasa newbie hahaha
sangat sangat mencengangkan ada orang se detil ini saya sangat bangga banget punya sodara kayak gini
nice infonya
jadi gimana caranya???