SQL (Structured Query Language) adalah sebuah bahasa yang dipergunakan untuk mengakses data dalam basis data relasional. Bahasa ini secara de facto merupakan bahasa standar yang digunakan dalam manajemen basis data relasional. Saat ini hampir semua server basis data yang ada mendukung bahasa ini untuk melakukan manajemen datanya. Perintah yang umum dilakukan adalah:
• SELECT untuk menampilkan data
• INSERT untuk menambahkan data baru
• UPDATE untuk mengubah data yang sudah ada
• DELETE untuk menghapus data
.
Karena hampir semua program yang ada memakai SQL sebagai database, maka “attacker” biasanya memanfaatkan kelemahan pada sistem ini.
SQL INJECTION
Sql injection merupakan salah satu tekhnik penyerangan pada bug SQL. Secara dasar sql injection adalah memasukan (inject) perintah sql pada suatu statement Sql yang ada pada sistem yang berjalan. Pada dasarnya hal ini terjadi karena programer tidak menyaring (filter) karakter yang dapat di input seperti double minus (–),single quote ('), kesahan pemanggilan sql pada coding program, sehingga attacker dapat memasukan perintah sql untuk menembus sistem pertahanan.
Default Setting SQL
Seperti yang kita ketahui bahwa tehnik SQL injection ini memungkinkan seseorang dapat login kedalam sistem tanpa harus memiliki account. Salah satunya yaitu default setting SQL.Default setting SQL yang paling berbahaya adalah menggunakan adminID = sa dan password blank alias (kosong), apabila ada direktori sebuah situs yang disitu ada input untuk adminnya maka kalau kita isi id-nya dengan = 'sa' dan passwordnya =' ' maka kita langsung masuk sebagai admin, ini kalau default setting-nya belum diubah. Namun ada lagi string yang bisa kita input untuk akses sebagai web admin yaitu dengan string ' OR 1=1-- apabila ada input web admin yang input box-nya adalah User dan Password maka apabila kita masukan string ' OR 1=1-- di input box user dan masukan foobar di input box password, maka akan membuat SQL query-nya bingung diakibatkan jadi SQL Query membacanya sebagai:
SELECT * from users where User ='' or 1=1-- and Password ='foobar'
yang artinya sqlnya men-SELECT semua query dari user yang user-nya '' (kosong) atau (OR) 1=1 (true) -- (tanda -- adalah mark dari SQL seperti halnya di C/C++ marknya // atau /*)
Jadi kalau diuraikan logikanya adalah bahwa SQL-nya menganggap 1=1 sebagai true sehingga kolom itu di-bypass lalu kolom password-nya diabaikan karena setelah 1=1 terdapat mark SQL ( -- ), sehingga password itupun diabaikan. Lalu apakah hanya itu string-nya dalam menginjeksi sebuah situs? Tentu saja tidak. Inti dari injeksi dalam langkah awalnya adalah memaksa keluar sebuah error page yang berisi informasi struktur database situs itu dan kalau kita ingin melihatnya kita harus men-debug-nya. Jadi yang kita masukkan adalah string debugging SQL code, yaitu ' having 1=1-- , ini adalah string yang harus dimasukkan kalau kita ingin melihat error page dari situs sasaran.
Sehingga dapat dikatakan bahwa 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.
Komentar