Apa Itu CSRF Attack Dan Bagaiamana Cara Mencegahnya?

Apa Itu CSRF Attack?

Untuk menghentikan kerugian kehilangan uang tunai dan kredensial dalam serangan CSRF, baik developers maupun pengguna memiliki peran penting yang harus mereka mainkan. Kali ini kita akan membahas apa itu CSRF attack dan bagaiamana cara mencegahnya?

Cross-Site Request Forgery (CSRF) adalah salah satu cara tertua untuk mengeksploitasi kerentanan situs web. Ini menargetkan server-side web yang biasanya memerlukan otentikasi seperti logging. Selama serangan CSRF, penyerang bertujuan untuk memaksa korbannya membuat permintaan web berbahaya yang tidak sah atas nama mereka.

Praktik keamanan situs web yang lemah atau buruk dan kecerobohan di jalur pengguna adalah beberapa penyebab umum serangan CSRF yang berhasil. Mari kita lihat apa itu serangan CSRF dan cara mencegahnya sebagai developer atau sebagai pengguna.

Baca Juga: Apa Itu Reverse Engineering: Fungsi, Contoh, Dan Tahapan

Apa Itu CSRF?

Cross-Site Request Forgery (CSRF) juga dikenal sebagai “Session Riding” atau “One-Click Attack”. Serangan ini adalah jenis serangan Eksploitasi berbahaya terhadap pengguna aplikasi web. Serangan ini telah terdaftar sebagai yang ke-7 yang paling dapat dieksploitasi di antara 10 Serangan Web teratas. 

CSRF adalah serangan yang memungkinkan penyerang melakukan permintaan HTTP sembarang POST/GET yang tidak sah atas nama korban yang saat ini diautentikasi ke situs web. Ada banyak jenis serangan web yang yang dilakukan dengan menggunakan teknik CSRF ini, mulai dari yang tidak begitu berbahaya sampai yang berbahaya.

Baca Juga: Apa Itu SQL Injection: Cara Kerja, Contoh, Dan Jenis-Jenis

Bagaimana Serangan CSRF Mempengaruhi Korban?

CSRF adalah serangan yang digunakan untuk mengimplementasikan permintaan yang tidak sah selama tindakan web yang memerlukan login atau otentikasi pengguna. Serangan CSRF dapat memanfaatkan ID session, cookie, serta kerentanan berbasis server lainnya untuk mencuri kredensial pengguna.

Misalnya, mengaktifkan prosedur anti-CSRF mencegah interaksi berbahaya cross-domain. Setelah penghalang itu rusak, penyerang dapat dengan cepat memanfaatkan ID session pengguna melalui cookie yang dibuat oleh browser pengguna dan menyematkan tag skrip ke situs web yang rentan.

Dengan memanipulasi ID, penyerang juga dapat mengarahkan pengunjung ke halaman web lain atau mengeksploitasi metode social engineering seperti email untuk mengirim link, mendorong korban untuk mendownload software berbahaya.

Setelah korban melakukan tindakan seperti itu, pelaku mengirimkan permintaan HTTP ke halaman layanan pengguna dan mengotorisasi tindakan permintaan untuk mendukung penyerang. Itu bisa sangat merusak bagi pengguna yang tidak menaruh curiga.

Serangan CSRF yang berhasil dapat membuat pengguna kehilangan kredensial aksesnya ke penyerang, terutama selama tindakan berbasis server seperti permintaan perubahan kata sandi atau nama pengguna. Dalam skenario yang lebih buruk, penyerang mengambil alih seluruh session dan bertindak atas nama pengguna.

CSRF telah digunakan untuk membajak transaksi dana melalui web serta mengubah nama pengguna dan kata sandi, yang menyebabkan pengguna kehilangan akses ke layanan yang terpengaruh.

Bagaimana Penyerang Membajak Session Pengguna Dengan CSRF

Target utama serangan CSRF adalah tindakan web yang melibatkan otentikasi pengguna. Agar berhasil, diperlukan tindakan yang tidak disengaja dari korban.

