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:
- User login ke aplikasi (misalnya e-commerce atau banking)
- Session cookie tersimpan di browser
- Attacker mengirimkan link atau payload berbahaya
- User mengakses link tersebut
- Browser secara otomatis mengirim request ke server target (karena session masih aktif)
- Server menganggap request tersebut valid
Contoh Sederhana CSRF
Misalkan terdapat endpoint:
GET /transfer?to=attacker&amount=1000 HTTP/1.1
Cookie: session=abc123Attacker 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.