PAPER SQL INJECTION
SISTEM MANAJEMEN KEAMANAN SISTEM INFORMASI
Disusun Oleh:
Siti Mustiani 121102420
Ichsan Kurniawan 121102541
Dhea Padmala 121102536
Ibnu Miftahurrahman 121102537
Semester 7 Kelas A3 (Sore)
SEKOLAH TINGGI MANAJEMEN INFORMATIKA
DAN KOMPUTER PONTIANAK
TAHUN AJARAN 2015/2016
DAFTAR ISI
COVER ........................................................................................................
DAFTAR ISI ................................................................................................
PENDAHULUAN ...................................................................................................
1. Latar Belakang ..............................................................................................
2. Tujuan ...........................................................................................................
3
4
ISI .............................................................................................................................
A.
B.
C.
D.
E.
F.
G.
Pengertian SQL Ijection ................................................................................
Sebab Terjadinya SQL Injection ...................................................................
Dampak dari SQL Injection ..........................................................................
Hal yang perlu dipersiapkan untuk Melakukan SQL Injection .....................
Contoh Sintak SQL Injection ........................................................................
Implementasi SQL Injection .........................................................................
Cara Pencegahan SQL Injection ...................................................................
5
6
7
7
7
12
14
PENUTUP ................................................................................................................
15
1. Kesimpulan ...................................................................................................
2. Saran .............................................................................................................
15
16
DAFTAR PUSTAKA ...............................................................................................
17
PENDAHULUAN
A. Latar Belakang
Website adalah sebuah cara untuk menampilkan diri di internet. Diibaratkan
website adalah sebuah tempat di internet dimana siapa saja di dunia ini dapat
mengunjunginya. Keamanan merupakan salah satu indikator penting dalam
membangun sebuah website, mengingat akses ke-internet yang tidak hanya dijadikan
layanan untuk memberikan informasi status, tetapi telah berkembang dengan
ditambahkannya fitur-fitur untuk melakukan transaksi secara on-line. Mengingat
website dapat diakses secara luas, maka dinilai perlu memperhatikan keamanan
website. Salah satunya dengan melakukan SQL Injection.
SQL Injection adalah kerentanan yang terjadi ketika penyerang memiliki
kemampuan untuk memperngaruhi Structure Query Language (SQL) query yang
melewati suatu aplikasi ke database back-end. Dengan mampu memperngaruhi apa
yang akan diteruskan ke database, penyerang dapat memanfaatkan sintaks dan
kemampuan dari SQL, serta kekuatan dan flesibilitas untuk mendukung fungsi
database dan fungsionaliyas sistem yang tersedia ke database. Menurut Clarke (2009)
Injeksi SQL bukan merupakan kerentanan yang eksklusif mempengaruhi aplikasi
Web, kode yang menerima masukan dari sumber yang tidak dipercaya dan kemudian
menggunakan input yang membentuk SQL dinamis bisa rentan. Sedangkan menurut
Anley (2002) Kasus SQL Injection terjadi ketika seorang penyerang dapat
memasukkan serangkaian pernyataan SQL ke query dengan mamanipulasi data input
ke aplikasi.
Seiring dengan berjalannya waktu, akibat banyaknya para hacker muda yang
lahir untuk melakukan kejahatan di dunia maya, maka banyak metode yang mereka
gunakan untuk melakukan teknik serangan seperti Cross Site Scripting, Directory
Traversal Attack, Parameter Manipulation dan lain sebagainya. Adapun contoh teknik
serangan yang sering mereka gunakan adalah teknik serangan melalui SQL injection.
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
situs. Teknik yang digunakan dalam SQL injection adalah dengan jalan menginput
3
perintah-perintah standar dalam SQL (DDL, DML, DCL) seperti create, insert,
update, dorp, alter, union dan select beserta perintah-perintah lainnya yang tidak
asing lagi bagi yang sudah mengenal SQL secara mendalam maupun yang baru
belajar.
SQL injection attack merupakan salah satu teknik dalam melakukan web
hacking untuk menggapai akses pada sistem database yang berbasis SQL. Teknik ini
memanfaatkan kelemahan dalam bahasa pemprograman scripting pada SQL dalam
mengolah suatu sistem database. Hasil yang ditimbulkan dari teknik ini membawa
masalah yang sangat serius.
Setelah mengetahui bahwa SQL injection merupakan suatu teknik serangan
hacker yang dapat mereka lakukan dari jarak jauh, penulis memutuskan untuk
mengambil tema ini untuk memenuhi tugas terstruktur mata kuliah Sistem
Manajemen Keamanan Sistem Informasi dan sebagai pengetahuan tentang keamanan
komputer dengan menggunakan judul Metode Serangan SQL Injection.
B. Tujuan
Setelah menentukan judul dalam tulisan ini, penulis mempunyai maksud dan
tujuan dalam penulisan tugas ini diantaranya adalah sebagai berikut :
1.
Diharapkan agar setiap pembaca dapat mengerti akan teknik serangan SQL
2.
Injection.
Dimaksudkan agar para pembaca dapat memahami cara kerja teknik serangan
3.
yang dilakukan oleh para hacker dalam merusak suatu sistem atau website.
Serta memberikan penjelasan tentang keuntungan dan kerugian dari
pelaksanaan teknik serangan SQL Injection ini.
ISI
A. Pengertian SQL Injection
SQL injection adalah suatu teknik yang dapat dilakukan oleh cracker
untuk dapat masuk ke dalam sistem administrator tanpa mengetahui username dan
password administrator terlebih dahulu dengan memanfaatkan perintah-perintah SQL
yang dimasukkan ke dalam database mesin server.
Menurut Rosihan Ari Yuana SQL injection merupakan perbuatan orang yang
memberikan perintah SQL untuk dijalankan di mesin server SQL tanpa sepengetahuan
Anda sebagai administrator. Proses injection biasanya dilakukan orang ketika
memasukkan input melalui form dengan perintah atau kode tertentu. Menurut
Muhammad Ilhamdi Rusydi tentang SQL Injection adalahteknik memanipulasi
perintah SQL dengan memasukkan ke database server sehingga dapat dimanfaatkan
untuk mendapatkan informasi dan merubah database yang telah ada. Sedangka
menurut Slamet Risnanto SQL injection merupakan suatu teknik dengan
menggunakan perintah SQL yang memungkinkan cracker dapat masuk ke dalam
suatu system yang terproteksi tanpa mengetahui username dan password administrator
terlebih dahulu. dan menurut Deris Stiawan SQL injection adalah suatu metode
yang digunakan untuk memanfaatkan kelemahan pada mesin server SQL, misalnya
server menjalankan layanan SQL (MySQL, PostgraseSQL, SQL Server dan lain-lain).
Kemudian Craker mencoba memasukkan sesuatu script untuk mencoba menampilkan
halaman error di browser dan biasanya halaman error akan menampilkan paling tidak
struktur dari hierarki server SQL.
B. Sebab Terjadinya SQL Injection
Penyebab terjadi SQL Injection adalah tidak adanya penanganan terhadap
karakter karakter tanda kutip tunggal dan juga karakter double minus -- yang
menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL. Sehingga seorang
Hacker menyisipkan perintah SQL kedalam suatu parameter maupun suatu form.
C. Dampak dari SQL Injection
Teknik ini memungkinkan seseorang dapat login kedalam sistem tanpa harus
memiliki account. Selain itu SQL Injection juga memungkinkan seseorang merubah,
menghapus, maupun manambahkan data-data yang berada didalam database. Bahkan
yang lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak bisa
memberi layanan kepada web server.
5
D. Hal yang Perlu Dipersiapkan untuk Melakukan SQL Injection
Sebelum melakukan SQL Injection, hal yang perlu dipersiapkanadalah sebagai
berikut:
Internet Exploler / Browser
PC yang terhubung internet
Program atau Sofware
E. Contoh Sintak SQL Injection
Adapun beberapa contoh sintaks agar para hacker dapat melakukan penyerangan
dengan menggunakan metode SQL injection adalah sebagai berikut :
1. $SQL = select * from login where username = $username and password =
$password; , {dari GET atau POST variable}
2. Isikan password dengan string or =
3. Hasilnya maka SQL akan seperti ini = select
* from login where username =
$username and password = pass or = ; , {dengan SQL ini hasil selection
akan selalu TRUE }
4. Dan hasilnya, para hacker bisa injeksi sintaks SQL kedalam SQL
Contoh Gambar SQL Injection :
Contoh sintaks SQL Injection
1)
Sintaks SQL string -- setelah nama username
2)
Query database awal :
Berubah menjadi :
Contoh sintaks SQL Injection
SQL Injection melalui URL, contohnya :
Penanganan SQL Injection
a. Merubah script php
Contoh script php semula :
$query = "select id,name,email,password,type,block from user " .
"where email = '$Email' and password = '$Password'";
$hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
7
}
if(strcmp($block, 'yes') == 0)
{
echo "<script>alert('Your account has been blocked');
[Link]='[Link]';</script>\n";
exit();
}
else
if(!empty($Id)
&&
!empty($name)
&&
!empty($email)
&&
empty($password));
Script di atas memungkinkan seseorang dapat login dengan menyisipkan perintah
SQL ke dalam form login. Ketika hacker menyisipkan karakter or = ke dalam
form email dan password maka akan terbentuk query sebagai berikut :
Maka dilakukan perubahan script menjadi :
$query = "select id,name,email,password,type,block from user".
"where email = '$Email'";
$hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
8
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, 'yes') == 0)
{
echo "<script>alert('Your account has been blocked');
[Link]='[Link]';</script>\n";
exit();
}
$pass = md5($Password);
else if((strcmp($Email,$email) == 0) && strcmp($pass,$password) == 0));
b. Menggunakan MySQL_escape_string
Merubah string yang mengandung karakter menjadi \ misal SQL
injection menjadi SQL injec\tion
Contoh :
$kar = SQL injection;
$filter = mySQL_escape_string($kar);
echoHasil filter : $filter;
Hasilnya :
c. Pemfilteran karakter dengan memodifikasi [Link]
Modifikasi dilakukan dengan mengenablekan variabel magic_quotes pada
[Link] sehingga menyebabkan string maupun karakter diubah menjadi \ secara
otomatis oleh php
Contoh :
Contoh script yang membatasi karakter yang dapat dinjeksi :
function validatepassword( input )
good_password_chars =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
validatepassword = true
for i = 1 to len( input )
c = mid( input, i, 1 )
if ( InStr( good_password_chars, c ) = 0 ) then
validatepassword = false
exit function
end if
next
end function
F. Implementasi SQL Injection
10
1) Masuk ke google atau browse yang lain
2) Masukkan salah satu keyword berikut
"/[Link]"
"/[Link]"
"/[Link]"
"/[Link]"
"/[Link]"
"/admin_login.asp"
"/admin_logon.asp"
"/admin/[Link]"
"/admin/[Link]"
"/admin/[Link]"
{anda bisa menambahi sendiri sesuai keinginan}
3) Bukalah salah satu link yang ditemukan oleh google, kemungkinan akan
menjumpai sebuah halaman login (user name danpassword).
4) Masukkan kode berikut :
User name : ` or `a'='a
Password : ` or `a'='a (termasuk tanda petiknya)
5) Jika berhasil, kemungkinan akan masuk ke admin panel, di mana bisa
menambahkan
berita,
mengedit
user
yang
lain,
merubah
about,
dan lain-lain. Jika beruntung kita dapat mendapatkan daftar kredit card yang
banyak.
6) Jika tidak berhasil, cobalah mencari link yang lain yang ditemukan oleh google.
7) Banyak variasi kode yang mungkin, antara lain :
User name : admin
Password : ` or `a'='a
atau bisa dimasukkan ke duaduanya misal :
or 0=0 -- ; or 0=0 -- ; or 0=0 -- ; or 0=0 # ;
or 0=0 # ; orx=x ; or x=x ; ) or (x=x
Cobalah sampai berhasil hingga anda bisa masuk kedalam admin.
11
G. Cara pencegahan SQL Injection
Agar tidak terjadi hacking pada website anda, maka cara pencegahannya adalah
sebagai berkut:
1) Batasi
panjang
input
box
(jika
memungkinkan),
dengan
cara membatasinya di kode program, jadi si cracker pemula akan bingung sejenak
melihat input box nya gak bisa diinject dengan perintah yang panjang.
2) Filter input yang dimasukkan oleh user, terutama penggunaan tanda kutip tunggal
(Input Validation).
3) Matikan atau sembunyikan pesan-pesan error yang keluar dari SQL Server yang
berjalan.
4) Matikan fasilitas-fasilitas standar seperti Stored Procedures, Extended Stored
Procedures jika memungkinkan.
5) Ubah "Startup and run SQL Server" menggunakan low privilege user di SQL
Server Security tab.
12
PENUTUP
A. Kesimpulan
Berdasarkan hasil identifikasi di pembahasan, maka penyusun dapat
menyimpulkan bahwa:
1. SQL Injection merupakan teknik yang digunakan untuk melakukan web hacking
untuk menggapai akses pada sistem database yang berbasis SQL dengan
memanfaatkan kelemahan dalam bahasa pemrograman scripting pada SQL dalam
mengolah suatu sistem database.
2. SQL Injection dapat terjadi karena beberapa hal diantaranya adalah tidak adanya
penganganan terhadap karakter-karakter tanda petik tunggal, karakter double
minus sehingga seorang hacker dapat menyisipkan perintah SQL kedalam
parameter maupun suatu form.
3. Beberapa karakteristik SQL Injection adalah:
Memungkinkan seseorang dapat login ke dalam tanpa harus memiliki id user
dan password.
SQL Injection memungkinkan seseorang merubah, menghapus, maupun
menambahkan data yang berada di dalam database. Bahkan yang lebih
berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak bisa
memberi layanan kepada web server.
B. Saran
Dalam menggunakan fasilitas internet, khususnya pengguna website berhatihatilah dalam menjalankannya, karena bisa saja terjadi kejatahan/cybercrime yang
tidak kita inginkan. Untuk mencegah hal tersebut dari orang yang tidak bertanggung
jawab, lakukanlah pencegahan seperti memperkuat keamanan sistem pada website.
Adapun cara pencegahan dari SQL Injection adalah sebagai berikut :
1. 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 tidak bisa diinject dengan perintah yang panjang.
2. Memfilterisasi input yang dimasukkan oleh user, terutama penggunaan tanda kutip
tunggal (Input Validation).
13
3. Mematikan atau menyembunyikan pesan-pesan error yang keluar dari SQL Server
yang berjalan.
4. 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.
14
DAFTAR PUSTAKA
Zamidra Efvy, Zam. 2006. Hacking is Easy, Cara Mudah Melakukan Hacing tanpa Tools.
Neo Media Press. Semarang.
[Link] Diakses tanggal 10 Oktober 2015. Inkeksi SQL
[Link] Diakses tanggal 09 Oktober 2015. Cara Hacking Website dengan
teknik SQL Injection.
15