Adanya suatu vulnerability pada sistem dapat meningkatkan potensi terjadi serangan. Vulnerability tersebut dapat terjadi diberbagai sektor sistem. Celah inilah yang dimanfaatkan oleh penyerang, untuk menyusupi sistem kita. Salah satu serangan yang dapat dieksploitasi adalah tipe serangan SQL Injection. SQL Injection memanfaatkan celah kerentanan yang ada pada sistem terutama bagian database untuk dilakukan eksploitasi. Nyatanya, untuk mempermudah eksploitasi, SQL Injection telah disediakan sebuah tools yang mempermudah eksploitasi menggunakan metode SQL Injection. Yap, ialah SQLMAP. Sebelum kita masuk lebih dalam, mari kita ketahui terlebih dahulu apa itu SQL Injection!
Apa Itu SQL Injection?
SQL Injection, juga dikenal sebagai SQLI, adalah vektor serangan umum yang menggunakan kode SQL berbahaya untuk manipulasi database backend untuk mengakses informasi yang tidak dimaksudkan untuk ditampilkan. Informasi ini dapat mencakup sejumlah item, termasuk data perusahaan yang sensitif, daftar pengguna, atau detail pribadi pelanggan.
Dampak SQL Injection pada bisnis sangat luas. Serangan yang berhasil dapat mengakibatkan tampilan daftar pengguna yang tidak sah, penghapusan seluruh tabel dan, dalam kasus tertentu, penyerang mendapatkan hak administratif ke database, yang semuanya sangat merugikan bisnis.
Saat menghitung potensi biaya SQLi, penting untuk mempertimbangkan hilangnya kepercayaan pelanggan jika informasi pribadi seperti nomor telepon, alamat, dan detail kartu kredit dicuri. Meskipun vektor ini dapat digunakan untuk menyerang basis data SQL apa pun, situs web adalah target yang paling sering.
Tipe-Tipe Serangan SQL Injection
SQL Injection biasanya termasuk dalam tiga kategori: SQLi In-band (Klasik), SQLi Inferensial (Blind) dan SQLi Out-of-band. Anda dapat mengklasifikasikan jenis SQL Injection berdasarkan metode yang digunakan untuk mengakses data backend dan potensi kerusakannya.
1. In-Band SQLi
Penyerang menggunakan saluran komunikasi yang sama untuk meluncurkan serangan mereka dan untuk mengumpulkan hasil mereka. Kesederhanaan dan efisiensi SQLi in-band menjadikannya salah satu jenis serangan SQLi yang paling umum. Ada dua sub-variasi dari metode ini:
>> Error-Based SQLi — penyerang melakukan tindakan yang menyebabkan database menghasilkan pesan kesalahan. Penyerang berpotensi menggunakan data yang disediakan oleh pesan kesalahan ini untuk mengumpulkan informasi tentang struktur database.
>> Union-Based SQLi — teknik ini memanfaatkan operator SQL UNION, yang menggabungkan beberapa pernyataan pilih yang dihasilkan oleh database untuk mendapatkan satu respons HTTP. Respons ini mungkin berisi data yang dapat dimanfaatkan oleh penyerang.
2. Inferential (Blind) SQLi
Blind SQL Injection bergantung pada respons dan pola perilaku server sehingga biasanya lebih lambat untuk dieksekusi tetapi mungkin sama berbahayanya. Blind SQL Injection dapat diklasifikasikan sebagai berikut:
>> Boolean — penyerang itu mengirimkan kueri SQL ke database yang meminta aplikasi untuk mengembalikan hasil. Hasilnya akan bervariasi tergantung pada apakah kueri itu benar atau salah. Berdasarkan hasil, informasi dalam respons HTTP akan berubah atau tetap tidak berubah. Penyerang kemudian dapat mengetahui apakah pesan tersebut menghasilkan hasil yang benar atau salah.
>> Time-Based — penyerang mengirim kueri SQL ke database, yang membuat database menunggu (selama beberapa detik) sebelum dapat bereaksi. Penyerang dapat melihat dari waktu yang dibutuhkan database untuk merespons, apakah suatu kueri benar atau salah. Berdasarkan hasil, respons HTTP akan dibuat secara instan atau setelah masa tunggu. Dengan demikian penyerang dapat mengetahui apakah pesan yang mereka gunakan mengembalikan benar atau salah, tanpa bergantung pada data dari database.
3. Out-of-band SQLi
Out-Of-Band SQLi dilakukan ketika penyerang tidak dapat menggunakan saluran yang sama untuk meluncurkan serangan dan mengumpulkan informasi, atau ketika server terlalu lambat atau tidak stabil untuk melakukan tindakan ini. Teknik ini mengandalkan kapasitas server untuk membuat permintaan DNS atau HTTP untuk mentransfer data ke penyerang.
Cara Mencegah Terjadinya SQLi
Ada beberapa cara efektif untuk mencegah serangan SQLI terjadi, serta melindunginya, jika terjadi.
Langkah utama adalah validasi input (alias sanitasi), yaitu praktik penulisan kode yang dapat mengidentifikasi input pengguna yang tidak sah.
Contohnya seperti ini:
Meskipun validasi input harus selalu dianggap sebagai praktik terbaik, namun hal tersebut jarang menjadi solusi yang sangat mudah. Kenyataannya, dalam banyak kasus tidak mungkin memetakan semua masukan legal dan ilegal—setidaknya tanpa menyebabkan sejumlah besar kesalahan positif, yang mengganggu pengalaman pengguna (UX) dan fungsionalitas aplikasi.
Atas alasan tersebut, muncul langkah kedua yaitu penggunaan Web Application Firewall (WAF). WAF biasanya digunakan untuk mem-filter SQLI, serta ancaman online lainnya. Untuk melakukannya, WAF biasanya bergantung pada daftar crafted signature yang megah, diperbarui secara konstan, dan dibuat dengan cermat yang memungkinkannya untuk menyingkirkan kueri SQL berbahaya secara operasi. Biasanya, daftar tersebut menyimpan tanda tangan untuk mengatasi vektor serangan tertentu dan secara teratur ditambal untuk memperkenalkan aturan pemblokiran untuk kerentanan yang baru ditemukan.
Web App Firewall Modern juga sering terintegrasi dengan solusi keamanan lainnya. Maka dari itu, WAF dapat menerima informasi tambahan yang semakin meningkatkan kemampuan keamanan sistem.
Comments
Post a Comment