Journaling | OWASP Broken Access Control (BAC) (THM Walkthrough)

Analis Siber Purwakarta - Admin. Broken Access Controls (BAC) merupakan kegagalan sistem dalam membatasi akses ke sumber daya atau fungsionalitas berdasarkan profil pengguna. Celah ini memungkinkan peluang bagi threat actors untuk mengakses, memodifikasi, atau menghapus data sensitif yang berada di luar hak akses mereka. Dalam lanskap keamanan siber saat ini, BAC menjadi ancaman paling kritis karena menyerang langsung pada logika otorisasi aplikasi.

Berkenalan dengan Akses Kontrol

Akses kontrol merupakan mekanisme yang digunakan untuk pengguna atau sebuah sistem  yang mengizinkan untuk mengakses sebuah resources atau sistem, baik itu file, directories, basis data, atau halaman sebuah web. Tujuan utama diterapkannya akses kontrol ini adalah untuk melindungi data yang diproteksi, atau memastikan integritas suatu data yang hanya bisa diakses oleh orang yang memiliki otorisasi terhadap data tersebut.

Akses kontrol dapat diterapkan dengan berbagai macam cara. Penerapan akses kontrol tergantung berdasarkan sumber tipe yang diproteksi, dan security requirements yang diterapkan pada sistem. Akses kontrol yang umumnya digunakan diantaranya:

  1. Discretionary Access Control (DAC). Merupakan sebuah akses kontrol dimana seorang administrator  akan menentukan siapa saja yang diizinkan mengakses resources dan tindakan apa saja yang pengguna izinkan untuk mengakses resources tersebut. DAC umumnya digunakan dalam sebuah sistem operasi atau sistem file.
  2. Mandatory Access Control (MAC). Merupakan sebuah akses kontrol dimana akses ke sebuah resources ditentukan oleh serangkaian aturan atau kebijakan (policies) yang sudah ditetapkan sebelumnya, dan diterapkan pada sistem. MAC sering dapat dijumpai pada pemerintahan, ataupun basis militer.
  3. Role-Based Access Control (RBAC. Pada tipe akses kontrol ini, akses ke sebuah resources ditentukan oleh sebuah peran yang ditentukan juga berdasarkan hierarkis level-level tertentu yang ditentukan dari tanggung-jawab yang sudah diberikan sebelumnya.
  4. Attribute-Based Access Control (ABAC). Tipe akes kontrol ini ditentukan oleh berbagai macam atribut pengguna seperti user role, waktu, lokasi, ataupun jenis perangkat yang digunakan.

Metode Eksploitasi Broken Access Control (BAC)

Terdapat berbagai cara yang digunakan peretas untuk mengeksploitasi kerentanan BAC, yang secara garis besar dapat dikategorikan sebagai berikut:

  1. Horizontal Privilege Escalation (Eskalasi Hak Akses Horizontal): Penyerang mengakses sumber daya atau data milik pengguna lain yang berada pada level otoritas yang sama. Contoh klasiknya adalah memodifikasi parameter ID pada URL—misalnya mengubah user/profile/123 menjadi user/profile/124—untuk mengintip informasi pribadi pengguna lain.
  2. Vertical Privilege Escalation (Eskalasi Hak Akses Vertikal): Terjadi ketika penyerang berhasil mengakses fungsi atau data milik pengguna dengan level hierarki yang lebih tinggi (misalnya admin). Dalam skenario ini, pengguna biasa mungkin mencoba mengakses URL administratif seperti /admin/dashboard yang seharusnya terproteksi namun gagal divalidasi oleh sistem.
  3. Insecure Direct Object References (IDOR): Ini adalah teknik spesifik di mana aplikasi menyediakan referensi langsung ke objek internal (seperti kunci basis data atau nama file) melalui input pengguna. Tanpa pemeriksaan akses yang memadai, peretas dapat memanipulasi referensi ini untuk mengambil data apa pun yang tersimpan di dalam sistem.
  4. Insufficient Access Control Checks: Kerentanan ini muncul akibat inkonsistensi dalam implementasi keamanan. Misalnya, sebuah fungsi mungkin diproteksi ketat pada antarmuka pengguna (UI), namun endpoint API yang sama justru tidak memiliki verifikasi otorisasi, sehingga memungkinkan peretas untuk melakukan bypass secara langsung.

Mempraktikan Eksploitasi Broken Access Control

Kita akan mempraktikan eksploitasi kerentanan Broken Access Control ini pada room yang disediakan oleh TryHackMe. Perangkat lunak yang disiapkan adalah Web Proxy seperti Burp Suite, OWASP ZAP, ataupun Caido. Penulis disini akan menggunakan Caido sebagai Web Proxy.

Gambar 1: Tampilan awal room BAC
Sumber: Dokumentasi Penulis

Aplikasi ini menyediakan fitur berupa dashboard pengguna, dashboard admin, halaman registrasi, dan halaman login. Kita terlebih dahulu membuat akun testing untuk melakukan asesmen pertama pada aplikasi ini. 

Gambar 2. Request, dan Response endpoint functions
Sumber: Dokumentasi Penulis

Diketahui berdasarkan asesmen sebelumnya, pada response function setelah login dilakukan, aplikasi ini menggunakan sistem operasi Debian, Web-Server Apache, dan bahasa pemrograman PHP 8.0.19. Diketahui juga pada endpoint ini, tidak ada security headers sebagai langkah preventif bila terjadi peretasan. Selain itu, terdapat Json parameter redirect_link pada body Response bernilai Boolean yang apabila kita rubah maka kita dapat melakukan vertical privileged escalation yakni merubah akun testing kita menjadi akun admin. 

Gambar 3. Halaman Dashboard Admin yang diperoleh dengan merubah otorisasi menjadi fungsi admin
Sumber: Dokumentasi Penulis

Mitigasi Kerentanan Broken Access Control

Terdapat beberapa langkah untuk melakukan mitigasi kerentanan BAC ini. Diantaranya adalah:

  1. Menerapkan Role Based Access Control
  2. Menggunakan Parametrized Queries
  3. Menerapkan Manajemen Sesi (Management Session) pengguna yang proper
  4. Menerapkan Secure Coding

Sumber:

 




Komentar