Mengupas Tuntas OWASP Broken Access Control Lewat Praktik Langsung

Broken Access Control (BAC) adalah salah satu celah keamanan paling umum dan berbahaya di aplikasi web. Dalam OWASP Top 10 2021, BAC menduduki peringkat pertama, mengalahkan kerentanan-kerentanan lain seperti injection dan security misconfiguration. Artikel ini akan mengupas secara praktis bagaimana BAC bisa terjadi, bagaimana mengenalinya, dan bagaimana mencegahnya, dengan pendekatan praktik langsung yang bisa diikuti oleh para pembelajar keamanan siber.

Apa Itu Broken Access Control?

Access control atau kontrol akses adalah mekanisme yang mengatur siapa yang boleh mengakses apa. Ketika kontrol ini tidak diterapkan atau dapat di-bypass, maka terjadilah “broken access control”. Misalnya, seorang pengguna biasa bisa mengakses panel admin hanya dengan mengubah URL, atau seorang attacker bisa melihat data milik pengguna lain hanya dengan mengganti ID pada parameter.

Jenis-Jenis Broken Access Control

1. Insecure Direct Object References (IDOR) – Ketika aplikasi memperbolehkan akses langsung ke objek dengan mengganti ID tanpa validasi.

2. Privilege Escalation – Ketika pengguna biasa dapat bertindak seperti admin.

3. Forced Browsing – Ketika attacker bisa mengakses endpoint tersembunyi hanya dengan menebak URL.

4. Vertical & Horizontal Access Control Issues – Vertical terjadi saat perbedaan peran tidak diterapkan dengan benar. Horizontal terjadi ketika user bisa mengakses data user lain.

5. Parameter Tampering – Mengubah parameter dalam URL, body request, atau cookie untuk mencoba akses data yang seharusnya tidak bisa diakses.

6. Referer Bypass – Beberapa aplikasi hanya mengandalkan “referer” header untuk otorisasi, yang mudah dimanipulasi.

Dampak dari Broken Access Control

Celah BAC bisa sangat merusak. Tidak hanya memungkinkan pencurian data, tapi juga eskalasi hak akses, pengambilalihan akun, bahkan manipulasi sistem. Dalam dunia nyata, celah ini bisa mengakibatkan pelanggaran hukum dan kerugian reputasi besar. Bayangkan jika pelanggan bisa melihat data rekening pengguna lain, atau bahkan mentransfer uang hanya karena pengembang gagal menerapkan kontrol akses.

Praktik Langsung: Mendeteksi BAC Menggunakan Burp Suite

Untuk praktik ini, kita akan menggunakan aplikasi lab dari https://portswigger.net/web-security) yang menyediakan lingkungan legal dan aman untuk menguji celah ini.

Langkah 1: Setup Environment

– Buka Burp Suite Community atau Professional.

– Buka browser dengan proxy Burp aktif.

– Kunjungi lab “Insecure direct object references (IDOR)” di Web Security Academy.

– Login menggunakan akun dummy yang disediakan.

Langkah 2: Analisis Request

– Login sebagai pengguna biasa.

– Lakukan request untuk melihat data akun sendiri.

– Amati parameter seperti user_id, account_id, file_id, atau nama file.

Langkah 3: Uji Akses Tidak Sah

– Ubah ID dalam parameter dan kirim ulang request.

– Jika berhasil melihat data milik user lain, maka aplikasi rentan terhadap IDOR.

Contoh:

GET /api/user/1001/profile HTTP/1.1

Host: vulnerable-app.com

Ubah menjadi:

GET /api/user/1002/profile HTTP/1.1

Host: vulnerable-app.com

Jika response tetap memberikan data tapi berbeda, maka ada broken access control.

Langkah 4: Automasi dengan Intruder atau Repeater

Gunakan Burp Intruder untuk mengotomatisasi pengujian dengan ID range tertentu (misalnya 1000-1020). Ini mempercepat deteksi akses horizontal. Gunakan payload “numbers” dan sesuaikan posisi injeksi dengan parameter ID.

Langkah 5: Uji Vertikal dan Privilege Escalation

– Login sebagai user biasa.

– Akses endpoint admin seperti `/admin`, `/config`, atau `/logs`.

– Jika bisa mengakses tanpa error 403 atau redirect, kemungkinan besar ada kontrol akses yang lemah.

Langkah 6: Gunakan ZAP untuk Passive Scan

– ZAP dapat mendeteksi endpoint yang merespon terlalu terbuka.

– Bisa juga digunakan untuk melihat apakah ada data sensitif bocor saat user biasa mengaksesnya.

Pencegahan dan Mitigasi

1. Server-Side Authorization – Selalu validasi hak akses di sisi server, bukan hanya di client.

