Pembukaan
Kadang bug yang kelihatannya sepele justru paling bahaya. Bukan exploit ribet, bukan juga teknik hacking yang kompleks. Di kasus ini, cukup ganti sedikit bagian di URL, dan… akses admin langsung kebuka.
Deskripsi Kerentanan
Pada aplikasi yang diuji, terdapat sebuah endpoint yang digunakan untuk mengakses halaman pengguna:
/ruangbaca/userHalaman ini menampilkan dashboard atau fitur yang memang diperuntukkan bagi user.
Awalnya semuanya terlihat normal. Namun ketika endpoint tersebut dimodifikasi dengan mengganti bagian user menjadi admin, hasilnya cukup mengejutkan.
/ruangbaca/adminAlih-alih ditolak atau diarahkan kembali ke halaman user, sistem justru langsung menampilkan halaman administrator.
Tidak ada pesan error, tidak ada pengecekan ulang, dan tidak ada proses validasi tambahan. Seolah-olah akun tersebut memang memiliki role admin.
Ini menunjukkan bahwa aplikasi tidak melakukan verifikasi role di sisi server, dan hanya mengandalkan struktur URL untuk menentukan akses pengguna.
Proof of Concept (PoC)
Kerentanan ini bahkan bisa direproduksi tanpa tools apa pun. Cukup menggunakan browser biasa.
Langkah-langkahnya sebagai berikut:
- Login ke aplikasi menggunakan akun dengan role user.
- Setelah berhasil login, akses halaman berikut: /ruangbaca/user
- Pada address bar browser, ubah endpoint menjadi: /ruangbaca/admin
- Tekan Enter.
- Setelah halaman dimuat ulang, sistem langsung menampilkan dashboard admin.
Dampak
Kerentanan seperti ini bisa berdampak cukup serius karena memungkinkan terjadinya privilege escalation, yaitu peningkatan hak akses dari user biasa menjadi admin.
Dalam beberapa kasus, akses admin bahkan bisa menjadi pintu masuk untuk mengambil alih kontrol penuh terhadap aplikasi.
Yang membuat bug ini berbahaya adalah eksploitasinya sangat mudah. Tidak memerlukan script, tools khusus, ataupun teknik lanjutan.
Penutup
Kasus ini menjadi contoh bahwa kerentanan kritis tidak selalu berasal dari exploit yang rumit. Terkadang hanya karena logika kontrol akses yang tidak diterapkan dengan benar, sistem bisa memberikan hak akses yang seharusnya tidak dimiliki oleh pengguna.
Kontrol akses seharusnya selalu divalidasi di sisi server, bukan hanya berdasarkan URL atau tampilan antarmuka.
Kesalahan kecil dalam implementasi otorisasi bisa membuka celah besar dalam keamanan aplikasi. Dan di kasus ini, semuanya dimulai hanya dari mengganti satu kata di URL.