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.