2. Least Privilege Principle – Setiap pengguna hanya boleh memiliki hak minimum yang dibutuhkan.

3. Audit dan Logging – Log semua request penting dan pantau anomali. Logging berguna untuk post-incident analysis.

4. Pengujian Berkala – Lakukan penetration testing secara rutin, termasuk pengujian akses kontrol.

5. Gunakan Framework Otentikasi dan Otorisasi yang Teruji – Hindari membuat sistem kontrol akses sendiri dari nol. Gunakan library seperti OAuth2, JWT, dan middleware otorisasi yang solid.

6. Implementasi Role-Based Access Control (RBAC) – Memisahkan peran dengan hak yang jelas dapat mempermudah manajemen kontrol akses.

7. Rate Limiting dan Alerting – Batasi jumlah request dan berikan alert jika terdeteksi percobaan ID enumeration.

Studi Kasus Nyata

Pada tahun 2021, perusahaan ride-sharing ternama mengalami kebocoran data pengguna karena kelemahan kontrol akses. API mereka mengizinkan penggantian ID driver dalam URL, dan siapa pun bisa melihat data detail pengemudi. Akibatnya, ribuan informasi pribadi seperti nama, nomor SIM, dan rute perjalanan bocor ke publik.

Tools Tambahan untuk Deteksi BAC

–  Kiterunner dan Gobuster: brute force endpoint REST API.

– ffuf: untuk eksplorasi URL atau parameter ID.

– Postman: manual testing dengan berbagai kombinasi header, body, dan path.

– JWT.io: untuk analisis dan modifikasi token JWT (cek apakah bisa dimodifikasi).

Belajar dan Latihan Tambahan

– TryHackMe: Room seperti “Broken Access Control”, “OWASP Top 10”.

– Hack The Box Academy: Modul API pentesting, Authorization, dan IDOR.

– PortSwigger Academy: Kumpulan lab lengkap dengan solusi.

Kesalahan Umum Developer dalam Implementasi Kontrol Akses

Banyak developer, terutama yang belum terlalu akrab dengan keamanan, cenderung terlalu percaya pada kontrol di sisi client seperti validasi JavaScript atau UI yang menyembunyikan tombol akses admin. Padahal, kontrol akses sejati harus dilakukan di server, karena client-side dapat dengan mudah dimanipulasi.

Contoh lain adalah asumsi bahwa pengguna tidak akan mencoba menebak ID orang lain. Dalam kenyataan, attacker menggunakan script untuk mencoba ribuan ID hanya dalam hitungan menit. Karena itulah validasi yang kuat dan logging sangat penting.

BAC dalam Aplikasi Mobile dan API

Masalah BAC tidak hanya ada di aplikasi web biasa, tapi juga pada mobile app dan API. Di mobile, walaupun UI disesuaikan dengan role user, API-nya bisa tetap terbuka untuk semua. Seorang attacker bisa membuka aplikasi lewat emulator, meng-capture request dengan mitmproxy atau Burp Suite, lalu memodifikasi dan mengirim ulang request API ke endpoint yang seharusnya tidak bisa diakses.

Di API, karena tidak ada tampilan visual, kontrol akses menjadi krusial. Endpoint seperti:

POST /api/v1/users/999/delete

harus dicek apakah user yang mengirim request benar-benar berhak untuk melakukan aksi tersebut?

Beberapa Checklist Developer untuk Mencegah BAC

– [ ] Apakah setiap request dicek berdasarkan peran user?

– [ ] Apakah validasi dilakukan di server, bukan hanya di client?

– [ ] Apakah setiap object access diperiksa kepemilikannya (ownership check)?

– [ ] Apakah ID user/token tidak bisa ditebak atau dimanipulasi dengan mudah?

– [ ] Apakah logging mencatat semua akses penting dan anomali?

Kesimpulan

Broken Access Control adalah masalah serius namun sering diabaikan. Melalui praktik langsung, kita bisa lebih memahami bagaimana serangan ini dilakukan dan bagaimana cara mengamankannya. Sebagai seorang pentester atau developer, memahami dan menguji kontrol akses adalah hal wajib dalam membangun aplikasi yang aman. Mulailah dengan lab gratis seperti PortSwigger, dan terus eksplorasi skenario di TryHackMe atau Hack The Box untuk meningkatkan kemampuan.

Referensi

https://owasp.org/Top10/A01_2021-Broken_Access_Control/

https://portswigger.net/web-security/access-control

https://tryhackme.com (lab: Broken Access Control)

https://jwt.io

https://owasp.org/www-project-api-security/

Tertarik mengikuti training di ID-Networkers? Klik disini untuk info lengkapnya.