MEMANFAATKAN KESALAHAN QUERY DATABASE SUATU WEB UNTUK MENDAPATKAN USERNAME SERTA PASSWORD NYA MENGGUNAKAN TEKNIK SQL INJECTION

Disclaimer : Hacking tanpa ijin adalah ilegal (UU No. 27 Tahun 2022 tentang Perlindungan Data Pribadi (UU PDP)). Teknik yang dijelaskan pada tutorial kali ini hanya sebagai pembelajaran untuk melindungi diri dari serangan siber yang akhir - akhir ini marak terjadi. Segala bentuk resiko yang ditimbulkan akibat percobaan penyalahgunaan sepenuhnya ditanggung oleh pihak yang bersangkutan.

PENGERTIAN

SQL injection merupakan salah satu teknik peretasan yang digunakan untuk memasukkan sebuah parameter pada website ataupun sebuah statement query secara sengaja dengan tujuan untuk mendapatkan data user. Teknik SQL injection ini sebagian besar digunakan untuk tujuan yang tidak baik, dan beberapa dampak yang diberikan dapat berupa: 
  • 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=

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.

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.

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

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


Ternyata dengan tebakan 13 tidak memunculkan pesan error. Itu berarti banyak tabel di dalam database situs tersebut adalah 13.

Bersambung ...

Comments

Popular posts from this blog

CARA MENYERANG SERVER SERTA MENDAPATKAN HAK ADMIN MENGGUNAKAN KALI LINUX

METODE REGULA-FALSI/POSISI PALSU (FALSE POSITION METHOD)