Keamanan

Melakukan Serangan Pemalsuan Permintaan Lintas Situs

Melakukan Serangan Pemalsuan Permintaan Lintas Situs
Serangan CSRF adalah serangan yang membuat pengguna yang diautentikasi melakukan tindakan yang tidak diinginkan di aplikasi web tempat mereka diautentikasi. Ini dilakukan melalui situs eksternal yang dikunjungi pengguna dan yang memicu tindakan ini.

Dalam artikel ini, Anda akan memperoleh informasi yang diperlukan dari aplikasi untuk mengetahui apa yang harus dilakukan situs penyerang untuk mengirim permintaan yang valid ke server yang rentan. Kemudian, Anda akan membuat halaman yang mensimulasikan permintaan yang sah dan mengelabui pengguna agar mengunjungi halaman tersebut saat diautentikasi. Anda juga akan membuat beberapa iterasi pada bukti konsep dasar agar lebih terlihat seperti serangan dunia nyata, di mana korban tidak menyadarinya. Perhatikan bahwa file kode untuk artikel ini dapat ditemukan di github penulis.

Bersiap-siap

Anda memerlukan akun pengguna yang valid di BodgeIt untuk artikel ini. Artikel ini menggunakan [dilindungi email] sebagai korban:

Bagaimana cara melakukannya…

Pertama, Anda perlu menganalisis permintaan yang ingin Anda paksa untuk dibuat oleh korban. Untuk melakukan ini, Anda memerlukan Burp Suite atau proxy lain yang dikonfigurasi di browser:

  1. Masuk ke BodgeIt sebagai pengguna mana pun dan klik nama pengguna untuk membuka profil.
  2. Buat perubahan kata sandi. Lihat seperti apa permintaan di proxy:

    Jadi, itu adalah POS meminta untuk http://192.168.56.11/bodgeit/kata sandi.jsp, dan hanya memiliki kata sandi dan konfirmasinya di badan.

  3. Cobalah untuk membuat halaman HTML yang sangat sederhana yang mereplikasi permintaan ini. Buat file (beri nama csrf-ubah-kata sandi.html) dengan isi sebagai berikut:







  4. Sekarang, muat file ini di browser yang sama dengan sesi login Anda:
  5. Klik kirim dan Anda akan diarahkan ke halaman profil pengguna. Ini akan memberi tahu Anda bahwa kata sandi berhasil diperbarui.
  6. Meskipun ini membuktikan maksudnya, situs eksternal (atau halaman HTML lokal seperti dalam kasus ini) dapat menjalankan permintaan perubahan sandi pada aplikasi. Masih kecil kemungkinannya bahwa pengguna akan mengklik Kirimkan Anda dapat mengotomatiskannya dan menyembunyikan bidang input sehingga konten berbahaya disembunyikan. Sekarang, buat halaman baru berdasarkan halaman sebelumnya; sebut saja csrf-ubah-sandi-scripted.html:


    Halaman yang sama sekali tidak berbahaya


    Anda dapat mempercayai halaman ini.
    Tidak ada hal buruk yang akan terjadi pada Anda atau akun BodgeIt Anda.





    Kali ini form tersebut memiliki parameter ID dan terdapat script pada halaman yang akan mengirimkan kontennya ketika halaman tersebut dimuat secara lengkap.

  7.  Jika Anda memuat halaman ini di browser yang sama tempat Anda memulai sesi BodgeIt, itu akan secara otomatis mengirim permintaan dan halaman profil pengguna akan ditampilkan setelah itu. Pada tangkapan layar berikut, browser Debuggersetel breakpoint tepat sebelum permintaan dibuat:
  8. Upaya terakhir ini terlihat lebih baik dari sudut pandang penyerang. Anda hanya perlu korban untuk memuat halaman dan permintaan akan dikirim secara otomatis, tetapi kemudian korban akan melihat Kata sandi Anda telah diubahpesan, dan itu pasti akan menimbulkan peringatan.
  9. Anda dapat lebih meningkatkan halaman penyerang dengan membuatnya memuat respons dalam bingkai tak terlihat di dalam halaman yang sama. Ada banyak cara untuk melakukan ini; yang cepat dan kotor adalah menyetel ukuran 0untuk bingkai. File Anda akan terlihat seperti ini:


    Halaman yang sama sekali tidak berbahaya


    Anda dapat mempercayai halaman ini.
    Tidak ada hal buruk yang akan terjadi pada Anda atau akun BodgeIt Anda.
    target="target_frame">





    Perhatikan bagaimana properti target formulir adalah iframe yang ditentukan tepat di bawahnya dan bahwa bingkai tersebut memiliki 0% tinggi dan lebar.

  10. Muat halaman baru di browser tempat sesi dimulai. Tangkapan layar ini menunjukkan tampilan halaman saat diperiksa dengan browser Alat pengembang: Perhatikan bahwa objek iframe hanya berupa garis hitam pada halaman dan, di Inspektur, Anda dapat melihat bahwa objek tersebut berisi halaman profil pengguna BodgeIt.
  11. Jika Anda menganalisis komunikasi jaringan yang dilakukan oleh halaman CSRF Anda, Anda dapat melihat bahwa itu benar-benar membuat permintaan untuk mengubah sandi BodgeIt:

