Cross Site Request Forgery (CSRF) dan Cross Site Scripting (XSS)



A.      Cross Site Request Forgery (CSRF)

Ø  Penjelasan Cross Site Request Forgery
Cross Site Request Forgery (CSRF) adalah serangan pada website yang dieksekusi atas wewenang korban, tanpa dikehendakinya. Serangan ini disebut juga dengan “sleeping giant” karena banyak situs di internet gagal untuk melindungi website mereka dari serangan tersebut dan juga karena situs di internet itu juga telah diabaikan oleh pengembangan web dan komunitas keamanan. Adapun beberapa kerentanan CSRF, diantaranya adalah yang berhubungan dengan lembaga keuangan, kerentanan ini memungkinkan seorang penyerang untuk mentransfer uang dari rekening bank pengguna, alamat email pengguna, melanggar privasi pengguna dan akun pengguna. Serangan CSRF sederhana untuk didiagnosa, sederhana untuk dieksploitasi dan sederhana untuk diperbaiki.
 
Ø  Contoh Cross Site Request Forgery
Mari kita mempertimbangkan contoh hipotesis dari situs yang rentan terhadap serangan CSRF. Situs ini adalah situs email berbasis web yang memungkinkan pengguna untuk mengirim dan menerima email. Situs ini menggunakan otentikasi implisit untuk mengotentikasi penggunanya. Misalkan http://example.com/compose.htm ,berisi bentuk HHTML memungkinkan pengguna untuk memasukan alamat penerima email, subjek, da pesan serta tombol yang menyatakan “Kirim Email”.
<form
action="http://example.com/send_email.htm"
method="GET">
Recipient’s Email address: <input
type="text" name="to">
Subject: <input type="text" name="subject">
Message: <textarea name="msg"></textarea>
<input type="submit" value="Send Email">
</form>

Ketika pengguna dari example.com mengklik “send email” data yang dia masukan akan dikirim ke http://example.com/send_email.htm sebagai GET request, saat GET request menambahkan bentuk data ke URL, pengguna akan dikirim URL tersebut (asumsikan pengguna memasukan bob@example.com sebagai penerima, “hello” sebagai subject dan “bagaimana status proposal?” sebagai pesannya. 

http://example.com/send_email.htm?to=bob%
40example.com&subject=hello&msg=What%27s+the+
status+of+that+proposal%3F 3

Halaman send email.htm akan membawa data itu diterima dan dikirim ke penerima dari si pengguna. Catatan bahwa send_mail.htm hanya mengambil data dan melakukan tindakan dengan data tersebut. Tidak peduli dari mana permintaan tersebut berasal, hanya permintaan tersebut yang dibuat. Ini berarti bahwa jika pengguna secara manual mengetik pada URL di browser nya, “example.com” masih akan mengirim email. Misalnya, jika pengguna mengetik berikut tiga URL di web browser-nya, kirim email.htm akan mengirim tiga email (masing-masing untuk Bob, Alice dan Carol)
Sebuah serangan CSRF bisa terjadi karena “send_email.htm” membuat data tersebut dapat menerima dan mengirim email. Hal tersebut tidak memverifikasi bahwa data itu berasal dari form di compose.htm. oleh karena itu, jika seorang penyerang bisa meyebabkan pengguna mengirim permintaan untuk mengirim permintaan untuk mengirim email.htm. Halaman tersebut akan menyebabkan example.com mengirim email atas nama
dari pengguna yang berisi data
yang dipilih oleh penyerang
dan penyerang
akan berhasil melakukan serangan CSRF.
Untuk mengeksploitasi kerentanan ini, penyerang perlu memaksa
browser pengguna untuk mengirim permintaan untuk mengirim email.htm
untuk melakukan beberapa tindakan jahat. (Kami berasumsi pengguna
mengunjungi situs di bawah kendali penyerang dan situs target
tidak mempertahankan terhadap serangan CSRF.) Secara khusus,
penyerang perlu untuk menempa permintaan cross-site dari situs nya
untuk example.com. Sayangnya, HTML menyediakan banyak
cara untuk membuat permintaan tersebut. <Img> tag, misalnya,
akan menyebabkan browser untuk memuat apapun URI ditetapkan sebagai
src atribut, bahkan jika itu UR
L tidak gambar (karena
Browser hanya bisa mengatakan UR
L adalah gambar setelah pemuatan itu).
Penyerang dapat membuat halaman dengan kode berikut:
 
