Jumat, 29 April 2016
SQL injeksi
pada mata kuliah hari ini saya mempelajari tentang SQL injeksi
SQL injeksi adalah serangan yang dilakukan sebuah teknik yang menyalagunakan sebuah celah keamanan yang terjadi pada lapisan basis data/ data base disubuah aplikasi/web
SQL singkatan dari
Structured Query Language yg merupakan bahasa komputer standar yang ditetapkan
oleh ANSI (American National Standard Institute) untuk mengakses dan
memanupulasi sistem database. SQL bekerja dengan program 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.
SQL
Injection dapat terjadi karena :
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.
SQL injection yang
merupakan jenis serangan dari para hacker mempunyai beberapa karakteristik
yaitu :
1. Teknik serangan 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.
Bahkan yang lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga
tidak bisa memberi layanan kepada web server.
MEMINIMALISASIKAN SQL INJECTION
Ada beberapa cara
yang dapat digunakan untuk meminimalisir terjadinya serangan SQL injection
diantaranya adalah sebagai berikut :
1. Warning atau Error pada query tidak perlu ditampilkan.
Lebih baik dibuat script yang akan langsung memfeedback log error/warning ke
developer/adminnya jika terjadi kesalahan query, sementara di end-user bisa ditampilkan,
misal error 404. Kalau Anda pernah / sering hosting di beberapa web hosting,
pastinya ada beberapa web hosting yang memberikan penamaan yang sama untuk direktori
usernya (shared hosting), misal /sompret/x2324/nama-domain (dimana sompret
selalu sama untuk setiap user dalam satu mesin, x2324 adalah username, dan
nama-domain adalah nama domain yang digunakan si x2324. Pesan
warning dan error query yang terjadi akibat script akan menampilkan path letak
file tersebut. Akan lebih parah lagi
jika user memberi permission 777 ke dir / file.
2. Developer hendaknya melakukan validasi terhadap URL dan
memfilter bentuk request yang menjurus terhadap tindakan injeksi.
3. Jangan pernah dumping database ke
direktori yang tidak restrict permissionnya / publik. Dan lagi penamaan terhadap file
hasil dumping database diusahakan tidak umum
seperti pemberian tanggal-bulan-tahun (misal : 13071984.sql). Beberapa third party atau extension / module suatu CMS yang menggunakan konfigurasi default bisa
ditebak direktori dan nama filenya.
4. Lakukaan
audit sendiri dengan berbagai macam tools yang ada.
5. Jika dana tidak mencukupi maka tidak ada salahnya
konsultasi dengan pihak yang lebih pandai tentang SQL Injection.
LOKASI
SQL INJECTION
Untuk dapat
melakukan SQL injection pada setiap target situs tidak harus melalui inboxnya
saja akan tetapi hacker bisa memasukan string-string SQL di URL situs yang
telah menjadi target sebelumnya.
Misalnya ada sebuah
situs www.target.com/moreinfo.cfm
dengan ProductID = 245 lalu hacker
mengetikkan string injeksi debuging SQL tadi ke address bar yang dituju
dibelakang url target itu, contohnya: www.target.com/moreinfo.cfm
dengan ProductID = 245' having 1 = 1 dan juga hacker dapat menghapus nilai
produk dari URL tersebut dan menggantinya dengan debugging code, sebagai
contoh: www.target.com/moreinfo
ProductID = 'having 1=1—
Setelah itu akan
keluar sebuah error page dari situs itu yang memberi informasi tentang struktur
database situs itu. Dari hasil informasi yang telah didapat ini, hacker dapat
melakukan serangan 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 hacker 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].
IMPLEMENTASI SQL INJECTION
- Masuk ke google atau browse yg lain
- Masukkan salah satu keyword berikut
"/admin.asp"
"/login.asp"
"/logon.asp"
"/adminlogin.asp"
"/adminlogon.asp"
"/admin_login.asp"
"/admin_logon.asp"
"/admin/admin.asp"
"/admin/login.asp"
"/admin/logon.asp"
{anda bisa menambahi sendiri sesuai keinginan anda}
"/login.asp"
"/logon.asp"
"/adminlogin.asp"
"/adminlogon.asp"
"/admin_login.asp"
"/admin_logon.asp"
"/admin/admin.asp"
"/admin/login.asp"
"/admin/logon.asp"
{anda bisa menambahi sendiri sesuai keinginan anda}
- Bukalah salah satu link yang ditemukan oleh google, kemungkinan Anda akan menjumpai sebuah halaman login (user name danpassword).
- Masukkan kode berikut :
User name : ` or `a'='a
Password : ` or `a'='a (termasuk tanda
petiknya)
- Jika berhasil,
kemungkinan Anda akan masuk ke admin panel, di mana Anda bisa menambahkan
berita, mengedit user yang lain, merubah about,
dan lain-lain. Jika beruntung Anda bisa mendapatkan daftar kredit card yang banyak. - Jika tidak berhasil, cobalah mencari link yang lain yang ditemukan oleh google.
- Banyak variasi kode yang mungkin, antara lain :
User name : admin
Password : ` or `a'='a
atau bisa dimasukkan ke dua–duanya misal
:
‘ or 0=0 -- ; “ or
0=0 -- ; or 0=0 -- ; ‘ or 0=0 # ;
“
or 0=0 # ; ‘ or’x’=’x ; “ or “x”=”x
; ‘) or (‘x’=’x
- Cobalah sampai berhasil hingga anda bisa masuk ke admin panel.
CARA PENCEGAHAN
- Membatasi
panjang dari suatu input box (jika memungkinkan), dengan
cara membatasinya di kode program, jadi si hacker pemula akan bingung sejenak melihat input box nya gak bisa diinject dengan perintah yang panjang. - Memfilterisasi input yang dimasukkan oleh user, terutama penggunaan tanda kutip tunggal (Input Validation).
- Mematikan atau sembunyikan pesan-pesan error yang keluar dari SQL Server yang berjalan.
- Mematikan fasilitas-fasilitas standar seperti Stored Procedures, Extended Stored Procedures jika memungkinkan.
- Mengubah "Startup and run SQL Server" menggunakan low privilege user di SQL Server Security tab.
Langganan:
Komentar (Atom)