Selama serangan CSRF, tindakan GET, DELETE, dan PUT, serta permintaan POST yang rentan menjadi target utama penyerang. Mari kita lihat arti dari istilah-istilah itu:

  • GET: Permintaan untuk mengumpulkan hasil dari database; misalnya, pencarian Google.
  • POST: Biasanya untuk mengirimkan permintaan melalui formulir web. Permintaan POST biasa terjadi selama pendaftaran atau login pengguna, atau dikenal sebagai otentikasi.
  • DELETE: Untuk menghapus sumber daya dari database. Kalian melakukan ini setiap kali kalian menghapus akun kalian dari layanan web tertentu.
  • PUT: Permintaan PUT mengubah atau memperbarui sumber daya yang ada. Contohnya adalah mengubah nama Facebook kalian.

Dalam praktiknya, penyerang menggunakan pembajakan session untuk mendukung serangan CSRF. Saat menggunakan kombinasi ini, penyerang dapat menggunakan pembajakan untuk mengubah IP address korban.

Perubahan IP address kemudian memasukkan korban ke situs web baru di mana penyerang telah memasukkan link tipuan yang mengirimkan formulir yang dibuat sama persis atau permintaan server yang dimodifikasi yang mereka buat melalui CSRF.

Pengguna yang tidak curiga kemudian mengira pengalihan tersebut berasal dari penyedia layanan dan mengklik link di halaman web penyerang. Setelah mereka melakukan ini, pelaku mengirimkan formulir pada pemuatan halaman tanpa sepengetahuan mereka.

Contoh Serangan CSRF GET Request

Bayangkan mencoba melakukan pembayaran online melalui platform e-niaga tanpa jaminan. Pemilik platform menggunakan permintaan GET untuk memproses transaksi kalian. Query GET itu mungkin terlihat seperti ini:

https://www.websiteurl/bayar?jumlah=$10&perusahaan=[perusahaan%20ABC%27s%20account]

Seorang pembajak dapat mencuri transaksi kalian dengan mudah dengan mengubah parameter permintaan GET. Untuk melakukan ini, yang perlu mereka lakukan hanyalah menukar nama kalian dengan nama mereka, dan lebih buruk lagi, ubah jumlah yang ingin kalian bayarkan. Mereka kemudian mengubah query asli menjadi seperti ini:

https://www.websiteurl/bayar?jumlah=$20000&perusahaan=[attacker%27s%20account]

Setelah kalian mengklik link ke permintaan GET yang dimodifikasi, kalian akhirnya melakukan transfer yang tidak disengaja ke akun penyerang.

Bertransaksi melalui permintaan GET adalah praktik yang buruk, dan membuat aktivitas rentan terhadap serangan.

Contoh Serangan CSRF Permintaan POST

Banyak developer yang percaya bahwa menggunakan permintaan POST lebih aman untuk melakukan transaksi web. Meskipun itu benar, sayangnya, permintaan POST juga rentan terhadap serangan CSRF.

Untuk berhasil membajak permintaan POST, semua yang dibutuhkan penyerang adalah ID session kalian saat ini, beberapa bentuk duplikasi tak terlihat, dan terkadang, sedikit manipulasi psikologis.

Misalnya, formulir permintaan POST mungkin terlihat seperti ini:

<form action="Perusahaan ABC's account" method="POST"><input type="text" name="name" placeholder="name"><br><input type="number" name="jumlah"><br><input type="submit" name="submit"></form>

Namun, penyerang dapat menukar kredensial kalian dengan membuat halaman baru dan mengubah formulir di atas menjadi ini:

<body onload="document.getElementById('payment-form').submit();"> <form action="Attacker's account" id="payment-form" method="POST"><input type="text" hidden name="name" placeholder="name"><br><input type="number" hidden value=30000 name="jumlah"><br><input type="submit" hidden name="submit"></form> </body>

Dalam bentuk yang dimanipulasi, penyerang menetapkan nilai kolom jumlah ke “30000”, menukar nomor rekening penerima ke nomor mereka, mengirimkan formulir pada pemuatan halaman, dan juga menyembunyikan kolom formulir dari pengguna.

Setelah mereka membajak session saat ini, halaman transaksi kalian memulai pengalihan ke halaman penyerang, yang meminta kalian untuk mengklik link yang mereka tahu kemungkinan besar akan kalian kunjungi.

Mengklik ini memuat pengiriman formulir yang direplikasi, yang mentransfer dana kalian ke akun penyerang. Itu berarti kalian tidak perlu mengklik tombol seperti “kirim” agar transaksi terjadi, karena JavaScript secara otomatis melakukan ini saat memuat halaman web berikutnya.

