Main Logo
  • Home
  • About
  • Kursus
    • Paket Kursus
    • Roadmap Profesi
    • Data & AI
      • Data Analyst
      • Data Scientist
      • AI Engineer
      • Data Engineer
      • Business Intelligence (BI) Specialist
    • Infrastruktur & Keamanan
      • Network Engineer
      • System Engineer
      • DevOps Engineer
      • Security Engineer
      • Cloud Engineer
    • Programming & Web Development
      • Web & App Developer
      • Web Developer
      • WordPress Developer
      • Mobile Developer
    • Spesialisasi
      • Blockchain Engineer
      • IOT Engineer
      • Digital Marketing Specialist
  • Elearning
  • Blog
  • Portfolio
Daftar
Main Logo
  • Home
  • About
  • Kursus
    • Paket Kursus
    • Roadmap Profesi
    • Data & AI
      • Data Analyst
      • Data Scientist
      • AI Engineer
      • Data Engineer
      • Business Intelligence (BI) Specialist
    • Infrastruktur & Keamanan
      • Network Engineer
      • System Engineer
      • DevOps Engineer
      • Security Engineer
      • Cloud Engineer
    • Programming & Web Development
      • Web & App Developer
      • Web Developer
      • WordPress Developer
      • Mobile Developer
    • Spesialisasi
      • Blockchain Engineer
      • IOT Engineer
      • Digital Marketing Specialist
  • Elearning
  • Blog
  • Portfolio

IDOR pada Aplikasi Web LabKeu

  • September 30, 2026
  • oleh Noviana Putri Yuliani

IDOR atau Insecure Direct Object Reference merupakan salah satu kerentanan pada sisi authorization yang terjadi ketika aplikasi menggunakan ID atau identifier dari pengguna tanpa memastikan bahwa pengguna tersebut memiliki hak untuk mengakses data yang diminta. Kondisi ini dapat menyebabkan pengguna mengakses data milik pengguna atau perusahaan lain hanya dengan mengubah ID pada request.

Pada pengujian keamanan aplikasi LabKeu, pengujian difokuskan pada endpoint data keuangan perusahaan. Tujuannya adalah mengetahui apakah setiap perusahaan hanya dapat mengakses data miliknya sendiri atau apakah data perusahaan lain dapat diakses dengan mengubah ID pada URL.

🔎 Fokus Pengujian

Temuan: IDOR / Broken Object Level Authorization

Target: LabKeu — 192.168.56.105:3000

Endpoint: /api/perusahaan/<id>/data-keuangan

Lingkungan pengujian: Kali Linux / VirtualBox

Hasil utama: data keuangan perusahaan lain dapat diakses dengan mengubah ID perusahaan

❓ Apa Itu IDOR pada Aplikasi Web?

IDOR atau Insecure Direct Object Reference merupakan masalah keamanan ketika aplikasi menggunakan identifier seperti ID untuk menentukan data yang akan ditampilkan, tetapi tidak melakukan pemeriksaan authorization yang cukup.

Sederhananya, aplikasi dapat memiliki URL seperti /api/perusahaan/1/data-keuangan. Angka 1 digunakan untuk menentukan data perusahaan yang diminta. Masalah terjadi apabila pengguna dapat mengganti angka tersebut menjadi 2 dan server tetap memberikan data perusahaan lain tanpa mengecek apakah pengguna memang memiliki hak untuk mengaksesnya.

💡 Intinya: IDOR bukan berarti pengguna berhasil login secara ilegal. Pengguna memang sudah login, tetapi server gagal memastikan bahwa data yang diminta merupakan data yang boleh diakses oleh pengguna tersebut.

❓ Endpoint Apa yang Diuji?

Pengujian dilakukan pada endpoint API yang digunakan untuk mengambil data keuangan perusahaan.

GET /api/perusahaan/<id>/data-keuangan

Parameter <id> digunakan untuk menentukan perusahaan yang datanya akan dikembalikan oleh server. Pada kondisi yang seharusnya, pengguna hanya boleh mendapatkan data perusahaan yang sesuai dengan akun yang sedang digunakan.

❓ Bagaimana Kondisi Normalnya?

