1 Pengertian SQL
injection
SQL injection adalah kegiatan
menyisipkan perintah SQL kepada suatu statement SQL yang ada pada aplikasi yang
sedang berjalan. Dengan kata lain SQL injection ini merupakan suatu tehnik
pengeksploitasi pada web apilikasi yang didalamna menggunakan database untuk
penyimpanan datanya. Terjadinya SQL injection tersebut dikarenakan security
atau keamanan pada level aplikasi (dalam hal ini aplikasi web) masih kurang
sempurna. Kurang sempurnanya adalah pada cara aplikasi meng-handle inputan yang
boleh di proses ke dalam database. Misalnya pada suatu web yang terdapat
fasilitas login, terdapat dua buah inputan pada umumnya, yaitu username dan
password. Jika karakter yang masuk melalui dua buah inputan tersebut tidak
difilter (disaring) dengan baik maka bisa menimbulkan efek SQL injection, ini
dikarenakan biasanya inputan tersebut secara sistem akan menjadi bagian dari
kriteria dari suatu perintah SQL di dalam aplikasi web-nya. Secara garis besar
terjadinya SQL injection tersebut adalah sebagai berikut:
1) Tidak
adanya pemfilteran terhadap karakter – karakter tanda petik satu ’ dan juga
karakter double minus -- yang menyebabkan suatu aplikasi dapat disisipi dengan
perintah SQL.
2) Sehingga
seorang Hacker dapat menyisipkan perintah SQL kedalam suatu parameter maupun
pada text area suatu form.
2 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 /*)
Gambar
1 : Contoh ilustrasi SQL injection Pada admin login area
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.
3 Mencari Target
Situs web MS-SQL dengan ASP adalah situs yang paling
rentan terhadap serangan ini. Hal pertama yang dilakukan dalam pencarian target
yang sudah tidak asing lagi bagi kita yaitu buka www.google.com, pada kolom keywordnya
masukkan allinurl:.co.nz/admin.asp, atau allinurl:/logon.asp Keyword ini dapat kita modifikasi ke berbagai
bentuk .Penulisan allinurl perlu dicantumkan, dengan begitu Google akan segera
mencari semua URL dalam sebuah situs yang mempunyai direktori /admin.asp. kita
bisa saja mengganti keyword tersebut dengan allinurl:.co.id atau net atau org,
or.id, sampai allinurl:.fr/admin.asp semua tergantung kemauan kita dalam
mencari target menggunakan Google, dan yang terpenting dari semua itu adalah
kita harus tahu di mana harus menginput string SQL tadi, misalnya di member
login, user login, dan bahkan dapat pula di search product dan lainnya.
4 Lokasi Sql Injection
www.xxxxxx.com/moreinfo.cfm?ProductID=245' having 1=1-- atau juga kita dapat menghapus nilai produk dari URL tersebut dan ganti dengan debugging codenya, sebagai contoh: www.xxxxxx.com/moreinfo?ProductID=' having 1=1—
Apabila setelah itu akan keluar sebuah error page dari situs itu, ini menandakan bahwa situs tersebut dapat memberikan informasi tentang struktur database situs itu. Dari hasil informasi tersebut, kita dapat melakukan serangan SQL injection berikutnya. Apabila browser kita adalah Internet Explorer, ada sebagian situs yang tidak menampilkan error-nya, ini dikarenakan opsi Show Friendly HTTP Error Messages diaktifkan. Untuk itu kita perlu menonaktifkannya dengan cara menghilangkan tanda centang di kotaknya. Opsi ini dapat anda temukan di Tools > Internet Option > Advanced cari opsinya di bagian Browsing lalu hilangkan tanda centangnya dan klik tombol Apply. Sesudah itu apabila anda menemui error page yang berisi HTTP 500 error - internal server error- sebelum men-set opsi tadi, anda cukup menekan tombol Refresh, lalu terlihatlah sudah error-nya. Setelah kita tahu struktur database-nya, dengan pengetahuan dasar dari belajar SQL kita dapat menghancurkan database itu dengan perintah ' drop database [nama_database] atau drop table [nama_table], namun bukan ini yang kita cari dalam SQL Injection karena kita tidak dapat apa-apa dari string tadi.
Tidak ada komentar:
Posting Komentar
Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.