BUG-BOUNTY SERIES 12: Cross-Site Request Forgery (CSRF). Mengeksploitasi Kepercayaan Aplikasi terhadap Sesi Pengguna

Setelah pada Series 11 kita membahas Cross-Site Scripting (XSS) yang berfokus pada eksekusi script di sisi client, pada series ini kita akan membahas vulnerability yang sering kali berjalan "diam-diam" tanpa disadari korban, yaitu Cross-Site Request Forgery (CSRF).

Berbeda dengan XSS, CSRF tidak membutuhkan eksekusi script kompleks. Serangan ini memanfaatkan kepercayaan aplikasi terhadap sesi pengguna yang sudah terautentikasi.

Apa Itu CSRF?

Cross-Site Request Forgery (CSRF) adalah serangan yang memaksa browser korban untuk mengirimkan request ke aplikasi target tanpa sepengetahuan pengguna, dengan memanfaatkan sesi login yang masih aktif.

Artinya:

  • User sudah login secara sah
  • Attacker "menumpang" sesi tersebut untuk melakukan aksi tertentu

Dampak CSRF

Serangan CSRF dapat menyebabkan:

  • Perubahan data akun tanpa izin
  • Transaksi ilegal (misalnya transfer dana)
  • Perubahan password atau email
  • Penghapusan data penting
  • Penyalahgunaan hak akses pengguna

Cara Kerja CSRF

Alur sederhana serangan:

  1. User login ke aplikasi (misalnya e-commerce atau banking)
  2. Session cookie tersimpan di browser
  3. Attacker mengirimkan link atau payload berbahaya
  4. User mengakses link tersebut
  5. Browser secara otomatis mengirim request ke server target (karena session masih aktif)
  6. Server menganggap request tersebut valid

Contoh Sederhana CSRF

Misalkan terdapat endpoint:

GET /transfer?to=attacker&amount=1000 HTTP/1.1
Cookie: session=abc123

Attacker dapat membuat payload sederhana:

<img src="https://target.com/transfer?to=attacker&amount=1000">

Ketika korban membuka halaman tersebut:

  • Browser otomatis menjalankan request
  • Aksi berhasil dilakukan tanpa interaksi user

Cara Menemukan CSRF Vulnerability

1. Identifikasi Aksi Sensitif

Fokus pada:

  • Update profil
  • Ganti password
  • Transaksi
  • Delete data

2. Periksa CSRF Protection

Cek apakah:

  • Ada CSRF token pada request
  • Token divalidasi oleh server

3. Replay Request

  • Gunakan Burp Suite
  • Kirim ulang request tanpa token
  • Jika tetap berhasil → indikasi CSRF

4. Gunakan CSRF PoC Generator

Burp Suite menyediakan fitur untuk generate PoC otomatis.

Tools untuk CSRF Testing

1. Burp Suite

  • Intercept request
  • Generate CSRF PoC

2. OWASP ZAP

  • Scanning otomatis

Teknik Eksploitasi Lanjutan

1. CSRF pada POST Request

Gunakan form HTML:

<form action="https://target.com/change-email" method="POST">
  <input type="hidden" name="email" value="attacker@email.com">
</form>
<script>document.forms[0].submit()</script>

2. Bypass CSRF Token (Jika Lemah)

Kasus:

  • Token statis
  • Token tidak divalidasi
  • Token bisa ditebak

3. Kombinasi dengan XSS

Jika ada XSS:

  • CSRF protection bisa dilewati dengan mudah
  • Token bisa dicuri

Best Practice saat Testing

  • Jangan melakukan aksi yang merugikan user nyata
  • Gunakan environment testing jika tersedia
  • Fokus pada proof of concept (PoC)
  • Ikuti scope program

Cara Mencegah CSRF

1. Gunakan CSRF Token

  • Token unik untuk setiap request
  • Diverifikasi oleh server

2. SameSite Cookie Attribute

  • Mencegah pengiriman cookie dari domain lain

3. Gunakan HTTP Method yang Tepat

  • Hindari penggunaan GET untuk aksi sensitif

4. Tambahkan Verifikasi Tambahan

  • CAPTCHA
  • Re-authentication untuk aksi kritikal

Kesimpulan Series 12

CSRF adalah vulnerability yang memanfaatkan kepercayaan sistem terhadap user yang sudah login. Meskipun terlihat sederhana, dampaknya bisa sangat besar jika diterapkan pada fitur yang sensitif.

Memahami bagaimana request bekerja dalam konteks sesi sangat penting untuk mengidentifikasi celah ini.

"Jika aplikasi terlalu percaya pada sesi pengguna, maka attacker bisa menyalahgunakannya."

Pada Series 13, kita akan membahas vulnerability yang sangat sering ditemukan dan memiliki impact besar, yaitu IDOR (Insecure Direct Object Reference), yang berkaitan langsung dengan kelemahan dalam kontrol akses.