SQL INJECTION | MAKALAH KEAMANAN KOMPUTER
MAKALAH
KEAMANAN KOMPUTER
SQL INJECTION
Disusun Oleh:
DIAS E11140106
EDI SUTISON E11140018
PROGRAM STUDI SISTEM INFORMASI
FAKULTAS ILMU KOMPUTER
UNIVERSITAS MATHLA’ULANWAR BANTEN
2018
KATA PENGANTAR
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 tehnik hacking untuk mencari kelemahan dan merusak pada
system keamanan suatu jaringan. Salah satu dari tehnik 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.
Sebenarnya SQL injection sendiri bukanlah hal
baru, dari dulu teknik ini sudah dikenal dalam dunia hacking sebagai salah satu
teknik web hacking, namun baru muncul lagi sekarang karena sifatnya yang dapat
merusak database dari suatu website. SQL injection ini sempat ramai pada beberapa
waktu yang lalu yaitu pada saat kasus bobolnya situs TNP KPU oleh salah seorang
cracker Indonesia, Dani Firmansyah.
Penulis
BAB
II
PEMBAHASAN
2.1 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.
2.2 Default
Setting SQL
Seperti yang kita ketahui bahwa tehnik SQL injection ini memungkinkan seseorang dapat login kedalam sistem tanpa harus memiliki account. Salah satunya yaitu default setting SQL. Default setting SQl yang paling berbahaya adalah menggunakan adminID = sa dan password blank alias (kosong), apabila ada direktori sebuah situs yang disitu ada input untuk adminnya maka kalau kita isi id-nya dengan = 'sa' dan passwordnya =' ' maka kita langsung
masuk sebagai admin, ini kalau default setting-nya belum diubah.
Namun ada lagi string yang bisa kita input untuk akses sebagai web admin yaitu
dengan string ' OR 1=1-- apabila ada input web admin yang input box-nya adalah
User dan Password maka apabila kita masukan string ' OR 1=1-- di input box user
dan masukan foobar di input box password, maka akan membuat SQL query-nya
bingung diakibatkan jadi SQL Query membacanya sebagai:
SELECT * from users where User ='' or 1=1-- and Password ='foobar'
yang artinya sqlnya men-SELECT semua query dari user yang user-nya '' (kosong) atau (OR) 1=1 (true) -- (tanda -- adalah mark dari SQL seperti halnya di C/C++ marknya // atau /*)
Jadi kalau diuraikan logikanya adalah bahwa SQL-nya menganggap 1=1 sebagai true sehingga kolom itu di-bypass lalu kolom password-nya diabaikan karena setelah 1=1 terdapat mark SQL ( -- ), sehingga password itupun diabaikan. Lalu apakah hanya itu string-nya dalam menginjeksi sebuah situs? Tentu saja tidak. Inti dari injeksi dalam langkah awalnya adalah memaksa keluar sebuah error page yang berisi informasi struktur database situs itu dan kalau kita ingin melihatnya kita harus men-debug-nya. Jadi yang kita masukkan adalah string debugging SQL code, yaitu ' having 1=1-- , ini adalah string yang harus dimasukkan kalau kita ingin melihat error page dari situs sasaran.
Sehingga dapat dikatakan bahwa teknik ini memungkinkan
seseorang dapat login kedalam sistem tanpa harus memiliki account. 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.
2.3 Mencari Target
Situs
web MS-SQL dengan ASP adalah situs yang paling rentan terhadap serangan ini.
Hal pertama yang dilakukan dalam pencarian target yang sudah tidak asing lagi
bagi kita yaitu buka www.google.com, pada kolom keywordnya masukkan
allinurl:.co.nz/admin.asp, atau allinurl:/logon.asp Keyword ini dapat kita
modifikasi ke berbagai bentuk .Penulisan allinurl perlu dicantumkan, dengan
begitu Google akan segera mencari semua URL dalam sebuah situs yang mempunyai
direktori /admin.asp. kita bisa saja mengganti keyword tersebut dengan
allinurl:.co.id atau net atau org, or.id, sampai allinurl:.fr/admin.asp semua
tergantung kemauan kita dalam mencari target menggunakan Google, dan yang terpenting
dari semua itu adalah kita harus tahu di mana harus menginput string SQL tadi,
misalnya di member login, user login, dan bahkan dapat pula di search product
dan lainnya.
2.3 Lokasi Sql
Injection
Tidak selalu pada setiap situs target, kita harus di-inject lewat input box-nya. Kita juga bisa memasukan string-string SQL di URL situs target. Misalnya ada sebuah situs www.xxxxxx.com/moreinfo.cfm?ProductID=245 lalu, ketikkan string injeksi debuging SQL tadi ke address bar anda dibelakang url target itu, salah satu contohnya:
www.xxxxxx.com/moreinfo.cfm?ProductID=245' having 1=1-- atau juga kita dapat menghapus nilai produk dari URL tersebut dan ganti dengan debugging codenya, sebagai contoh: www.xxxxxx.com/moreinfo?ProductID=' having 1=1—
Apabila setelah itu akan keluar sebuah error page dari situs itu, ini menandakan bahwa situs tersebut dapat memberikan informasi tentang struktur database situs itu. Dari hasil informasi tersebut, kita dapat melakukan serangan SQL injection 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 kita 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], namun
bukan ini yang kita cari dalam SQL Injection karena kita tidak dapat apa-apa
dari string tadi.
AKSI SQL INJECTION
3.1 Praktik SQl
1. Cara Penggunaan
- Download
contoh form login yang akan di injection DOWNLOAD
- Import
database login.php via phpmyadmin
- Buat Folder baru dalam Folder htdocs
- Extark
semua file dalam system-login-edisutosn.zip ke dalam baru
- Buka
halaman login http://localhost/tugas_sql_injec/login.php
- Klik Daftar untuk mendaftarkan users
Jika
register berhasil maka data user akan tersimpan ke dalam database
- Coba login menggunakan user yang sudah di daftarkan, jika berhasil
akan tampil halaman seperti ini
2. Query Login yang
digunakan
Sekarang
kita coba untuk menerapkan Sql Injection pada halama system login tersebut,
yang perlu di lakukan adalah dengan menganalisa terlebih dahulu.
- Jika
kemungkinan query menggunakan awalan kutip satu ‘, maka inject dengan
kutip dua. contoh querynya sebagai berikut : $query=‘select
* from admin where username=”‘.$username.'” and
password=MD5(“‘.$password.'”)‘;
- Jika
kemungkinan query menggunakan awalan kutip dua “, maka inject dengan kutip
satu. contoh querynya berikut : $query=“select
* from admin where username=’$username’ and password=MD5(‘$password’)“;
3. Dua Cara Menembus Password
Untuk menembus – atau mem-bypass – password
pada sistem login, bisa ditempuh dengan dua cara.
Dari kedua cara tersebut seseorang bisa masuk ke suatu sistem tanpa
perlu mengetahui
password-nya.
a.
Cara pertama adalah dengan menambahkan karakter ‘# setelah UserId. Sehingga
bila Anda
menginputkan pada kotak User Id dengan ‘Joko’#’
(tanpa kutip) dan pada kotak Password Anda
inputkan sembarang
karakter, seperti pada gambar ini.
- Buka
halaman login dengan URL http://localhost/tugas_sql_injec/login.php
- Masukan username namauser’# dan password “sembarang”
- Jika berhasil
melakukan sql injection maka akan masuk kehalam seperti berikut
- Cara kedua adalah dengan menambahkan injection string sembarang’ OR ‘x’=’x pada kotak Password.
alasannya, isian password tidak sama dengan yang
tersimpan di sistem. Tetapi ada
query lanjutannya,
yaitu OR ‘x’=’x . Yang artinya sistem diberikan pilihan. Bila
sebelumnya,
inputan password bernilai salah, maka dijalankan
pilihan berikutnya yang sudah pasti benar, karena
‘x’=’x’. Akibatnya Anda
bisa masuk ke dalam sistem tanpa mengetahui password yang
sesungguhnya dengan User Id ‘joko’!!
BAB III
KESIMPULAN
SQL Injection merupakan teknik
hacking paling populer pada aplikasi web dengan prinsip melewatkan
perintah-perintah SQL lewat aplikasi web untuk dieksekusi oleh database
back-end. Kelemahan akan muncul apabila inputan user tidak disaring/difilter
dengan sempurna dan akhirnya dieksekusi. Oleh karena itu diperlukan suatu
pengamanan yang extra hati – hati pada SQL statement pada database yang ada
pada suatu website-website kita, agar perintah-perintah SQL injection tersebut
dapat disaring dengan baik. Demikian halnya dengan Setting server dengan benar memang akan
mengamankan e-commerce web dari serangan deface, akan tetapi bukan berarti
semuanya sudah aman sekarang. Situs e-commerce yang menggunakan Microsoft IIS
juga menggunakan database access dengan Micosoft SQL server,dimana MS SQL server tersebut mempunyai kelemahan
yang memungkinkan seseorang tanpa account dapat masuk dan lolos verifikasi dari
MS SQL server..Hal ini yang jelas dapat merugikan sekali, sebab bisa saja data
sensitif seperti nomor kartu kredit serta lainnya bocor! Pada saat seseorang
berusaha masuk ke situs e-commerce, biasanya akan disambut dengan halaman login
yang mengharuskan pemakai memasukkan login name dan password.
DAFTAR
PUSTAKA
1.
http://www.nextgenss.com
2.
http://st-curriculum.oracle.com/tutorial/SQLInjection/index.htm
3.http://www.ilmuwebsite.com/detil_hacking/7/SQL_Injection_AJ_Auction__seluruh_
versi/"
4. Hacking Exposed book
Komentar