Hackers Dapat Mengakses Database Anda dengan Memanfaatkan Kerentanan dan SQL Injection

Structured Query Language atau yang lebih dikenal dengan sebutan SQL merupakan ‘bahasa’ yang digunakan untuk mengambil dan memodifikasi database yang terdapat di aplikasi web. Database tersebut berisi informasi bisnis yang bersifat konfidensial, seperti username ataupun password pelanggan. Dengan demikian, keamanan dan kerahasiaan database sangatlah penting bagi bisnis. Namun, para hacker bisa saja mencoba meretas database dengan metode SQL injection

Di artikel ini, akan dijabarkan langkah-langkah yang dilakukan para hacker untuk melakukan SQL injection dan mendapatkan akses pada data bisnis Anda. Dengan demikian, Anda bisa masuk pada mindset para hacker serta menutup kerentanan yang mungkin ada di database aplikasi bisnis.

1. Menemukan kerentanan (vulnerability)

Kerentanan dalam aplikasi dapat ditemukan dengan menginput tanda ‘ pada akhir alamat web aplikasi. Apabila terjadi perubahan konten maupun pesan eror, berarti para hacker dapat melakukan SQL injection pada aplikasi tersebut.

2. Menentukan balancing

Setelah mengetahui bahwa aplikasi dapat diserang dengan SQL injection, para hacker akan menentukan balancing atas payload yang akan dieksekusi pada aplikasi. Adapun balancing yang bisa dipilih adalah sebagai berikut:

Menginput comment ataupun balancing yang tepat dalam trial and eror diperlukan agar tidak eror seperti gambar berikut, dan bisa menjalankan payload:


Dalam tutorial ini, comment yang tepat untuk dipakai adalah MySQLl Windows Style (--+)

3. Mencari jumlah kolom

Di langkah ini, para hacker akan mencoba menemukan dan menebak jumlah kolom yang ada pada tabel di web aplikasi dengan menginput query berikut:

parameter+[‘] + order by [magic number] + [balancing]

Setelah dilakukan trial and eror, ditemukan pada nomor ketujuh lah muncul kata eror. Hal ini menunjukan bahwa tabel dalam aplikasi memiliki enam kolom. Angka enam tersebut akan digunakan untuk menginput query union select, seperti yang terlihat di bawah ini:

 Parameter+[‘] + union select + [deret angka sebanyak jumlah kolom] + [balancing]

Setelah menginput query tersebut, muncullah kolom angka yang digunakan pada web aplikasi di tutorial ini (2,3,4,6). Angka-angka output ini akan digunakan pada langkah-langkah berikutnya.

4. Mencari versi database.

Menggunakan angka-angka output di atas, para hacker dapat mencoba menemukan versi dan tipe database yang digunakan pada aplikasi web. Pada tutorial ini, angka dua dan tiga digunakan untuk melakukan pengecekan, seperti gambar di bawah ini:

Setelah menemukan versi database, para hacker juga bisa mengecek parameter lain menggunakan fungsi berikut ini:

  • @@version — menampilkan Versi database
  • user() — menampilkan Nama User database
  • @@hostname — menampilkan Hostname
  • @@tmpdir — menampilkan Direktori temp
  • @@datadir — menampilkan Direktori data
  • @@basedir — menampilkan Direktori base
  • database() — menampilkan Nama Database
  • schema() — menampilkan Database yang dipakai
  • session_user() — menampilkan Session User

Informasi parameter di atas dapat dicari sekaligus dengan memakai concat:

CONCAT(parameter,…,parameter)

5. Memunculkan tabel yang ada di database aplikasi

Di langkah ini, para hacker akan memunculkan daftar tabel yang ada dengan menginput perintah berikut:

Parameter+[‘] + union select + group_concat(nama_kolom) + from information_schema.columns where table_name=[nama tabel dalam HEX] + [balancing]

Setelah menginput perintah tersebut untuk mengecek informasi tabel di angka dua, ditemukan bahwa aplikasi di tutorial ini memiliki beberapa tabel, seperti yang bisa dilihat berikut:

6. Memunculkan daftar kolom pada tabel

Para hacker akan berusaha untuk memunculkan daftar kolom yang ada setelah berhasil menemukan tabel di database aplikasi. Hal ini dapat dicapai dengan menginput perintah berikut:

Parameter+[‘] + union select + group_concat(nama_kolom) + from information_schema.columns where table_name=[nama tabel dalam HEX] + [balancing]

Gambar di atas menunjukan bahwa pada angka dua sedang dilakukan pengecekan daftar kolom pada tabel “admin” yang memiliki nama HEX admin “0x61646d696e”.

Setelah menjalankan perintah tersebut, ditemukan bahwa tabel admin terdapat kolom id,username,pass,gender,email.

7. Memunculkan data yang ada di kolom tabel

Pada langkah ini, tentunya para hacker akan mencoba memunculkan data yang ada di kolom tabel dengan menginput perintah di bawah ini:

Parameter+[‘] + union select + group_concat(nama_kolom_yang_akan_dilihat) + from nama_tabel + [balancing]

Gambar di atas menunjukan bahwa pada angka dua sedang dilakukan pengecekan untuk melihat list data username dan password pada tabel admin. HEX “–“ = 0x2d. Setelahnya, akan muncul gambar yang memperlihatkan username maupun password yang tertera pada kolom, seperti berikut ini:

Seperti yang sudah dijelaskan di atas, para hacker mungkin saja memanfaatkan kerentanan SQL Anda untuk mensisipinya dengan SQL injection. Maka dari itu, bisnis harus tetap waspada terhadap ancaman serangan siber yang selalu berubah. Sebagai salah satu IT security expert di Indonesia, Defender Nusa Semesta (DNS) berkomitmen untuk mengedukasi Anda tentang cara-cara para hacker dapat mengakses database Anda, seperti melalui SQL injection secara manual.