CSRF (Cross Site Request Forgery)
Pengertian, Cara Kerja, dan Contoh Serangannya
1. Pengertian CSRF
Apa itu CSRF?
CSRF atau Cross Site Request Forgery adalah kerentanan web, di mana penyerang menipu browser korban untuk mengirim permintaan palsu ke situs web yang melakukan tindakan tertentu atas nama pengguna yang masuk atau korban. Server web yang memproses permintaan mengeksekusi tindakan permintaan yang diinginkan, karena terlihat mirip dengan permintaan normal yang dihasilkan oleh browser pengguna.
Baca Juga: Belajar XML - apa itu XML (odimera.com)
Namun, browser tidak mengizinkan membaca di seluruh situs; Misalnya, situs web ini tidak dapat membaca konten pada halaman yang mungkin telah Anda buka di tab lain. Namun, pengiriman formulir di seluruh situs atau domain diizinkan. Melalui celah keamanan itulah serangan CSRF dimungkinkan sejak awal. Inti dari kerentanan CSRF adalah "masalah deputi bingung" yang terjadi ketika browser web tidak dapat memvalidasi pengguna aplikasi web yang masuk dengan benar.
Serangan CSRF biasanya dilakukan dengan menggunakan trik dan teknik rekayasa sosial yang berbahaya, seperti email atau tautan yang menipu korban agar mengirim permintaan palsu ke server. Karena korban diautentikasi oleh aplikasi target mereka yang rentan pada saat serangan, maka tidak mungkin untuk membedakan permintaan yang sah dari yang palsu.
Target serangan CSRF termasuk aplikasi web seperti media sosial, klien email dalam browser, perbankan online dan antarmuka web untuk perangkat jaringan. Kerentanan CSRF dapat sangat bervariasi dalam tingkat keparahan, misalnya penyerang dapat mengubah pengaturan atau memposting sesuatu atas nama korban, tetapi dalam kondisi kritis itu juga dapat menyebabkan perubahan kata sandi, pengambilalihan akun, dan sebagainya.
2. Cara Kerja Serangan CSRF
Dalam serangan CSRF, permintaan web palsu dikirim dari situs berbahaya yang dikunjungi korban ke situs target atau aplikasi web yang diyakini penyerang bahwa korban masuk atau divalidasi. Di sini situs berbahaya dikendalikan oleh penyerang. Permintaan berbahaya diarahkan ke situs target melalui browser korban, yang diautentikasi terhadap situs target. Sekarang di sini kerentanannya terletak pada aplikasi web / situs target yang terpengaruh, bukan browser korban atau situs yang menghosting eksploitasi CSRF.
Sebagai contoh, katakanlah ada aplikasi web perbankan yang dengannya kita dapat mentransfer dana ke akun yang berbeda, di mana pengguna harus masuk untuk mentransfer dana.
Baca Juga: Pengertian deface dan cara menghindarinya (odimera.com)
2.1 Langkah-langkah Serangan CSRF
- Pertama, pengguna/korban akan login ke aplikasi perbankan untuk mentransfer dana.
- Kemudian pengguna/korban Kemudian mengunjungi situs berbahaya yang dikendalikan penyerang saat dia masih masuk ke aplikasi perbankan.
- Pada titik ini penyerang percaya bahwa korban masuk ke rekening banknya. Sekarang penyerang menyematkan beberapa kode javascript di situs web jahatnya untuk mengirim permintaan palsu ke aplikasi perbankan atas nama korban. Permintaan palsu mungkin berisi permintaan transfer dana ke rekening bank penyerang dari rekening korban.
- Sekarang aplikasi perbankan secara otomatis memvalidasi transaksi tanpa otentikasi ulang, karena korban masuk dan permintaan tampaknya datang dari pengguna.
2.2 Contoh Serangan CSRF
Contoh kode php yang digunakan dalam contoh di bawah ini dapat diunduh dari sini Link di sini. Sebagai contoh, mari kita asumsikan korban masuk ke halaman perbankan online di bawah ini di mana dia dapat mentransfer uang dari rekening kita.
Ketika korban memasukkan jumlah dan nomor rekening dan mengklik tombol kirim, itu akan memproses permintaan transaksi kami.
Sekarang ada juga halaman berbahaya yang disebut csrf.php, yang mengirim permintaan palsu ke aplikasi bank dengan jumlah dan nomor rekening yang diubah. Kode untuk csrf.php adalah:
<html>
<body onload="document.getElementById('xsrf').submit();">
<form id="xsrf" method="GET" action="transfer.php">
<input name="amount" type="hidden" value="1000">
<input name="AcNo" type="hidden" value="999999999">
<input name="action" type="hidden" value="Change">
</form>
</body>
</html>
Baca Juga: Apa itu Malware? pengertian, jenis, dan cara mencegahnya (odimera.com)
Sekarang seperti yang kita lihat formulir di atas adalah pengiriman otomatis dari, dan ketika kita membuka halaman itu maka akan segera mengirim permintaan untuk mentransfer .php file.
Contoh di atas adalah demonstrasi sederhana serangan csrf, tetapi bukan yang akurat, karena tidak ada mekanisme masuk. Untuk menguji kode di atas, letakkan kode di atas pada direktori root di server web Anda (misalnya xampp) dan buka bank.php di browser Anda.
2. Pencegahan dari Serangan CSRF
Metode yang paling umum untuk mencegah serangan Cross-Site Request Forgery (CSRF) adalah dengan menambahkan token CSRF ke setiap permintaan dan mengaitkannya dengan sesi pengguna.
Token CSRF adalah nilai rahasia unik dan tidak dapat diprediksi yang dihasilkan oleh aplikasi sisi server, dan dikirim ke klien untuk dimasukkan dalam permintaan HTTP berikutnya yang dikeluarkan oleh klien. Setelah token dikeluarkan, ketika klien membuat permintaan, server memeriksa untuk melihat apakah permintaan berisi token yang diharapkan, dan menolaknya jika token hilang atau tidak valid. Token semacam itu minimal harus unik per sesi pengguna, tetapi juga bisa unik per permintaan. Dengan menyertakan token tantangan dengan setiap permintaan, developer dapat memastikan bahwa permintaan tersebut valid dan tidak berasal dari sumber selain pengguna. Beberapa metode lanjutan lainnya adalah:
- Gunakan cookie atribut situs yang sama. Baca di sini untuk lebih jelasnya: Link.
- Interaksi pengguna berbasis pertahanan csrf, misalnya sistem berbasis captcha atau OTP untuk memastikan bahwa itu adalah pengguna dan bukan bot atau penyerang pada beberapa fungsi penting seperti transaksi keuangan, penghapusan atau modifikasi akun, dll.
4. Akhir Kata
Demikian artikel kali ini tentang CSRF (Cross Site Request Forgery): Pengertian, Cara Kerja, dan Contoh Serangannya, semoga menambah wawasan anda, Terimakasih.
#CSRF #CrossSiteRequestForgery #odimera.com