Referensi Objek Langsung Tidak Aman

Referensi objek langsung kemungkinan terjadi saat pengembang mengekspos referensi ke objek implementasi internal, seperti file, direktori, atau kunci database tanpa mekanisme validasi apa pun yang memungkinkan penyerang memanipulasi referensi ini untuk mengakses data yang tidak sah.

Mari kita pahami Agen Ancaman, Vektor Penyerang, Kelemahan Keamanan, Dampak Teknis, dan Dampak Bisnis dari kelemahan ini dengan bantuan diagram sederhana.

Contoh

Aplikasi menggunakan data yang belum diverifikasi dalam panggilan SQL yang mengakses informasi akun.

String sqlquery = "SELECT * FROM useraccounts WHERE account = ?";
PreparedStatement st = connection.prepareStatement(sqlquery, ??);
st.setString( 1, request.getParameter("acct"));
ResultSet results = st.executeQuery( );

Penyerang mengubah parameter kueri di browsernya agar mengarah ke Admin.

http://webapp.com/app/accountInfo?acct=admin

Tangan di atas

Step 1- Login ke Webgoat dan arahkan ke Bagian kelemahan kontrol akses. Tujuannya adalah untuk mengambil tomcat-users.xml dengan menavigasi ke jalur tempatnya berada. Di bawah ini adalah snapshot dari skenario tersebut.

Step 2 - Jalur file ditampilkan di bidang 'direktori saat ini adalah' - C: \ Users \ userName $ \. Ekstrak \ webapps \ WebGoat \ lesson_plans \ en dan kami juga tahu bahwa file tomcat-users.xml disimpan di bawah C: \ xampp \ tomcat \ conf

Step 3- Kita perlu melintasi semua jalan keluar dari direktori saat ini dan menavigasi dari C: \ Drive. Kita dapat melakukan hal yang sama dengan mencegat lalu lintas menggunakan Burp Suite.

Step 4 - Jika percobaan berhasil, ini akan menampilkan tomcat-users.xml dengan pesan "Selamat. Anda telah berhasil menyelesaikan pelajaran ini."

Mekanisme Pencegahan

Pengembang dapat menggunakan sumber daya / poin berikut sebagai panduan untuk mencegah referensi objek langsung yang tidak aman selama fase pengembangan itu sendiri.

  • Pengembang harus menggunakan hanya satu pengguna atau sesi untuk referensi objek tidak langsung.

  • Direkomendasikan juga untuk memeriksa akses sebelum menggunakan referensi objek langsung dari sumber yang tidak tepercaya.