Session Hijacking

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:

  1. Menentukan session ID terlebih dahulu
  2. Memaksa korban login dengan session tersebut
  3. 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

Set minimal:

Set-Cookie: session_id=abc;
  Secure;
  HttpOnly;
  SameSite=Strict

Penjelasan:

  • Secure: hanya dikirim via HTTPS
  • HttpOnly: tidak bisa diakses JS
  • SameSite: 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.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact