Cross Site Request Forgery (CSRF) — [CWE-352]

1 year ago 83
BOOK THIS SPACE FOR AD
ARTICLE AD

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Deskripsi

Serangan CSRF (Cross Site Request Forgery) terjadi ketika penyerang mengirim tautan jahat ke pengguna yang ditargetkan dan pengguna yang ditargetkan mengklik tautan tersebut untuk memproses permintaan yang dipalsukan. CSRF memanfaatkan aplikasi yang tidak dapat membedakan antara permintaan yang sah dan palsu. Penyerang mengirimkan permintaan palsu kepada korban untuk mengubah status akun mereka (mengubah kata sandi pengguna, transfer dana, menambah/menghapus item di keranjang), dll.

2. Potensi Dampak

Dalam serangan CSRF yang berhasil, penyerang menyebabkan pengguna korban melakukan suatu tindakan secara tidak sengaja. Misalnya, ini mungkin untuk mengubah alamat email di akun mereka, mengubah sandi, atau melakukan transfer dana. Bergantung pada sifat tindakannya, penyerang mungkin dapat memperoleh kontrol penuh atas akun pengguna. Jika pengguna yang disusupi memiliki peran istimewa dalam aplikasi, penyerang mungkin dapat mengambil kendali penuh atas semua data dan fungsionalitas aplikasi.

3. Contoh Eksploitasi

Untuk CSRF Exploitation, saya memilih Pentester Academy Challenge Lab. Anda perlu membuat akun di Pentester Academy Attack Defense Lab untuk mengakses tantangan lab berikut:

Setelah membuat akun di website Pentester Academy Lab, saya memulai tantangan dengan mengklik tombol RUN. Itu memulai lab, dan saya dapat mengunjungi aplikasi web tantangan lab dengan mengklik tombol Lab Link. Lab ini terkait dengan eksploitasi CSRF di qdPM, solusi manajemen proyek sumber terbuka yang ditulis dalam PHP.

Menurut CVE-2022–26180, qdPM 9.2 memungkinkan Pemalsuan permintaan Lintas Situs melalui index.php/myAccount/update URI.

Saya menggunakan kredensial yang disediakan di lab tantangan untuk masuk ke aplikasi web. Kredensial yang disediakan di lab adalah:

Email: john@example.com

Password: john2022

Setelah masuk ke aplikasi web, Anda akan melihat dashboard berikut:

Saya mengklik nama pengguna di sudut kanan atas untuk mengunjungi halaman profil.

Sekarang saya memulai Burp Suite Professional untuk mencegat permintaan aplikasi web. Saya menggunakan plugin FoxyProxy di browser FireFox untuk mengonfigurasi pengaturan proxy. Memulai plugin foxyproxy:

Di profesional burp suite, saya dapat menangkap permintaan saat memuat ulang halaman aplikasi web:

Dalam permintaan di atas, kita dapat melihat bahwa tidak ada token CSRF yang digunakan dalam permintaan tersebut. Untuk mengeksploitasi kerentanan CSRF di qdPM, saya perlu menangkap permintaan pembaruan akun. Aplikasi web memungkinkan untuk mengatur kata sandi baru tanpa memasukkan kata sandi saat ini.

Saya memasukkan kata sandi baru dan menangkap permintaan pembaruan akun di Burp Suite Professional.

Captured Request in Burp:

Dalam permintaan di atas, tidak ada token CSRF yang digunakan untuk melindungi aplikasi web dari serangan CSRF. Penyerang dapat membuat POC CSRF untuk mendapatkan tautan jahat yang dapat mereka gunakan terhadap pengguna lain yang diautentikasi.

Saya membuat POC CSRF menggunakan fitur Engagement Tools di Burp Suite Professional.

CSRF POC:

Kemudian saya mengklik tombol Test in Browser untuk mendapatkan tautan permintaan palsu.

Menyalin tautan dan menempelkannya ke browser tempat pengguna target masuk. Biasanya, kami membuat tautan dan mengirimkannya ke pengguna target melalui phishing, dll. Namun dalam kasus kami, kami tidak dapat membuat akun pengguna lain di aplikasi web ini .

Ketika pengguna Target akan membuka tautan permintaan yang dipalsukan di browser (seperti tangkapan layar di atas), dan mengklik tombol Kirim Permintaan, itu akan mengubah kata sandinya yang digunakan Penyerang dalam permintaan yang dipalsukan. Saya mengklik tombol Kirim Permintaan dan kemudian keluar dari aplikasi web.

Serangan CSRF berhasil, dan saya tidak dapat masuk ke aplikasi web menggunakan Kata Sandi lama. Kemudian saya masuk ke aplikasi web menggunakan kata sandi baru.

Serangan CSRF pada qdPM 9.2 juga dapat dijalankan dengan exploit-db berikut:

Agar eksploit di atas berfungsi, kita perlu melakukan perubahan pada eksploit (mengubah URL target, mengubah data akun pembaruan seperti nama pengguna, kata sandi, dll). Simpan eksploit dalam file HTML dan simpan di server lokal. Ketika pengguna target mengunjungi halaman eksploitasi ini, itu akan mengubah kata sandi pengguna target.

4. Contoh Pencegahan

Kami dapat mencegah serangan CSRF pada aplikasi web kami dengan menerapkan tindakan pencegahan berikut:

· Token CSRF

· Cookie Situs yang Sama

Aplikasi menggunakan Token CSRF dengan setiap permintaan POST, PUT, DELETE, UPDATE untuk mencegah serangan CSRF. Token CSRF yang dikirim dengan setiap permintaan bersifat unik dan Penyerang tidak dapat menebaknya.

Cookie Situs yang Sama adalah tindakan balasan populer lainnya untuk serangan CSRF. Jika flag cookie Situs yang Sama disetel, browser tidak akan menambahkan cookie untuk permintaan yang berasal dari domain berbeda. Bendera cookie Situs yang sama hanya menyertakan cookie dengan permintaan yang berasal dari domain yang sama.

Referensi:

Read Entire Article