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 URL tidak gambar (karena
Browser hanya bisa mengatakan URL adalah gambar setelah pemuatan itu).
Penyerang dapat membuat halaman dengan kode berikut:
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 URL tidak gambar (karena
Browser hanya bisa mengatakan URL 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.
Comments
Post a Comment