CODEBOOK
Website Platform Belajar Dan Edukasi
By Shadownex 2025-2026
← Kembali ke Katalog Lab
CSRFUNSOLVEDReward: +100 XP

Lab 6: Cross-Site Request Forgery (CSRF) in funds transfer feature

Aplikasi E-Wallet "Bankku Online" memproses transfer saldo pengguna hanya berdasarkan Cookie Session tanpa token Anti-CSRF.

TARGET OBJECTIVE & BRIEFING

Objective:

Eksploitasi formulir exploit server untuk mengirimkan permintaan POST transfer dana rahasia saat korban mengunjungi tautan eksploitasi.

Fitur transfer dana pada Bankku Online mengandalkan autentikasi Cookie Session biasa. Apabila korban yang sedang login mengunjungi website eksternal penyerang (Exploit Server), website penyerang dapat secara otomatis mengirimkan HTTP POST request atas nama korban.

PENTESTING METHODOLOGY
1. Akses Exploit Server penyerang.
2. Susun HTML form tersembunyi yang mengarah ke endpoint transfer Bankku Online.
3. Tambahkan script `document.forms[0].submit()` untuk mengeksekusi submit otomatis.
4. Kirimkan exploit payload ke sesi korban untuk memicu transfer unauthorized dan dapatkan Flag.
CODE SECURITY INSPECTION

CSRF memanfaatkan mekanisme browser yang otomatis melampirkan cookie autentikasi pada request lintas domain. CodeBook melindunginya dengan header Anti-CSRF Token unik dan cookie SameSite=Strict.

VULNERABLE CODE

// KODE RENTAN (Tanpa CSRF Token & SameSite Cookie)
app.post('/api/transfer', (req, res) => {
  // DANGEROUS: Mengandalkan cookie otomatis browser tanpa verifikasi token unik!
  const user = req.session.user;
  transferFunds(user.id, req.body.recipient, req.body.amount);
});

SECURE CODEBOOK IMPLEMENTATION

// KODE AMAN CODEBOOK STANDARD (Anti-CSRF Token Header + SameSite=Strict)
app.post('/api/transfer', (req, res) => {
  // SAFE 1: Verifikasi token Anti-CSRF kriptografi dari request header
  if (!req.headers['x-csrf-token'] || !verifyToken(req.headers['x-csrf-token'])) {
    return res.status(403).send('Forbidden: CSRF Token Missing');
  }
  transferFunds(req.user.id, req.body.recipient, req.body.amount);
});