Apa yang dimaksudkan dengan sql injection jelaskan secara singkat

Apa itu SQL Injection – Apabila anda pernah belajar tentang dunia hacking, tentunya anda sudah tidak asing lagi dengan istilah SQL Injection. Teknik satu ini menjadi salah satu teknik yang digemari oleh para attacker, karena sampai saat ini masih banyak website yang kurang memperhatikan celah keamanan sistemnya yang bisa dimanfaatkan oleh pengguna yang tidak bertanggung jawab.

Apa itu SQL Injection?

SQL Injection adalah salah satu teknik yang menyalahgunakan celah keamanan yang ada di SQL pada bagian database sebuah aplikasi. Celah ini dapat terjadi karena input tidak di filter secara benar dan dalam pembuatannya menggunakan form yang salah.

SQL Injection dilakukan dengan cara mengeksploitasi dan memodifikasi perintah SQL [Structured Query Language] pada form aplikasi yang memungkinkan penyerang dapat mengirimkan sintaks ke database aplikasi.

Jika anda belum mengetahui apa itu database, Database adalah suatu kumpulan data yang terdapat pada suatu sistem, apapun program atau platform yang digunakan oleh sistem tersebut [Postgre SQL, MySQL, MariaDB, dsb]. Kumpulan data tersebut merupakan database. Database inilah yang nantinya akan menyajikan informasi kepada pengguna.

Penyebab Terjadinya SQL Injection