Bagaimana itu bekerja…

Saat Anda mengirim permintaan dari browser dan sudah memiliki cookie milik domain target yang disimpan, browser akan melampirkan cookie ke permintaan sebelum dikirim. Inilah yang membuat cookie begitu nyaman sebagai pengidentifikasi sesi, tetapi karakteristik cara kerja HTTP ini juga yang membuatnya rentan terhadap serangan seperti yang Anda lihat di artikel ini.

Saat Anda memuat halaman di browser yang sama, di mana Anda memiliki sesi aktif dalam suatu aplikasi, browser akan secara otomatis melampirkan cookie sesi ke permintaan itu. Ini terjadi bahkan jika itu adalah tab atau jendela yang berbeda, dan halaman ini membuat permintaan ke domain tempat sesi dimulai.

Jika server tidak memverifikasi bahwa permintaan yang diterimanya benar-benar berasal dari dalam aplikasi, itu memungkinkan situs jahat melakukan panggilan atas nama pengguna aktif dan sah yang mengunjungi situs berbahaya ini saat diautentikasi ke domain target.

Dalam uji penetrasi aplikasi web, kode pertama yang Anda gunakan, kode dengan dua kolom teks dan Kirimkan tombol, mungkin cukup untuk menunjukkan adanya kelemahan keamanan. Namun, pengujian penetrasi aplikasi dapat menjadi bagian dari keterlibatan lain, seperti rekayasa sosial atau latihan tim merah. Dalam hal ini, beberapa upaya ekstra akan diperlukan untuk mencegah pengguna korban curiga bahwa sesuatu sedang terjadi.

Dalam artikel ini, Anda menggunakan JavaScript untuk mengotomatiskan pengiriman permintaan dengan menyetel peristiwa onload di halaman dan menjalankan metode pengiriman formulir di fungsi pengendali peristiwa. Anda juga menggunakan iframe tersembunyi untuk memuat respons perubahan sandi, sehingga korban tidak pernah melihat pesan bahwa sandinya telah diubah.

Jika Anda menemukan artikel ini menarik, Anda dapat menjelajahi Buku Masak Pengujian Penetrasi Web Kali Linux - Edisi Kedua untuk menemukan kerentanan web yang paling umum dan mencegahnya menjadi ancaman bagi keamanan situs Anda. Buku Masak Pengujian Penetrasi Web Kali Linux - Edisi Kedua memberi Anda keterampilan yang Anda butuhkan untuk mencakup setiap tahap uji penetrasi - mulai dari mengumpulkan informasi tentang sistem dan aplikasi hingga mengidentifikasi kerentanan melalui pengujian manual.

10 Game Teratas untuk Dimainkan di Ubuntu
Platform Windows telah menjadi salah satu platform yang mendominasi untuk bermain game karena persentase besar dari game yang berkembang saat ini untu...
5 Game Arkade Terbaik untuk Linux
Saat ini, komputer adalah mesin serius yang digunakan untuk bermain game. Jika Anda tidak bisa mendapatkan skor tinggi baru, Anda akan tahu apa yang s...
Pertempuran Untuk Wesnoth 1.13.6 Pengembangan Dirilis
Pertempuran Untuk Westnoth 1.13.6 dirilis bulan lalu, adalah rilis pengembangan keenam dalam 1.13.x series dan memberikan sejumlah peningkatan, teruta...