Date : 13/11/2017 09.48
Latar Belakang
SQL Injection adalah sebuah metode untuk menyisipkan perintah SQL sebagai input melalui sebuah aplikasi web untuk mendapatkan akses database. Serangan SQL Injection dapat dilakukan melalui input user maupun url. Berdasarkan informasi dari OWASP (Open Web Application Security Project) yang telah telah medata sejak tahun 2003 berbagai jenis serangan hacking, dimana SQL Injection masih menduduki peringkat pertama sebagai serangan hacking yang paling sering dilakukan.
Tujuan
Tujuan dari SQL Injection apabila digunakan oleh pihak yang bertanggung jawab maka dapat digunakan untuk mencari celah keamanan pada suatu web dan diberitahu ke pada pihak web. Sedangkan apabila digunakan oleh pihak yang tidak bertanggung jawab, celah keamanan akan digunakan untuk mengambil data rahasia dari web tersebut, seperti password dan username.
Arsitektur Serangan
Serangan SQL Injection dapat dilakukan melalui dua tahap :
- Penelitian: Penyerang mencoba mengirimkan berbagai nilai tak terduga untuk argumen tersebut, mengamati bagaimana aplikasi merespons, dan menentukan serangan untuk dicoba.
- Attack: Attacker memberikan nilai input yang dibuat dengan hati-hati, yang bila digunakan sebagai argumen pada query SQL, akan diartikan sebagai bagian dari perintah SQL dan bukan sekedar data; database kemudian mengeksekusi perintah SQL seperti yang dimodifikasi oleh penyerang.
Tahapan penelitian dan penyerangan dapat dengan mudah diotomatisasi dengan alat yang tersedia.
Cara dan Teknik Melakukan Serangan
Untuk menjalankan query SQL berbahaya terhadap server database, penyerang pertama-tama harus mencari masukan dalam aplikasi web yang disertakan dalam query SQL. Agar serangan SQL Injection berlangsung, situs web yang rentan perlu memasukkan masukan pengguna secara langsung dalam pernyataan SQL. Seorang penyerang kemudian dapat memasukkan payload yang akan disertakan sebagai bagian dari query SQL dan dijalankan melawan server database.
Contoh sederhana dari muatan SQL Injection bisa menjadi sesuatu yang sederhana seperti menyetel field kata sandi ke kata sandi 'OR 1 = 1. Hal ini akan mengakibatkan query SQL dijalankan pada database server.
untuk mengecek vulnerable atau tidak biasanya attacker menambahkan ‘ (kutip 1) jika keluar error maka website tersebut vulnerable. Pada dasarnya method GET[id] diatas di gunakan untuk mencari data di dalam database. Contoh :
SELECT * FROM artclie WHERE kodearticle = ‘$_GET[id]’atau contoh kasus diatas
SELECT * FROM artclie WHERE kodearticle = ‘1’
query itu lah yang akan di eksekusi dan datanya yang ada di database akan di tampilkan ke dalam PHP berdasarkan kodearticle.
SELECT * FROM artclie WHERE kodearticle = ‘1”
Error akan muncul karena kutip yang kita tambahkan tadi di anggap penutup, yang menjadi masalah adalah kutip yang paling belakang. Dari method itu lah perintah perintah berbahaya akan di masukan dan akan di eksekusi.
Contoh kasus di atas attacker mengirimkan value ke $_POST[‘user’] adalah
‘ or ‘1’=’1
perintah berbahaya ini lah yang memanipulasi query. Query yang akan di eksekusi akan menjadi seperti ini.
$query = “SELECT user,pass FROM users WHERE user=” or ‘1’=’1′ “;
dari operator di atas ‘1’=’1′ akan menghasil kan nilai true. Query select akan di eksekusi dan menampilkan table users dengan field user dan pass. sebenarnya kesalahan bukan berada di query sql tetapi dalam variable $_POST karna tidak di lakukan pengecekan input yang benar.
Seorang penyerang juga dapat berkomentar mengenai sisa pernyataan SQL untuk mengendalikan eksekusi query SQL lebih lanjut. Setelah query dijalankan, hasilnya dikembalikan ke aplikasi untuk diproses, sehingga terjadi bypass otentikasi. Jika autentikasi bypass dimungkinkan, aplikasi kemungkinan besar akan mengirim penyerang ke akun pertama dari hasil query akun pertama dalam database biasanya merupakan pengguna administratif. Cara kerja attacker adalah menginput perintah berbahaya lalu di eksekusi dengan program, program mengirimkan querynya ke database.
Tools yang digunakan
- Internet Exploler / Browser
- PC yang terhubung internet
- Program atau software seperti softice, Havij, Pangolin, BSQL Hacker, Safe3 SQL Injector, The Mole, SQLNinja SQL Injection
Efek Serangan
Setelah penyerang menyadari bahwa sistem rentan terhadap SQL Injection, ia mampu menyuntikkan SQL Query / perintah melalui masukan formulir. Ini setara dengan menyerahkan penyerang database dan memungkinkan dia untuk mengeksekusi perintah SQL termasuk DROP TABLE ke database. Seorang penyerang dapat melakukan laporan sewenang-wenang SQL pada sistem yang rentan. Hal ini dapat membahayakan integritas dari database atau mengungkapkan informasi sensitif. Tergantung pada database back-end digunakan, kerentanan SQL injection mengakibatkan berbagai tingkat data / sistem akses bagi penyerang. Dimungkinkan untuk memanipulasi query yang ada. Dalam beberapa kasus, dimungkinkan untuk membaca atau menulis ke file, atau untuk menjalankan perintah shell pada sistem operasi yang mendasarinya. Sayangnya dampak dari SQL Injection hanya ditemukan saat pencurian ditemukan.
Efek dari serangan SQL Injection adalah dapat dibobolnya database dari sebuah web dan kebocoran data rahasia dari sebuah web. Selain itu, efek lainnya adalah teknik ini memungkinkan seseorang dapat login kedalam sistem tanpa harus memiliki account. Selain itu SQL injection juga memungkinkan seseorang merubah, menghapus, maupun menambahkan data–data yang berada didalam database. Bahkan yang lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak bisa memberi layanan kepada web server. Saat si hacker berhasil melakukan upload shell kedalam web, si hacker akan bisa melakukan apa saja dengan fasilitas yg dimiliki shellnya dan otak dari para hacker.
Antisipasi Serangan
Antisipasi serangan dapat dilakukan dengan melakukan pengecekan petik satu pada inputan username atau password. Ada beberapa cara untuk mengamankan nilai input, berikut ini beberapa di antaranya yang sering digunakan adalah dengan menggunakan mysql_real_escape_string(). Penggunaannya bisa digabungkan dengan fungsi trim(). Berikut ini adalah contohnya :
$username = mysql_real_escape_string(trim($_POST['username']));
Kesimpulan dan Saran
Kesimpulan :
SQL Injection merupakan salah satu teknik serangan yang masih sangat populer dan banyak digunakan. Meski teknik ini sudah cukup lama, namun terbukti ampuh untuk menyerang web yang memiliki celah terhadap SQLInjection.
Saran:
Melakukan antisipasi serangan sebelum web di fungsikan dengan melakukan pengecekan petik satu pada nilai input.
thanks gan sudah share
BalasHapusLampu service hp