Pengujian pertama dilakukan menggunakan akun user_a yang berasal dari CV Sinar Abadi dengan perusahaan_id = 1.

👤 Session User

Username: user_a

Perusahaan: CV Sinar Abadi

perusahaan_id: 1

Setelah login, endpoint data keuangan diakses menggunakan ID perusahaan yang sesuai dengan akun tersebut.

GET /api/perusahaan/1/data-keuangan

Request tersebut merupakan kondisi normal karena ID perusahaan yang diminta sesuai dengan perusahaan_id pada akun yang sedang digunakan.

📸 Screenshot 1 — Kondisi normal saat user_a mengakses data perusahaan dengan ID 1.

❓ Apa yang Terjadi Ketika ID Perusahaan Diubah?

Setelah kondisi normal diketahui, pengujian dilanjutkan dengan mengubah ID perusahaan pada URL. Tujuannya adalah mengetahui apakah server melakukan pemeriksaan kepemilikan data atau hanya menggunakan ID yang dikirimkan oleh client.

GET /api/perusahaan/2/data-keuangan

ID pada URL diubah dari 1 menjadi 2, sementara akun yang digunakan masih merupakan user_a dari perusahaan dengan ID 1.

Setelah ID diubah, server tetap memberikan response 200 OK.

HTTP/1.1 200 OK

Response tersebut berisi data dengan perusahaan_id = 2, meskipun akun yang digunakan memiliki perusahaan_id = 1.

[ { “id”: 3, “perusahaan_id”: 2, “tahun”: 2026, “uraian”: “Reimbursement transport peserta”, “nominal”: “980000.00” }, { “id”: 4, “perusahaan_id”: 2, “tahun”: 2026, “uraian”: “Reimbursement konsumsi kegiatan”, “nominal”: “2150000.00” } ]

📸 Screenshot 2 — user_a mengubah ID dari 1 menjadi 2 dan server tetap memberikan response 200 OK beserta data perusahaan dengan ID 2.

Padahal akun yang digunakan berasal dari perusahaan dengan perusahaan_id = 1. Artinya, akun tersebut dapat memperoleh data perusahaan lain hanya dengan mengubah ID pada endpoint.

❓ Apakah Masalah Ini Juga Terjadi pada Akun Lain?

Untuk memastikan hasil pengujian, pengujian juga dilakukan menggunakan akun perusahaan lain.

👤 Session User Kedua

Username: user_b

Perusahaan: PT Maju Bersama

perusahaan_id: 2

Dengan akun tersebut, endpoint kemudian diarahkan ke data perusahaan dengan ID 1.

GET /api/perusahaan/1/data-keuangan

Server kembali memberikan response 200 OK dan data dengan perusahaan_id = 1 dapat dikembalikan.

📸 Screenshot 3 — user_b dari perusahaan ID 2 mengakses endpoint dengan ID perusahaan 1.

Mau Kuasai IDOR pada Aplikasi Web LabKeu Sampai Bisa Praktik Langsung?

Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.

Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →

Pengujian dari dua arah menunjukkan bahwa masalah terjadi pada kontrol authorization endpoint, bukan hanya pada satu akun tertentu.

PenggunaPerusahaan UserID DimintaHasil
user_a12200 OK — data perusahaan 2
user_b21200 OK — data perusahaan 1

🚨 IDOR Berhasil Dibuktikan

Berdasarkan pengujian, server tidak membatasi data berdasarkan perusahaan yang dimiliki oleh pengguna. Pengguna yang sudah login dapat mengubah nilai :id pada endpoint dan memperoleh data perusahaan lain.

Temuan ini termasuk IDOR atau Insecure Direct Object Reference dan berkaitan dengan Broken Object Level Authorization.

CWE-639 — Authorization Through User-Controlled Key

❓ Mengapa IDOR Bisa Terjadi?

Masalah terjadi karena server mempercayai nilai ID yang dikirimkan melalui URL tanpa memastikan hubungan antara pengguna yang sedang login dengan resource yang diminta.

Dalam kasus LabKeu, pengguna dari perusahaan dengan ID 1 seharusnya tidak dapat meminta data perusahaan dengan ID 2. Server seharusnya membandingkan identitas perusahaan pada session dengan ID perusahaan yang diminta sebelum memberikan response.

