Metode SQL Injection
Keamanan Informasi
Dunia maya
atau internet sekarang ini sudah banyak sekali bertebaran bug-bug dari
unicode para cracker-craker yang tidak
bertanggung jawab. Mereka ini menggunakan berbagai teknik hacking untuk mencari
kelemahan dan merusak pada sistem keamanan suatu jaringan. Salah satu dari
teknik tersebut yang sangat membahayakan sebuah website yaitu SQL injection atau
dikenal juga dengan SQL insertion yaitu sebuah teknik yang digunakan untuk
mengeksploitasi database pada suatu websites dengan memaksa keluarnya error page
situs itu yang ada error pages itu terdapat info tentang struktur database
website yang dieksploitasi. SQL sendiri merupakan bahasa pemrograman database
yang sering dipakai para web developer maupun admin sebuah situs untuk
menampung ataupun menaruh data-data baru dari suatu input yang masuk seperti
input member login,searchengine,dan lain sebagainya.
Ketika mesin server
hanya port 80 yang dibuka, kita mempunyai keyakinan bahwa tidak akan
menghasilkan sesuatu yang bermanfaat yang dapat digunakan untuk menyerang,
admin juga beranggapan hanya degan mem-patch servernya dianggap aman. Jika
anggapan itu terus dipakai berarti kita “menekan tombol” untuk membuka hacker
masuk. SQL Injection adalah salah satu tipe meng-hack yang hanya membutuhkan
port 80 dan tidak memerlukan port lain. SQL injection akan menyerang aplikasi
web yang berbasiskan side-server scripting seperti ASP, JSP, PHP, CGI, dan yang
mirip dengan itu. Pada artikel ini kita tidak akan membahas hal yang paling
baru tentang SQL Injection, karena motode dan trik SQL Injection terus
berkembang. Sebelum anda membaca lebih lanjut, anda harus mnegetahui terlebih
dahulu bagaimana database bekerja dan bagaimana SQL digunakan untuk
mengaksesnya.
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.
Cara Kerja
SQL Injection
Aplikasi web menjadi lebih
canggih dan semakin teknis yang kompleks. Mulai dari internet dinamis dan
portal intranet, seperti e-commerce dan pasangan extranet, untuk HTTP
dikirimkan oleh aplikasi perusahaan seperti sistem manajemen dokumen dan ERP
aplikasi. Sifat aplikasi web dengan desain yang beragam fitur dan kemampuan web
tersebut untuk menyusun, memproses, dan menyerbarkan informasi melalui internet
atau dari dalam intranet membuat aplikasi web tersebut menjadi target yang
populer untu diserang.
Aplikasi web menjadi target
penyerangan juga disebabkan karena keamanan jaringan pada pasar teknologi telah
jatuh tempo dan ada sedikit peluang untuk menembus sistem informasi melalui
kelemahan networkbased, hacker semakin banyak yang berpindah fokus mereka untuk
mencoba mengkompromi aplikasi tersebut.
SQL injection merupakan
serangan dimana kode SQL dimasukkan atau ditambahkan ke dalam aplikasi/ user
input parameter yang kemudian diteruskan ke SQL server back-end untuk parsing
dan eksekusi. Setiap prosedur yang membangun pernyataan SQL berpotensi untuk
mudah terserang. Bentuk injeksi utama SQL terdiri dari penyisipan langsung kode
ke dalam parameter yang digabungkan dengan perintah SQL dan kemudian dieksekusi.
Sebuah serangan langsung paling sedikit menyuntikan kode ke dalam string yang
ditujukan ke penyimpanan di dalam tabel atau sebagai metadata. Ketika string
yang tersimpan akhirnya digabungkan ke dalam perintah SQL dinamis, kode
tersebut akan dieksekusi. Ketika aplikasi web gagal untuk
membersihkan paramater dengan benar dilewatkan ke pernyataan SQL yang dibuat
secara dinamis (bahkan ketika menggunakan teknik parameterisasi) ini
memungkinkan untuk seorang penyerang untuk mengubah mengubah
konstruksi back-end SQL.
Ketika seorang penyerang dapat memodifikasi pernyataan SQL,
pernyataan tersebut akan dieksekusi dengan hak yang sama dengan aplikasi
pengguna, saat menggunakan server SQL untuk mengeksekusi perintah yang
berinteraksi dengan sistem operasi, proses akan berjalan dengan hak akses yang
sama dengan komponen yang mengeksekusi perintah (misalnya database server,
aplikasi server, atau web server).
Langkah-langkah SQL Injection
1. Tes
Vulnerabilitas
Pengujian
atau tes ini perlu dilakukan untuk mengetahui apakah sebuah situs web memiliki
celah keamanan atau tidak untuk dilakukan SQL Injection.
Salah
satu karakter yang sering digunakan untuk melakukan vulnerabilitas adalah
pemakaian karakter kutip tunggal (‘). Sebagai contoh misal situs web target
adalah
Maka untuk
melakukan pengujian, penulisan kutip dituliskan setelah angka 3.
2. Menentukan
Jumlah Kolom
Penentuan jumlah
kolom ini perlu dilakukan karena kita perlu mengetahui kolom mana dari sebuah
tabel yang bisa dimanfaatkan. Hal ini bertujuan supaya kita bisa memasukkan
perintah SQL Injection pada lokasi yang tepat. Sebab kalau kita memasukkan di
tempat yang salah maka kita tidak akan memperoleh apapun. Untuk melakukan hal
ini agak bersifat “trial and error”, dimana perintah yang digunakan adalah
ORDER BY.
3. Mencari
Kolom yang Vunerable
Selanjutnya adalah mencari kolom yang
memiliki celah untuk dilakukan SQL Injection. Istilah lainnya adalah angka
error.
4. Menentukan
Nama Database
Pada
dasarnya ini bukanlah sesuatu yang penting tapi akan lebih baik agar bisa
dimanfaatkan untuk kepentingan lain
5. Mencari
Nama Kolom
Mencari nama kolom untuk mengambil data
dan informasi dari suatu kolom tersebut
6. Menampilkan
Isi data
Setelah
kita mengetahui kolom yang ada di table database, sekarang kita akan mencari
informasi & data apa yang bisa diambil dari sana.
Bagaimana Menghindari SQL Injection ?
Langkah yang
dapat di tempuh untuk mengurangi penyusupan ke halaman web dengan SQL Injection
dengan cara:
a. Memfilter
dengan tidak membolehkan karakter seperti single quote, double quote, slash,
back slash, semi colon, extended character like NULL, carry return, new line,
etc, dalam string form: - Masukan dari from users - Parameters di URL - Nilai
dari cookie
b. Untuk nilai
numeric, convert dulu sebelum melewati statement SQL dengan mengunakan
ISNUMERIC untuk meyakinkan itu adalah integer.
c. Mengubah
"Startup and run SQL Server" menggunakan low privilege user dalam SQL
Server Security tab.
d. Ubah stored
procedure – store procedure yang tidak terpakai, seperti: master..Xp_cmdshell,
xp_startmail, xp_sendmail, sp_makewebtask
e. Matikan atau sembunyikan pesan-pesan error yang keluar
dari SQL Server yang berjalan. Bisa
juga dengan cara mengganti pesan error message karena hal ini seringkali
digunakan oleh sang attacker untuk menelusuri informasi jalur penyimpanan
database.
REFERENSI :
0 Comments