Looking For Anything Specific?

ads header

Makalah / Paper : SQL Injection ( Keamanan Informasi )

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 :