Lalu apa penyebab terjadinya sql injection? SQL Injection pada awalnya dapat terjadi karena programmer atau pengembang aplikasi tidak menerapkan filter terhadap meta karakter seperti [&, ;, `, ‘, \, “, |, *, ?, ~, dst] yang digunakan dalam sintaks untuk query SQL. Pada akhirnya penyerang dapat menginputkan meta karakter tersebut menjadi instruksi pada aplikasi untuk mengakses database.

Contoh penggunaan dari teknik sql yang sering terjadi yaitu pada saat proses login. Jika sebuah website tidak menerapkan filter pada form input maka attacker dapat melancarkan serangan dengan cara memasukkan username dengan menambahkan ‘#’, misalnya ‘Ardian#’. Hal ini menyebabkan karakter selanjutnya tidak dianggap sebagai kode SQL, alhasil username ardian tidak perlu memasukkan password agar dapat masuk kedalam sistem. Masih banyak teknik SQL Injection yang dapat anda cari di internet.

Cara mencegah SQL Injection

SQL Injection dilakukan dengan mencar celah sistem keamanan aplikasi atau software. Selain itu SQL Injection sangat berbahaya jika tidak cepat ditangani karena berpengaruh terhadap data yang bisa dicuri atau bahkan dirusak. Oleh karena itu, perlu adanya pencegahan untuk mengatasi terjadinya SQL Injection. Berikut diantaranya.

1. Memberikan enkripsi dan mengunci pada database

Untuk mengamanan data dari para attacker, anda dapat menggunakan enkripsi untuk database anda agar aman. Anda dapat menyimpan data yang bersifat credential secara terpisah untuk menyulitkan penyerang dalam melakukan SQL Injection.

Selain itu, anda juga mengunci database sistem sehingga SQL Query tidak dapat diakses melalui halaman pengguna [website]. Anda dapat memberikan batasan bahwa tidak semua pengguna dapat melakukan akses kedalam tabel tersebut. Yaitu dengan mengunci tabel yang sangat vital.

2. Batasan hak akses

Tujuan dari diberikannya batasan hak akses kepada pengguna yaitu untuk mencegah terjadinya SQL Injection. Jangan pernah anda login ke database menggunakan akses admin sebagai root. Tetapi, anda bisa menggunakan akses istimewa yang telah ditentukan untuk membatasi ruang lingkup sistem.

3. Memberikan validasi input pengguna

Anda dapat melakukan filter input pada form tampilan pengguna untuk mencegah terjadinya SQL Injection. Filter yang bisa anda terapkan seperti menyaring jenis, panjang, format input, dan sebagainya. Dengan demikian, hanya input yang lolos validasi yang dapat digunakan kedalam query database.

4. Menggunakan Parameterized Query

Parameterized Query adalah sebuah permintaan query yang memakai penanda, dimana penanda atau parameter ini akan diberikan nilai pada waktu query dijalankan atau dieksekusi. Cara ini merupakan cara sederhana yang dapat dilakukan untuk mencegah SQL Injection. Parameterized akan mendefinisikan seluruh kode SQL sebelum mengirimkannya ke lapisan query.

Setiap database harus mampu mengenali input yang dimasukkan oleh pengguna, dimana apakah termasuk kategori kode SQL atau data pengguna. Dengan demikian, para penyerang tidak dapat mengubah isi query. Meskipun telah memasukkan kode SQL saat melakukan input.

Tools yang digunakan untuk SQL Injection

Berikut ini adalah beberapa tools yang dapat anda gunakan untuk melakukan ujicoba keamanan aplikasi yang sedang anda kembangkan. Berikut tools yang sering digunakan oleh para attacker maupun developer.

  1. BSQL Hacker adalah sebuah tools yang dikembangkan oleh Portcullis lab, BSQL Hacker merupakan tools injeksi yang dirancang untuk mengeksplor hampir seluruh jenis database.
  2. Havij adalah SQL Injection otomatis alat yang otomatis membantu anda untuk mencari dan mengeksploitasi kelemahan SQL Injection pada halaman web.

Kesimpulan dan Penutup

Itulah penjelasan tentang SQL Injection yang dapat caraguna sampaikan. Setiap sistem yang kita kembangkan sebaiknya memiliki tingkat keamanan yang baik terutama dalam masalah SQL Injection. Teknik ini merupakan teknik dasar yang paling mudah digunakan oleh para attacker untuk menyerang sebuah website. Semakin rentan atau banyak celah suatu website, maka akan semakin berbahaya terhadap data yang tersimpan dalam database sistem tersebut. Jika ada yang ingin ditanyakan atau disampaikan, silahkan komen pada kolom komentar dibawah.

Tags: databasesqlsqlinjection

Data merupakan salah satu komponen terpenting dari sistem informasi. Aplikasi web yang didukung database digunakan oleh organisasi untuk mendapatkan data dari pelanggan. SQL adalah singkatan dari Structured Query Language. Ini digunakan untuk mengambil dan memanipulasi data dalam database. Namun karena hal itu juga peratas menemukan jenis serangan baru dan salah satu jenis serangannya adalah SQL Injection.

Kalian mungkin tidak tahu apa itu SQL Injection [SQLI] atau cara kerjanya, tetapi kalian pasti tahu tentang korbannya. Target, Yahoo, Zappos, Equifax, Epic Games, TalkTalk, LinkedIn, dan Sony Pictures. Semua perusahaan ini diretas oleh penjahat dunia maya menggunakan SQL Injection.

Seperti yang dikatan OWASP, SQL Injection telah menjadi masalah umum dengan situs web berbasis database. Cacat ini mudah dideteksi, dan dengan mudah dieksploitasi.

Baca Juga: Apa Itu Serangan XSS [Cross-Site Scripting]?

Apa Itu SQL Injection

SQL Injection [SQLI] adalah jenis serangan yang digunakan penjahat siber untuk mengeksploitasi kerentanan software dalam aplikasi web. Ini memungkinkan penyerang untuk melihat data yang biasanya tidak dapat mereka ambil. Termasuk data milik pengguna lain, atau data lain yang dapat diakses aplikasi itu sendiri. Dalam banyak kasus, penyerang dapat mengubah atau menghapus data ini, menyebabkan perubahan terus-menerus pada konten atau perilaku aplikasi.

Dalam beberapa situasi, penyerang dapat meningkatkan serangan SQL Injection untuk mengganggu server yang mendasarinya atau infrastruktur back-end lainnya, atau melakukan serangan denial-of-service.

Baca Juga: Apa Itu DDOS Attack Dan Bagaimana Cara Menghindarinya

Cara Kerja SQL Injection?

SQL Injection adalah perhatian utama saat mengembangkan aplikasi Web. Ini terjadi ketika aplikasi menerima input pengguna yang berbahaya dan kemudian menggunakannya sebagai bagian dari pernyataan SQL untuk meminta database backend.

Seorang penyerang dapat memasukkan karakter kontrol SQL dan kata kunci perintah [misalnya, tanda kutip tunggal [‘], tanda kutip ganda [“], sama [=], komentar [- -], dll.] Untuk mengubah struktur kueri. Menggunakan karakter kontrol ini dengan perintah SQL umum [misalnya, SELECT, FROM, DELETE, dll.] Memungkinkan akses atau pengambilan elemen data dari server database backend.

Serangan yang berhasil membutuhkan aplikasi Web untuk memasukkan kode berbahaya dari penyerang dalam pernyataan SQL. Kode berbahaya biasanya berasal dari sumber yang tidak tepercaya. Dalam beberapa kasus, database sistem internal juga dapat menjadi sumber data berbahaya. Saat pernyataan SQL berbahaya dieksekusi terhadap database backend, penyerang dapat mengubah atau mengakses database. Ini tergantung bagaimana penyerang membuat data berbahaya.

Contoh SQL Injection

Penyerang yang ingin mengeksekusi SQL Injection memanipulasi kueri SQL standar untuk mengeksploitasi kerentanan input yang tidak divalidasi dalam database. Ada banyak cara agar serangan ini dapat dieksekusi.

Misalnya, masukan yang disebutkan di atas, yang menarik informasi untuk produk tertentu, dapat diubah menjadi  //www.eniaga.com/items/items.asp?itemid=999 atau 1 = 1 .

Hasilnya, kueri SQL terkait terlihat seperti ini:

SELECT ItemName, ItemDescription FROM Items WHERE ItemNumber = 999 OR 1=1

Dan karena pernyataan 1 = 1 selalu benar, kueri mengembalikan semua nama dan deskripsi produk dalam database, bahkan yang mungkin tidak memenuhi syarat untuk kalian akses.

Penyerang juga dapat memanfaatkan karakter yang disaring secara tidak tepat untuk mengubah perintah SQL, termasuk menggunakan titik koma untuk memisahkan dua bidang.

Misalnya, masukan ini  //www.eniaga.com/items/iteams.asp?itemid=999; DROP TABLE USERS akan membuat kueri SQL berikut:

SELECT ItemName, ItemDescription FROM Items WHERE ItemNumber = 999; DROP TABLE USERS

Akibatnya, seluruh database pengguna bisa terhapus.

Cara lain query SQL dapat dimanipulasi adalah dengan pernyataan UNION SELECT. Ini menggabungkan dua kueri SELECT yang tidak terkait untuk mengambil data dari tabel database yang berbeda.

Misalnya, input  //www.eniaga.com/items/items.asp?itemid=999 UNION SELECT user-name, password FROM USERS, menghasilkan kueri SQL berikut:

SELECT ItemName, ItemDescription FROM Items WHERE ItemID = '999' UNION SELECT Username, Password FROM Users;

Menggunakan pernyataan UNION SELECT, kueri ini menggabungkan permintaan untuk nama item 999 dan deskripsi dengan yang lain yang menarik nama dan kata sandi untuk setiap pengguna dalam database.

Jenis Jenis SQL Injection

SQL Injection dapat diklasifikasikan menjadi tiga kategori utama

  • In-band SQL Injection
  • Inferential SQL Injection
  • Out-of-band SQL Injection

1. In-band SQLI [Classic SQLI]

In-band SQL Injection adalah serangan SQL Injection yang paling umum dan mudah dieksploitasi. In-band SQL Injection terjadi ketika penyerang dapat menggunakan saluran komunikasi yang sama untuk meluncurkan serangan dan mengumpulkan hasil. Sebagai contoh penyerang dapat menggunakan komunikasi HTTP menyebarkan serangan ke backend dan mendapatkan hasil di saluran yang sama.

Ada dua tipe utama In-band SQL Injection

  1. Error-based SQLI: Error-based SQLI adalah teknik In-band SQL Injection yang mengandalkan pesan kesalahan yang dilemparkan oleh database server untuk mendapatkan informasi tentang struktur database. Dalam beberapa kasus, error-based SQL injection saja sudah cukup bagi penyerang untuk menghitung seluruh database.
  2. Union-based SQLI: Union-based SQLI adalah teknik In-band SQL Injection yang memanfaatkan operator SQL UNION untuk menggabungkan hasil dari dua atau lebih pernyataan SELECT menjadi satu hasil yang kemudian dikembalikan sebagai bagian dari respons HTTP.

2. Inferential SQLI [Blind SQLI]: 

Inferential SQL Injection, tidak seperti in-band SQLI, mungkin memerlukan waktu lebih lama bagi penyerang untuk mengeksploitasi, namun, ini sama berbahayanya dengan bentuk SQL Injection lainnya. Dalam serangan inferential SQLI, tidak ada data yang benar-benar ditransfer melalui aplikasi web dan penyerang tidak akan dapat melihat hasil serangan in-band [itulah sebabnya serangan semacam itu biasanya disebut sebagai “seranganblind SQL Injection”]. 

Sebaliknya, penyerang dapat merekonstruksi struktur database dengan mengirimkan payload, mengamati respons aplikasi web dan perilaku yang dihasilkan dari database server. Ada dua jenis SQL Injection inferensial yaitu SQLI berbasis Blind-boolean dan SQLI berbasis Blind-time.

  1. Boolean-based [content-based] Blind SQLI: Boolean-based SQL Injection adalah teknik inferential SQL Injection yang mengandalkan pengiriman kueri SQL ke database yang memaksa aplikasi untuk mengembalikan hasil yang berbeda bergantung pada apakah kueri mengembalikan hasil TRUE atau FALSE. Bergantung pada hasilnya, konten dalam respons HTTP akan berubah, atau tetap sama. Hal ini memungkinkan penyerang untuk menyimpulkan apakah payload yang digunakan mengembalikan true atau false, meskipun tidak ada data dari database yang dikembalikan.
  2. Time-based Blind SQLI: Time-based SQL Injection adalah teknik inferential SQL Injection yang mengandalkan pengiriman kueri SQL ke database yang memaksa database untuk menunggu selama jumlah waktu tertentu [dalam detik] sebelum merespons. Waktu respons akan menunjukkan kepada penyerang apakah hasil kueri TRUE atau FALSE. tergantung pada hasilnya, respons HTTP akan dikembalikan dengan penundaan, atau segera dikembalikan. Hal ini memungkinkan penyerang untuk menyimpulkan apakah payload yang digunakan menampilkan true atau false, meskipun tidak ada data dari database yang dikembalikan.

3. Out-of-band SQLI

Out-of-band SQL Injection tidak terlalu umum, sebagian besar karena bergantung pada fitur yang diaktifkan pada server database yang digunakan oleh aplikasi web. Out-of-band SQL Injection terjadi ketika penyerang tidak dapat menggunakan saluran yang sama untuk meluncurkan serangan dan mengumpulkan hasil. Teknik out-of-band, menawarkan penyerang alternatif dari teknik inferential time-based, terutama jika respons server tidak terlalu stabil [membuat serangan inferential time-based tidak dapat diandalkan].

Bagaimana Mencegah Serangan SQL Injection?

Gunakan beberapa tips berikut dibawah ini, untuk membantu mencegah serangan SQL Injection pada aplikasi web kalian.

  • Batasi Hak Istimewa Aplikasi: Batasi kredensial pengguna sehingga hanya hak-hak yang dibutuhkan aplikasi untuk berfungsi yang digunakan. Setiap serangan SQL Injection yang berhasil akan berjalan dalam konteks kredensial pengguna. Meskipun membatasi hak istimewa tidak akan mencegah serangan SQL Injection secara langsung, itu akan membuatnya jauh lebih sulit untuk diterapkan.
  • Kebijakan Kata Sandi SA yang Kuat: Seringkali, penyerang memerlukan fungsionalitas akun administrator untuk menggunakan perintah SQL tertentu. Jauh lebih mudah untuk “memaksa” sandi SA [System Administrator] jika lemah, dan akan meningkatkan kemungkinan serangan SQL Injection yang berhasil. Pilihan lainnya adalah tidak menggunakan akun SA sama sekali, dan sebaliknya membuat akun khusus untuk tujuan tertentu.
  • Skema Pesan Kesalahan yang Konsisten: Pastikan kalian memberikan informasi sesedikit mungkin kepada pengguna ketika terjadi kesalahan database. Jangan ungkapkan seluruh pesan kesalahan. Pesan kesalahan perlu ditangani di web dan server aplikasi. Saat server web mengalami kesalahan pemrosesan, server web seharusnya merespons dengan laman web umum, atau mengarahkan pengguna ke lokasi standar. Informasi debug, atau detail lain yang dapat berguna bagi calon penyerang, tidak boleh diungkapkan. Server aplikasi, seperti WebSphere, sering kali diinstal dengan pesan kesalahan atau setelan debug diaktifkan secara default. Lihat dokumentasi server aplikasi kalian untuk informasi tentang menyembunyikan pesan kesalahan tersebut.

Kesimpulan

Jadi apa itu SQL Injection? Sederhananya SQL Injection adalah serangan terhadap aplikasi web, bukan server web atau sistem operasi itu sendiri. Sesuai namanya, SQL Injection adalah tindakan menambahkan perintah SQL yang tidak diharapkan ke kueri, sehingga memanipulasi database dengan cara yang tidak diinginkan oleh administrator atau pengembang database. Jika berhasil, data dapat diekstrak, dimodifikasi, disisipkan atau dihapus dari server database yang digunakan oleh aplikasi web yang rentan. Dalam keadaan tertentu, SQL Injection dapat digunakan untuk mengambil kendali penuh atas suatu sistem.

Sekian artikel Apa Itu SQL Injection: Cara Kerja, Contoh, Dan Jenis-Jenis. Nantikan artikel menarik lainnya dan jangan lupa share artikel ini ke teman-teman kalian. Terimakasih…

Video yang berhubungan

Bài mới nhất

Chủ Đề