Session Hijacking #
Session hijacking adalah salah satu serangan klasik namun masih sangat relevan dalam dunia web security. Meskipun terdengar “jadul”, faktanya banyak aplikasi modern—termasuk aplikasi enterprise—masih rentan terhadap serangan ini akibat konfigurasi session yang buruk.
Serangan ini berbahaya karena tidak memerlukan password. Cukup dengan menguasai session milik korban, penyerang bisa langsung bertindak sebagai user yang sah.
Artikel ini akan membahas secara mendalam:
- Apa itu session hijacking
- Mengapa session sangat krusial dalam security
- Jenis-jenis serangan umum terkait session
- Best practice mitigasi session hijacking
Apa Itu Session? #
Dalam web application, session adalah mekanisme untuk mempertahankan state user setelah proses autentikasi.
Karena HTTP bersifat stateless, server membutuhkan cara untuk mengenali:
“Request ini berasal dari user yang sama atau tidak?”
Biasanya dengan:
- Session ID (random token)
- Disimpan di cookie (umumnya
session_id)
Contoh alur sederhana:
[User Login]
|
v
[Server Generate Session ID]
|
v
[Session ID dikirim via Cookie]
|
v
[Browser menyertakan Cookie di setiap request]
Session ID inilah yang menjadi single point of trust.
Apa Itu Session Hijacking? #
Session hijacking adalah teknik di mana attacker berhasil:
- Mencuri session ID milik user lain
- Menggunakan session tersebut untuk mengakses aplikasi
Tanpa perlu:
- Username
- Password
- MFA
Selama session masih valid, attacker dianggap sebagai user asli.
Mengapa Session Sangat Penting dalam Security? #
Session adalah:
- Representasi identitas user
- Bukti autentikasi
- Gerbang ke seluruh fitur aplikasi
Jika session bocor:
- Authorization otomatis bypass
- Audit log menjadi tidak valid
- Non-repudiation rusak
Analogi sederhana:
Session ID = kunci rumah
Siapa pun yang memegang kunci, dianggap pemilik rumah.
Jenis-Jenis Session Hijacking yang Umum #
Session Sniffing #
Attacker menangkap traffic jaringan untuk mencuri session ID.
Umumnya terjadi jika:
- HTTP tanpa TLS
- WiFi publik
[User] ----HTTP----> [Server]
^
|
[Attacker Sniff Packet]
Dampak:
- Session dicuri secara real-time
XSS-based Session Hijacking #
Jika aplikasi rentan XSS, attacker bisa mencuri cookie:
document.cookie
Kemudian mengirimkannya ke server attacker.
Sangat umum terjadi jika:
- Cookie tidak
HttpOnly - Sanitasi input buruk
Session Fixation #
Attacker:
- Menentukan session ID terlebih dahulu
- Memaksa korban login dengan session tersebut
- Menggunakan session yang sama setelah login
[Attacker set session=ABC]
|
v
[Victim Login]
|
v
[Session ABC jadi authenticated]
Session Prediction #
Jika session ID:
- Terlalu pendek
- Tidak random
- Mengandung pola
Attacker bisa menebak session ID user lain.
Session Replay #
Session yang:
- Tidak memiliki expiration
- Tidak terikat device/IP
Dapat digunakan ulang meskipun konteks berubah.
Dampak Session Hijacking #
Jika session hijacking berhasil:
- Account takeover
- Data leakage
- Privilege escalation
- Financial fraud
- Compliance violation (GDPR, ISO 27001)
Dan yang paling berbahaya:
Semua terlihat seperti aktivitas user yang sah
Best Practice #
Selalu Gunakan HTTPS (TLS) #
Wajib. Tanpa kompromi.
- Enforce HTTPS
- Redirect HTTP → HTTPS
- Gunakan HSTS
Gunakan Cookie Flags yang Aman #
Set minimal:
Set-Cookie: session_id=abc;
Secure;
HttpOnly;
SameSite=Strict
Penjelasan:
Secure: hanya dikirim via HTTPSHttpOnly: tidak bisa diakses JSSameSite: mencegah CSRF
Regenerate Session ID Setelah Login #
Wajib dilakukan saat:
- Login
- Privilege escalation
Tujuan:
- Mencegah session fixation
Terapkan Session Expiration #
Jenis expiration:
- Idle timeout (misal 15–30 menit)
- Absolute timeout (misal 24 jam)
Session abadi = undangan hacker
Bind Session ke Konteks User #
Contoh binding:
- User-Agent
- IP address (opsional & hati-hati)
- Device fingerprint (soft)
Jika berubah drastis → invalidate session
Gunakan CSRF Protection #
Walaupun berbeda konsep, CSRF sering dipakai bersamaan dengan session hijacking.
- CSRF token
- Double submit cookie
Deteksi Anomali Session #
Pantau:
- Session digunakan dari lokasi berbeda
- Concurrent login tidak wajar
- Aktivitas abnormal
Implementasi:
- Session activity logging
- Risk-based authentication
Logout Harus Menghancurkan Session #
Logout bukan sekadar:
redirect('/login')
Tapi:
- Delete session di server
- Invalidate token
Kesalahan Umum yang Masih Sering Terjadi #
- Session ID disimpan di LocalStorage
- Cookie tanpa
HttpOnly - Session tidak pernah expire
- Logout hanya hapus cookie client
- Session reuse setelah login ulang
Hubungan Session Hijacking dengan OWASP Top 10 #
Session hijacking berkaitan erat dengan:
- A2: Broken Authentication
- A3: Sensitive Data Exposure
- A7: Cross-Site Scripting (XSS)
Sering kali bukan bug tunggal, tapi kombinasi beberapa kelemahan.
Penutup #
Session hijacking adalah contoh nyata bahwa:
Security bukan soal teknologi canggih, tapi disiplin pada dasar
Dengan:
- Konfigurasi session yang benar
- Cookie yang aman
- Expiration yang masuk akal
Kita bisa menutup salah satu vektor serangan paling berbahaya dalam web application.