💡 Intinya: menyembunyikan ID dari tampilan bukan solusi. Selama server menerima ID dari client, server tetap harus melakukan pengecekan authorization terhadap resource tersebut.

🔍 Akar Masalah pada Aplikasi

Berdasarkan analisis terhadap aplikasi, masalah ditemukan pada bagian route data keuangan di routes/dashboard.js, khususnya pada bagian yang menangani endpoint data keuangan perusahaan.

Endpoint tersebut belum memastikan bahwa perusahaan yang diminta sesuai dengan perusahaan pada session pengguna.

req.session.user.perusahaan_id === req.params.id

Tanpa pemeriksaan tersebut, nilai :id dari URL dapat digunakan untuk meminta data perusahaan lain.

💥 Apa Dampak dari IDOR Ini?

Dampak yang berhasil dibuktikan dalam pengujian adalah kebocoran data keuangan lintas perusahaan. Akun yang seharusnya hanya berhubungan dengan satu perusahaan dapat membaca data perusahaan lain.

Dalam aplikasi yang menggunakan konsep multi-tenant, kondisi seperti ini dapat mengganggu pemisahan data antar perusahaan karena setiap pengguna seharusnya hanya memiliki akses terhadap resource yang menjadi haknya.

⚠️ Dampak utama: kehilangan kerahasiaan data antar perusahaan atau cross-tenant data exposure.

Temuan ini dikategorikan sebagai risiko HIGH dengan estimasi CVSS:

7.5 — AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N

❓ Bagaimana Cara Memperbaiki IDOR?

Perbaikan utama harus dilakukan pada sisi server. Aplikasi tidak boleh hanya mempercayai ID yang dikirimkan oleh client. Setiap request harus diperiksa berdasarkan identitas pengguna dan hak aksesnya terhadap resource.

if ( user.account_type !== ‘perusahaan’ || Number(user.perusahaan_id) !== Number(req.params.id) ) { return res.status(403).json({ error: ‘Forbidden’ }); }

Dengan pengecekan tersebut, pengguna hanya dapat mengakses data perusahaan yang sesuai dengan hak aksesnya. Jika pengguna mencoba meminta data perusahaan lain, server harus menolak request tersebut.

🛡️ Rekomendasi Perbaikan

  1. Lakukan authorization check di sisi server.
  2. Pastikan perusahaan_id pada session sesuai dengan resource yang diminta.
  3. Jangan mempercayai parameter ID dari client.
  4. Gunakan response 403 Forbidden ketika pengguna tidak memiliki hak akses.
  5. Terapkan pemeriksaan ownership pada seluruh endpoint yang mengakses resource berdasarkan ID.
  6. Uji kembali seluruh endpoint setelah perbaikan untuk memastikan tidak ada akses lintas perusahaan.

❓ Apa yang Bisa Dipelajari dari Pengujian Ini?

Pengujian IDOR pada LabKeu menunjukkan bahwa login yang berhasil belum tentu berarti seluruh kontrol authorization sudah aman. Setelah pengguna berhasil login, server tetap harus memastikan bahwa setiap resource yang diminta memang boleh diakses oleh pengguna tersebut.

Dalam pengujian ini, proses dimulai dengan login menggunakan akun perusahaan, kemudian mengakses endpoint data keuangan dan mengubah ID perusahaan pada request. Ketika server tetap memberikan data perusahaan lain dengan status 200 OK, vulnerability IDOR dapat dikonfirmasi.

Pengujian dari dua arah juga menunjukkan bahwa masalah tidak hanya terjadi pada satu akun. Akun perusahaan dengan ID 1 dapat mencoba mengakses data perusahaan 2, dan akun perusahaan dengan ID 2 dapat mencoba mengakses data perusahaan 1.

✅ Kesimpulan

Pengujian terhadap aplikasi LabKeu berhasil mengonfirmasi adanya IDOR / Broken Object Level Authorization pada endpoint /api/perusahaan/<id>/data-keuangan.

Akun user_a dari CV Sinar Abadi dengan perusahaan_id = 1 dapat mengakses data perusahaan dengan ID 2. Pengujian sebaliknya menggunakan akun user_b juga menunjukkan bahwa data perusahaan dengan ID 1 dapat diakses oleh akun perusahaan dengan ID 2.

