SQL Injection #1

Posted on March 11, 2010. Filed under: SQL Server | Tags: , , |

Topik ini mungkin sudah lama (usang) namun demi sebuah nilai yang harus saya dapatkan :-p, saya coba untuk mengupas ke dalam tutorial 🙂

Pengertian SQL Injection
1)SQL injection adalah sebuah aksi hacking yang dilakukan di aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi client.
2)SQL Injection merupakan teknik mengeksploitasi web aplikasi yang didalamnya menggunakan database untuk penyimpanan data.

Sebab terjadinya SQL Injection
1)Tidak adanya penanganan terhadap karakter – karakter tanda petik satu ’ dan juga karakter double minus — yang menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL.
2)Sehingga seorang Hacker menyisipkan perintah SQL kedalam suatu parameter maupun suatu form.

Bug SQL Injection berbahaya ?

1)Teknik ini memungkinkan seseorang dapat login kedalam sistem tanpa harus memiliki account.
2)Selain itu SQL injection juga memungkinkan seseorang merubah, menghapus, maupun menambahkan data–data yang berada didalam database.
3)Bahkan yang lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak bisa memberi layanan kepada web server.

Berikut adalah sebuah contoh tentang SQL Injection, semoga tutorial ini dipergunakan untuk kebaikan bersama dan bukan untuk menghancurkan musuh eh…system orang :-).
mohon maaf dikarenakan untuk membuat contoh ini saya mempergunakan sebuah windows aplication karena sekali lagi maaf saya belum mampu untuk membeli atau bahkan hanya menyewa sebuah domain.Namun demikian secara intinya sama yaitu bagaimana membuat sebuah SQL Injection.

1.Pergunakan Google.
Google bagai pedang bermata2, satu mata untuk membantu kita dalam pencarian sesuatu namun dengan kemampuan yang dimiliki oleh google dan juga ke-isengan kita, google menjadi sangat mematikan.
sercing form yang akan menerima inputan user :
1. allinurl:.co. id/login. asp
2. allinurl:.com/ admin.asp

2.Segera menuju ke tkp.

lihat gambar dibawah.

'Having 1=1--

untuk selanjutnya karakter ‘ (petik tunggal) dan — (double minus) harus/wajib/kudu dipergunakan.dimana ‘ (petik) berarti sebuah value,dan — adalah mark dari SQL.
1=1 adalah sebuah nilai TRUE.

Hasil Eksekusi

Error 1

dari gambar error 1 diatas, kita bisa lihat table apa dan nama kolom (table Master_User,kolom:User_ID) yang dipergunakan,udah cukup?? ya tentu belum ;-p … masih kurang bro…ulangi langkah diatas hingga seluruh kolom kita dapatkan.
langsung saja tanpa basa-basi lihat gambar dibawah untuk mendapatkan seluruh kolom yang dipergunakan.

Group BY

nah..sudah dapat khan untuk masing-masing nama kolom dari table Master_User…
berikut dibawah ini adalah query asli sampai dengan query mendapatkan seluruh nama kolom.

Query Awal

Select Having

Query untuk Mendapatkan Seluruh KOLOM

3.Memulai tehnik Injection
setelah semua langkah2 diatas kita lakukan dan berhasil, tentunya kita sudah mendapatkan seluruh kolom dari table Master_User yang akan dipergunakan pada saat validasi User.Berikut dibawah adalah cara untuk membuat sebuah record ke dalam table Master_User.

a.Contoh DML(INSERT)

Memasukkan sebuah record ke table Master_User

Query Insert

Record ASLI

Setelah di Insert

b.Contoh DDL (alter & drop)
ALTER table Master_User

ALTER Table

Query ALTER Table

Struktur Table Master_User Setelah di-ALTER

DROP

DROP Table

Query DROP Table dan Kondisi Setelah di-DROP

nah setelah kita tahu berbahayanya SQL Injection ini, bagaimana cara kita untuk menghadapi serangan SQL Injection ini?
ada beberapa langkah untuk Programer (baik windows aplication maupun web aplication) maupun ADMIN dalam menghadapi SQL Injection, diantaranya :
1.Batasi panjang inputan
baik melalui text box user maupun dari koding.
sebaiknya disesuaikan dengan panjang table yang dipergunakan.misal dalam hal ini User_ID char(10) ya tentu saja input text box dan juga variable dalam script program tidak boleh melebihi 10 char.hal ini untuk menghindari perintah SQL inputan dari hacker.
2.Validasi inputan.
batasi penggunaan karakter-karakter tertentu ‘(petik tunggal),–(double minus),;(titik koma) gunakan karakter escape pada bahasa pemrograman yang dipergunakan.
3.Sembunyikan Error dari SQL
pergunakan blok TRY-CATCH, dengan adanya blok TRY kita dapat “menangkap” kesalahan-kesalahan, dan pesan2 kesalahan dapat kita custom sehingga pesan yang keluar tidak dapat dibaca langsung oleh hacker.
4. Matikan fasilitas-fasilitas standar seperti Stored Procedures,
Extended Stored Procedures jika memungkinkan.
5. Ubah “Startup and run SQL Server” menggunakan low privilege user
di SQL Server Security tab.

setelah hal-hal diatas kita lakukan, trus apakah kita sudah aman dari SQL Injection??wahhh….belum tau nih,tunggu perkembangan ilmu lebih lanjut dah…

Read Full Post | Make a Comment ( 1 so far )

Liked it here?
Why not try sites on the blogroll...