Sebagai alternatif, penyerang juga dapat membuat draf email tersemat HTML yang meminta kalian untuk mengklik link untuk melakukan pengiriman formulir pemuatan halaman yang sama.

Tindakan lain yang rentan terhadap serangan CSRF adalah nama pengguna atau perubahan kata sandi, contoh permintaan PUT. Penyerang mereplikasi formulir permintaan kalian dan mengganti alamat email kalian dengan milik mereka.

Kemudian mereka mencuri session kalian dan mengarahkan kalian ke halaman atau mengirimi kalian email yang meminta kalian mengklik link yang menarik.

Itu kemudian mengirimkan formulir yang dimanipulasi yang mengirimkan link pengaturan ulang kata sandi ke alamat email pelaku, bukan milik kalian. Dengan cara itu, pelaku mengubah kata sandi kalian dan mengeluarkan kalian dari akun kalian sendiri.

Bagaimana Mencegah Serangan CSRF Sebagai Developer

Salah satu metode terbaik untuk mencegah CSRF adalah dengan menggunakan token yang sering berubah alih-alih bergantung pada session cookies untuk menjalankan perubahan status di server.

Banyak backend frameworks modern menawarkan keamanan terhadap CSRF. Jadi jika kalian ingin menghindari teknis peningkatan terhadap CSRF sendiri, kalian dapat mengatasinya dengan mudah menggunakan server-side frameworks yang dilengkapi dengan token anti-CSRF bawaan.

Saat kalian menggunakan token anti-CSRF, permintaan berbasis server menghasilkan string acak alih-alih session cookies yang lebih rentan. Dengan begitu, kalian bisa melindungi session kalian agar tidak ditebak oleh pembajak.

Menerapkan sistem two-factor authentication (2FA) untuk menjalankan transaksi di aplikasi web kalian juga mengurangi kemungkinan CSRF. CSRF juga dapat dimulai melalui pembuatan cross-site scripting (XSS), yang melibatkan script injection ke bidang pengguna seperti formulir komentar. Untuk mencegah hal ini, praktik yang baik adalah mengaktifkan HTML auto-escape di semua bidang formulir pengguna di seluruh situs web kalian. Tindakan itu mencegah kolom formulir menafsirkan elemen HTML.

Bagaimana Mencegah Serangan CSRF Sebagai Pengguna

Sebagai pengguna layanan web yang melibatkan otentikasi, kalian memiliki peran yang harus dimainkan dalam mencegah penyerang mencuri kredensial dan session kalian melalui CSRF juga. Pastikan kalian menggunakan layanan web tepercaya selama aktivitas yang melibatkan transfer dana. Selain itu, gunakan browser web aman yang melindungi pengguna dari session exposure, serta search engines aman yang melindungi dari kebocoran data penelusuran.

Sebagai pengguna, kalian juga dapat bergantung pada third-party authenticators seperti Google Authenticator atau alternatifnya untuk memverifikasi identitas kalian melalui web. Meskipun kalian mungkin tidak bisa untuk menghentikan penyerang membajak session kalian, kalian tetap dapat membantu mencegahnya dengan memastikan bahwa browser kalian tidak menyimpan informasi seperti sandi dan detail login lainnya.

Kesimpulan

Jadi apa itu CSRF? CSRF adalah jenis serangan yang dilakukan dengan cara mengeksekusi perintah perintah di dalam sistem tanpa memiliki wewenang untuk melakukannya. CSRF dilakukan dengan memanfaatkan celah keamanan yang ada di dalam sistem.

Developer perlu menguji aplikasi web secara teratur untuk mengetahui adanya pelanggaran keamanan selama pengembangan dan penerapan. Namun, merupakan hal yang umum untuk memperkenalkan kerentanan lain saat mencoba mencegah kerentanan lain. Jadi berhati-hatilah untuk memastikan bahwa kalian tidak melanggar parameter keamanan lain saat mencoba memblokir CSRF.


Sekian artikel Apa Itu CSRF Attack Dan Bagaiamana Cara Mencegahnya. Nantikan artikel menarik lainnya dan jangan lupa share artikel ini ke teman-teman kalian. Terimakasih…

Related posts

Mengapa Pebisnis Harus Berinvestasi Di Keamanan Siber?

Bagaimana Penyedia VPN Gratis Menghasilkan Uang?

9 Cara Mengamankan Akun Google Dari Hacker