Hal tersebut terjadi karena server belum melakukan validasi kepemilikan resource berdasarkan session pengguna. Kondisi ini dapat menyebabkan kebocoran data keuangan lintas perusahaan dan menjadi masalah pada aplikasi yang menggunakan pemisahan data antar perusahaan.

🔐 Ringkasan Temuan

✓ Temuan: IDOR / Broken Object Level Authorization

✓ Endpoint: /api/perusahaan/<id>/data-keuangan

✓ User terdampak: akun perusahaan yang sudah login

✓ Bukti: ID perusahaan dapat diubah dan server tetap memberikan 200 OK

✓ Dampak: kebocoran data keuangan lintas perusahaan

✓ Severity: HIGH

Pengujian dilakukan hanya terhadap aplikasi LabKeu dalam lingkungan lab yang telah diotorisasi. Pengujian tidak ditujukan untuk sistem yang tidak memiliki izin pengujian.

✍️ Penulis: Noviana Putri Yuliani

Mau Kuasai IDOR pada Aplikasi Web LabKeu Sampai Bisa Praktik Langsung?

Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.

Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →

Tags: Application SecurityAuthentication BypasscybersecurityEthical HackingKali Linuxnetwork securityPenetration TestingSecurity Testingsql injectionSQL Injection LabKeuSQL SecurityTJKTVulnerability AssessmentWeb Application Securityweb security
Previous Post
Next Post

Post comment

Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • Cara Membuat CI Otomatis untuk Proyek Python Menggunakan GitHub Actions
  • Cara Konfigurasi Debian 13 sebagai Router Gateway dan Server Layanan (DNS,Web,DHCP)
  • Mendeteksi Percobaan Login SSH Gagal Menggunakan Fail2ban
  • Analisis Perilaku Pelanggan Menggunakan Data: Dari Eksplorasi hingga Insight dan Rekomendasi Bisnis
  • Ribuan Views, Nol Transaksi: Strategi Digital Marketing yang Efek

Arsip

  • October 2026
  • September 2026
  • August 2026
  • July 2026
  • June 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • September 2025
  • August 2025
  • July 2025
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
  • February 2018
  • January 2018
  • December 2017
  • November 2017
  • October 2017
  • September 2017
  • August 2017
  • July 2017
  • June 2017
  • May 2017
  • April 2017
  • March 2017
  • February 2017
  • January 2017
  • December 2016
  • November 2016
  • October 2016
  • September 2016
  • August 2016
  • July 2016
  • June 2016
  • May 2016
  • April 2016
  • March 2016
  • February 2016
  • January 2016
  • December 2015
  • November 2015
  • October 2015
  • September 2015
  • August 2015
  • July 2015
  • June 2015
  • May 2015
  • April 2015
  • March 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • May 2014
  • April 2014
  • March 2014
  • February 2014
  • January 2014
  • December 2013
  • November 2013
  • October 2013
  • September 2013
  • August 2013
  • July 2013
  • June 2013
  • May 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012
  • November 2012
  • October 2012
  • September 2012
  • August 2012
  • July 2012
  • June 2012
  • May 2012
  • April 2012
  • December 2011
  • November 2011

Tags

apache web server dns server kursus android kursus database kursus dns dan web server kursus dns server kursus ethical hacking kursus hacking kursus jaringan kursus jaringan linux Kursus Komputer kursus komputer di solo kursus komputer di solo / surakarta kursus komputer di surakarta kursus linux Kursus Linux Forensics kursus linux networking kursus linux security kursus linux server kursus mikrotik kursus networking kursus network security kursus php Kursus PHP dan MySQL kursus php mysql kursus proxy kursus security kursus ubuntu kursus ubuntu server kursus web kursus web security kursus web server kursus wordpress kursus wordpress theme linux MySQL pelatihan komputer di solo PHP python security training komputer training komputer di solo tutorial php ubuntu wordpress

© Edusoft Center - Kursus Komputer di Solo | 2010 - 2026 | Privacy Policy | Site Map | Portfolio Magang | Butuh tim kami langsung yang mengerjakan? Lihat layanan implementasi →

All Right Reserved

WhatsApp us