Assalamu'alaikum Gaiss Kembali lagi dengan saya Aji hehe :) Kali ini saya akan menjeaskan tentang apasih SQL Injection itu? dan bagaimana cara mencegahnya?. Skuy Simak Artikel Berikut hehehe
1. Pengertian
Serangan SQL Injection merupakan metode serangan dengan melakukan injeksi kode, digunakan untuk menyerang aplikasi berbasis data. Kerentanan ini memungkinkan penyerang memasukan input buatannya untuk mengganggu interaksi aplikasi dengan database di back-end. Penyerang mungkin bisa mendapatkan data arbitrary dari aplikasi, mengganggu logikanya, atau menjalankan command pada server database. Waw cukup berbahaya ya gais, jenis serangan ini juga bisa berdampak sangat buruk bagi website korban yang terdapat vulnerability jenis ini, misalkan penyerang bisa mengubah isi dari server database dan juga melakukan pengambilan data, seperti misalkan web online shop. Web Online Shop kan pasti ada banyak data konsumen tuh seperti halnya Credit Card, Iban (Internet Banking) email, password, dll. Penyerang bisa memanfaatkan data" ini untuk kepentingan personal.
Wahh Sangad Berbahaya sekali ternyata Serangan SQL Injection ini ya gais :(
2. Tipe serangan SQL injection
- Union-Based
Tipe serangan SQL Injection ini adalah yang paling popular. Serangan ini menggunakan UNION statement, yang merupakan gabungan dari dua statement, untuk mendapatkan data dari database.
- Error-Based
Tipe Eror-Based merupakan serangan SQL Injection yang paling sederhana, dan satu-satunya kesulitan dari tipe serangan ini adalah hanya dapat berjalan pada Microsoft SQL Server. Metode serangan ini, akan membuat aplikasi menunjukan EROR ketika mengakses database. Dari error ini penyerang akan mempelajari informasi sistem seperti database, versi database, sistem operasi, dan lain sebagainya.
- Blind-SQL Injection
Blind SQL Injection adalah tipe serangan SQL Injection yang paling sulit. Dalam serangan ini, tidak ada muncul pesan error yang diterima dari database. Hampir sama dengan serangan SQL Injection lainnya, yang membuatnya beda adalah bagaimana cara data diambil dari database.
Ada dua tipe dari Blind SQL Injection:
- Content-based Blind SQL Injection: Si penyerang akan mencoba untuk memverifikasi database apakah rentan terhadap Blind SQL Injection dengan membandingkan hasil dari query yang berbeda yang kembali dengan TRUE atau FALSE.
- Time-based Blind SQL Injection: Si penyerang akan menginstrusikan database untuk melakukan operasi time-intensive. Jika web site tidak mengembalikan respon dengan segera, berarti aplikasi web rentan terhadap serangan Blind SQL Injection.
3. Dampak
- Melakukan Bypass terhadap Mekanisme Otentikasi. Teknik serangan ini memungkinkan penyerang untuk masuk ke dalam aplikasi dengan hak akses administratif, tanpa menggunakan username dan password yang valid.
- Melakukan Modifikasi Data (Compromised Integritas Data). Melalui teknik serangan ini penyerang juga dapat melakukan perubahan terhadap konten data yang tersimpan di dalam basis data, atau memanfaatkan celah keamanan ini untuk memasukan konten yang berbahaya ke dalam halaman web.
- Melakukan Compromised terhadap Ketersediaan Data Dengan melakukan penghapusan terhadap seluruh data yang tersimpan di dalam basis data, Teknik serangan ini juga berpotensi terhadap aspek ketersediaan dari sistem tersebut.
- Melakukan Pencurian Informasi. Serangan ini juga dapat dimanfaatkan oleh penyerangan untuk melakukan pencurian informasi sensitive yang tersimpan di dalam basis data.
- Eksekusi Perintah Jarak Jauh (Remote Command Execution). Melalui teknik serangan ini penyerang juga dapat melakukan perintah eksekusi melalui database yang memungkinkan penyerang untuk mengambil alih host atau target.
- Melakukan Impersonasi Pengguna Penyerang juga dapat memanfaatkan serangan ini untuk melakukan impersonasi dengan menanfaatkan akun pengguna yang aktif di dalam basis data.
4. Pengaplikasian Dalam Serangan
- Melakukan bypass terhadap mekanisme otentikasi, mengidentifikasi parameter yang dapat diinjeksi, melakukan ekstrasi data. Misal dalam Bentuk Query sebagai berikut:
SELECT account FROM users WHERE login=’’ or 1=1 --+ AND pass=’’ AND pin=
- Mengidentifikasi parameter yang dapat diinjeksi, melakukan database finger - printing, dan melakukan ekstraksi data. Misal dalam Bentuk Query sebagai berikut:
SELECT account FROM client WHERE login=’’ AND pass=’’ AND pin= convert (int,(select top 1 name from sysobjects where xtype=’u’))
- Melakukan ekstraksi data, menambahkan atau memodifikasi data, melakukan serangan DoS (Denial of Services), mengeksekusi perintah jarak jauh (remote commands execution). Misal dalam Bentuk Query sebagai berikut:
SELECT account FROM client WHERE login=’doe’ AND pass=’’; drop table nasabah -- ’ AND pin=123
- Mengidentifikasi parameter yang dapat diinjeksi, melakukan ekstraksi data serta menentukan skema basis data dari sistem target. Misal dalam Bentuk Query sebagai berikut:
SELECT account FROM users WHERE login=’useradm’ and ASCII(SUBSTRING((select top 1 name from sysobjects),1,1))> X WAITFOR 5 -- ’ AND pass=’’ AND pin=0
- Menghindari/mengelabui deteksi perimeter keamanan. Misal dalam Bentuk Query sebagai berikut:
SELECT account FROM users WHERE login=’useradm’; exec(char(0x73687574646f776e))-- AND pass=’’ AND pin= ’’
5. Cara Mencegah
- Menggunakan Parameterized Query
Menggunakan parameterized query atau prepared statement merupakan cara yang lebih sederhana dan mudah dilakukan. Parameterized akan mendefinisikan seluruh kode SQL sebelum mengirimkannya ke lapisan query. Database akan mampu mengenali mana input yang dimasukkan oleh pengguna, apakah termasuk kategori kode SQL atau data pengguna. Dengan begitu, para attacker tidak bisa mengubah isi query, walaupun telah memasukkan kode SQL saat melakukan input.
- Melakukan Validasi Input Pengguna
Melakukan validasi input pengguna untuk mencegah terjadinya SQL injection. Yaitu Anda filter semua input yang dilakukan pengguna, seperti jenis, panjang, format dan sebagainya. Dengan begitu, hanya inputan yang lulus vaidasi yang diproses oleh database.
- Memberikan Batasan Hak Akses
Memberikan batasan hak akses untuk membatasi kerusakan yang terjadi akibat SQL injection. Jangan sesekali login ke database menggunakan akses admin sebagai root. Namun, Anda dapat menggunakan akses istimewa yang telah ditentukan untuk membatasi ruang lingkup sistem.
- Menyembunyikan Pesan Error
Biasanya, terdapat pesan error yang muncul dari database ketika pegguna melakukan inputan yang salah. Untuk menghindari terjadinya SQL injection ini, Anda diminta untuk menyembunyikan atau bahkan mematikan pesan error agar pengguna tidak terus mempelaari arsitektur database yang digunakan. Sebab, bisa saja pengguna tersebut merupakan penyerang sistem Anda. Jika ingin menampilkan pesan, maka tampilkan pesan yang menyatakan bahwa sebaiknya pengguna menghubungi dukungan teknis untuk mengatasi masalah tersebut.
- Memberikan Enkripsi Database
Simpan data yang bersifat credential secara terpisah untuk menyulitkan penyerang dalam melakukan SQL injection, bahkan Anda dapat memberikan enkripsi untuk lebih mengamankan data tersebut.
- Mengunci Database
Sebagusnya, SQL query tidak dapat diakses melalui halaman pengguna (website). Anda dapat memberikan batasan bahwa tidak semua pengguna dapat melakukan akses ke suatu tabel tertentu, yaitu dengan mengunci tabel yang sangat vital.
- Gunakan Perangkat Keamanan Web Aplication Firewall
Hal ini bertujuan untuk mendeteksi dan memblok serangan SQL Injection berjalan sukses pada aplikasi anda.
Nahh itulah temen-temen sedikit penjelasan dari saya mengenai serangan SQL Injection dan Cara Mencegahnya hehe.
Jika terdapat salah kata atau apapun saya mohon maaf ya :)
Okey sampai ketemu lagi hehe
Wassalamu'alaikum..

0 Comments
Post a Comment