<img src="http://example.com/send_email.htm?
to=mallory%40example.com&subject=Hi&msg=My+
email+address+has+been+stolen">


Ketika pengguna mengunjungi halaman itu, permintaan akan dikirim untuk mengirim email.htm, yang kemudian akan mengirim email ke Mallory dari pengguna. Serangan CSRF berhasil ketika penyerang dapat menyebabkan browser pengguna melakukan tindakan yang tidak diinginkan pada situs lain.

B.       Cross Site Scripting (XSS)

Ø  Penjelasan Cross Site Scripting
Dikenal sebagai salah satu jenis serangan (attack) terampuh pada aplikasi web. Serangan ini disebabkan kegagalan dalam melakukan validasi input user/client.”cross site” ini bertugas menjaga batas keamanan yang terkait dengan web (cookie atau atribut-atribut lainnya). Teknik yang di gunakan oleh penyerang (attacker) adalah dengan memasukan atau menambahkan kode/script, umumnya dilakukan melalui field. Selanjutnya, kode yang diinject tersebut akan dieksekusi bersamaan field-field lain, atau ketika kode program dikirim ke webserver. Alasan kependekan yang digunakan XSS bukan CSS karena CSS sudah digunakan untuk cascade style sheet.
 Secara prinsip, XSS menyisipkan sebuah tag-tag HTML khusus kedalam sebuah situs. Tag-tag ini dapat dimasukkan kedalam server melalui mekanisme HTML FORM yang valid. Ini khususnya dapat terjadi ketika web developer dari situs tersebut lengah akan kemungkinan timbulnya serangan ini. Begitu tag tersebut berhasil disisipkan, maka ketika situs tersebut menampilkan data yang telah tercemar oleh script XSS tadi maka akan timbul beberapa resiko seperti:
    • User session yang dibajak. Ini memungkinkan attacker menyamar sebagai user tersebut.
    • Pencurian data-data user, khususnya login dan password

Bagi web developer, untuk mencegah serangan XSS sebetulnya mudah saja. Setiap input yang diterima melalui HTML FORM harus diperiksa apakah mengandung tag-tag yang dapat dianggap berbahaya. Tag itu lalu dibuang sebelum menyimpan datanya kedalam server. Penulis sarankan untuk membaca edisi ke-2 karena disana XSS diulas secara lebih mendetail.
Ø  Tipe Cross Site Scripting

A.      Reflected XSS

Reflected XSS merupakan tipe XSS yang paling umum dan yang paling mudah dilakukan oleh penyerang. Penyerang menggunakan social engineering agar tautan dengan kode berbahaya ini diklik oleh pengguna. Dengan cara ini penyerang bisa mendapatkan cookie pengguna yang bisa digunakan selanjutnya untuk membajak session pengguna. Mekanisme pertahanan menghadapi serangan ini adalah dengan melakukan validasi input sebelum menampilkan data apapun yang di-generate oleh pengguna. Jangan mempercayakan data apapun yang dikirim oleh pengguna.

B.       Stored XSS

Stored XSS lebih jarang ditemui dan dampak serangannya lebih besar. Sebuah serangan stored XSS dapat berakibat pada seluruh pengguna. Stored XSS terjadi saat pengguna diizinkan untuk memasukkan data yang akan ditampilkan kembali. Contohnya adalah pada message board, buku tamu, dll. Penyerang memasukkan kode HTML atau client script code lainnya pada posting mereka. Serangan ini lebih menakutkan. Mekanisme pertahanannya sama dengan reflected XSS: jika pengguna diizinkan untuk memasukkan data, lakukan validasi sebelum disimpan pada aplikasi.

Comments