Anda di halaman 1dari 24

SERANGAN SQL INJECTION

DAN PENCEGAHANYA

OLEH
FREDDY SYAHRUL AP (08053111074)

UNIVERSITAS SRIWIJAYA
FAKULTAS ILMU KOMPUTER
TEKNIK INFORMATIKA
MEI 2008

1
DAFTAR ISI

BAB I PENDAHULUAN
1. KEJAHATAN DUNIA MAYA .............................................................. 3
2. MAKSUD DAN TUJUAN .................................................................... 4
3. METODE PELAKSANAAN ............................................................... 4
BAB II PEMBAHASAN
1. PENGERTIAN ...................................................................................... 5
2. SEBAB TERJADINYA ......................................................................... 6
3. KARAKTERISTIK .............................................................................. 6
4. TOOLS PENDUKUNG ........................................................................ 6
5. CONTOH SINTAKS DALAM PHP .................................................... 7
6. PENANGANAN SQL INJECTION .................................................... 8
7. MEMINIMALISASIKAN SQL INJECTION ....................................11
8. LOKASI SQL INJECTION .................................................................11
9. IMPLEMENTASI SQL INJECTION .................................................12
10. CONTOH SQL SEDERHANA ............................................................13
11. CONTOH KASUS ................................................................................19
12. CARA PENCEGAHAN ........................................................................21
BAB III PENUTUP
1. KESIMPULAN .....................................................................................22

DAFTAR PUSTAKA .....................................................................................................24

2
BAB I

PENDAHULUAN

1. KEJAHATAN DUNIA MAYA


Kebutuhan dan penggunaan akan teknologi informasi yang diaplikasikan dengan
internet dalam segala bidang seperti e-banking, ecommerce, e-government,
education dan banyak lagi telah menjadi sesuatu yang lumrah. Bahkan apabila
masyarakat terutama yang hidup di kota besar tidak bersentuhan dengan persoalan
teknologi informasi dapat dipandang terbelakang atau GAPTEK.
Internet telah menciptakan dunia baru yang dinamakan cyberspace yaitu sebuah
dunia komunikasi berbasis komputer yang menawarkan realitas yang baru berbentuk
virtual (tidak langsung dan tidak nyata). Walaupun dilakukan secara virtual, kita
dapat merasa seolah-olah ada di tempat tersebut dan melakukan hal-hal yang
dilakukan secara nyata, misalnya berkomunikasi, berdiskusi dan banyak lagi.
Perkembangan internet yang semakin hari semakin meningkat baik teknologi
dan penggunaannya, membawa banyak dampak baik positif maupun negatif.
Tentunya untuk yang bersifat positif kita semua harus mensyukurinya karena banyak
manfaat dan kemudahan yang didapat dari teknologi internet ini
Kemudian tentunya tidak dapat dipungkiri bahwa teknologi internet membawa
dampak negatif yang tidak kalah banyak dengan manfaat yang ada. Internet
membuat kejahatan yang semula bersifat konvensional seperti pengancaman,
pencurian dan penipuan kini dapat dilakukan dengan menggunakan media komputer
secara online dengan risiko tertangkap yang sangat kecil oleh individu maupun
kelompok dengan akibat kerugian yang lebih besar baik untuk masyarakat maupun
negara disamping menimbulkan kejahatan-kejahatan baru.
Banyaknya dampak negatif yang timbul dan berkembang, membuat suatu
paradigma bahwa tidak ada komputer yang aman kecuali dipendam dalam tanah
sedalam 100 meter dan tidak memiliki hubungan apapun juga. Ini terbukti dengan
banyaknya para hacker-hacker pemula yang lahir untuk melakukan tindakan kriminal
didunia maya.
Seiring dengan berjalannya waktu, akibat banyaknya para hacker muda yang
lahir untuk melakukan kejahatan di dunia maya, maka banyak metode yang mereka

3
gunakan untuk melakukan teknik serangan seperti Cross Site Scripting, Directory
Traversal Attack, Parameter Manipulation dan lain sebagainya. Adapun salah satu
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
perintah-perintah standar dalam SQL (DDL, DML, DCL) seperti create, insert, upate,
dorp, alter, union dan select beserta perintah-perintah lainnya yang tak asing lagi
bagi anda yang sudah mengenal SQL secara mendalam maupun yang baru saja
belajar.
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.
Maka setelah mengetahui bahwa SQL injection merupakan suatu teknik
serangan hacker yang dapat mereka lakukan dari jarak jauh, maka penulis
memutuskan untuk mengambil tema ini dengan menggunakan judul Metode
Serangan SQL Injection.

4
2. MAKSUD DAN TUJUAN
Setelah menentukan judul dalam tulisan ini, penulis mempunyai maksud dan tujuan
dalam penulisan tugas ini diantaranya adalah sebagai birkut :
1. Diharapkan agar setiap pembaca dapat mengerti akan teknik serangan SQL
Injection
2. Dimaksudkan agar para pembaca dapat memahami cara kerja teknik serangan
yang dilakukan oleh para hacker dalam merusak suatu sistem atau website.
3. Serta memberikan penjelasan tentang keuntungan dan kerugian dari
pelaksanaan teknik serangan SQL Injection ini.

3. METODE PELAKSANAAN
Dikarenakan keterbatasan kemampuan yang dimiliki oleh penulis dalam menulis
tulisan ini, maka tulisan ini dibuat oleh penulis yang pelaksanaannya hanya dengan
menggunakan bantuan dari Metode perpustakaan.

5
BAB II

PEMBAHASAN

1. PENGERTIAN
SQL injection adalah suatu teknik yang dapat dilakukan oleh cracker untuk dapat
masuk kedalam system administrator tanpa mengetahui username dan password
administrator terlebih dahulu dengan memanfaatkan perintah-perintah SQL yang
dimasukkan kedalam database mesin server.
Akan menurut para ahli pengertian dari SQL injection adalah sebagai berikut :
- 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
SQL injection adalah teknik memanipulasi perintah SQL dengan memasukkan ke
database server sehingga dapat dimanfaatkan untuk mendapatkan informasi dan
merubah database yang telah ada.
- 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.
- 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.

6
2. SEBAB TERJADINYA
SQL injection yang dapat diartikan sebagai suatu aksi hacking yang dilakukan di
aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi
client dapat terjadinya karena disebabkan oleh beberapa penyebab yatu :
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.

3. KARAKTERISTIK
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 datadata yang berada didalam database. Bahkan yang
lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak bisa
memberi layanan kepada web server.

4. TOOLS PENDUKUNG
Untuk dapat melakukan aksi SQL injection, para hacker membutuhkan beberapa
tools yang akan mereka gunakan sebagai pendukung untuk melakukan teknik
penyerangan diantaranya adalah sebagai berikut :
1. Internet Exploler / Browser
2. PC yang terhubung internet
3. Program atau software seperti softice

7
5. CONTOH SINTAKS DALAM PHP
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 inject sintax SQL kedalam SQL

Contoh Gambar SQL Injection :

6. PENANGANAN SQL INJECTION


1. MERUBAH SCRIPT PHP
$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))

8
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, 'yes') == 0)
{
echo "<script>alert('Your account has been blocked);
document.location.href='index.php';</script>\n";
exit ( );
}
else if(!empty($Id) && !empty($name) && !empty($email) &&
!empty($password));
Script diatas memungkinkan seseorang dapat login dengan menyisipkan
perintah SQL kedalam form login. Ketika hacker menyisipkan karakter or =
kedala 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];
$password = $row[3];
$type = $row[4];
$block = $row[5];

9
}
if(strcmp($block, 'yes') == 0)
{
echo "<script>alert('Your account has been blocked');
document.location.href='index.php';</script>\n";
exit ( );
}
$pass = md5($Password);
else if((strcmp($Email,$email) == 0) && strcmp($pass,$password) == 0));

2. 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);
echo Hasil filter : $filter;

3. PEMFILTERAN KARAKTER DENGAN MEMODIFIKASI PHP.INI


Modifikasi dilakukan dengan mengenablekan variabel magic_quotes pada php.ini
sehingga menyebabkan string maupun karakter diubah menjadi \ secara
otomatis oleh php.

10
Contoh :

Contoh script yang membatasi karakter yang bisa masukkan :


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

7. MEMINIMALISASIKAN SQL INJECTION


Ada beberapa cara yang dapat digunakan untuk meminimalisasikan terjadinya
serangan SQL injection diantaranya adalah sebagai berikut :

11
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.

8. 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

12
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].

9. IMPLEMENTASI SQL INJECTION


1. Masuk ke google atau browse yg lain
2. 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}
3. Bukalah salah satu link yang ditemukan oleh google, kemungkinan Anda 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 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.

13
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
8. Cobalah sampai berhasil hingga anda bisa masuk ke admin panel.

10. CONTOH SQL INJECTION SEDERHANA


Pada permasalahan ini, penulis mengajak untuk membuat contoh mengenai kasus
SQL injection yang sampai saat ini dan detik ini juga masih sering kita jumpai pada
situs-situs di internet. Salah satu penyalahgunaan bug SQL injection adalah
digunakan untuk mem-bypass sistem login pada suatu situs. Contoh kali ini akan kita
rancang sendiri sedemikian rupa mulai dari merancang database, membuat script
sampai melakukan SQL injection terhadap script yang kita buat tersebut. Kita akan
menggunakan MS SQL Server sebagai databasenya, ASP sebagai scripting
languange nya dan sembarang HTML editor untuk membuat layar loginnya (penulis
disini menggunakan MS FrontPage). Penulis asumsikan Anda menggunakan MS IIS
sebagai web server. Siapkan MS IIS Anda dan juga MS SQL Server 2000 Anda.
Pertama-tama kita akan buat dahulu databasenya. Siapkan database dengan nama
sqlinject dan buat tabel di dalamnya dengan nama tbUser. Berikut ini adalah struktur
dari tabel tbUser melalui perintah SQL CREATE TABLE.

Create table tbUser


{
username varchar(50),
password varchar(50))

Isikan data ke dalam tabel tersebut dengan mengetikkan perintah SQL seperti
berikut ini.

insert into tbUser values('sql','inject')

14
Sekarang kita sudah mempunyai sebuah database yang bernama 'sqlinject', sebuah
tabel yang bernama 'tbUser' dan tabel tersebut sudah diisi dengan satu buah row
data. Sekarang kita akan buat sebuah halaman login yang digunakan sebagai
interface web-nya. Penulis beri nama filenya yaitu login.asp.

Bentuk tampilan dari layar login ini bisa Anda lihat seperti berikut ini.

Setelah itu kita buat script untuk memproses login ini, penulis beri nama
login_process.asp. Code pada file login_process.asp adalah sebagai berikut. Untuk
koneksi ke database (SQL Server) penulis menggunakan metode SQL
Authentication, server pada localhost, username 'sa' dan password 'rahasia'.

Script untuk proses login :

<% option explicit %>

<% dim connstring,conn,recset connstring

= "Provider=SQLOLEDB.1; Password=rahasia;

Persist Security Info=True; User ID=sa; Initial Catalog=sqlinject;

ata Source=localhost"

set conn = server.createobject("adodb.connection")

set recset = server.createobject("adodb.recordset")

conn.open connstring

recset.open "select * from tbUser where username = '" &

15
request.form("username") & "' and password = '" &

request.form("password") & "'",conn,3,2

if not recset.eof then response.write recset.recordcount

session("username") = request.form("username")

response.redirect "secured_page.asp"

else
response.redirect "login.asp" end if

%>

Kita lihat pada code diatas terdapat operasi SELECT ke SQL yang mencari
username dan password dari tabel tbUser. Jika username dan password yang
dimasukkan benar maka akan masuk ke halaman secured_page.asp (ada pada
bagian akhir dari tulisan ini). Maksud dari halaman secured_page.asp ini adalah
bahwa halaman tersebut hanya bisa diakses jika Anda mengisikan username dan
password dengan benar. Anda tidak bisa mengetikkan URL halaman tersebut secara
langsung. Gambar contoh halaman secured_page.asp bisa Anda lihat berikut ini.

16
Pada halaman secured_page.asp di atas terdapat sebuah link logout yang
mengarah pada dokumen logout.asp. Ini digunakan untuk melakukan sign-out atau
log-out dari halaman secured_page.asp dan menuju ke halaman login.asp kembali.

Code dari dokumen logout.asp adalah sebagai berikut .

<%
session.abandon response.redirect "login.asp"

%>

Sekarang semua file sudah kita buat. Letakkan semua file tadi (login.asp,
login_process.asp, secured_page.asp, logout.asp) dalam satu folder dan jadikan
sebagai home directory pada MS IIS (web server) Anda. Hasilnya bisa Anda test
dengan mengetikkan URL yang mengarah pada web Anda tadi misalnya
http://localhost/login.asp.

Sekarang saatnya penulis akan menyajikan contoh SQL injection untuk mem-bypass
login. Tampilkan URL yang berisi login.asp tadi (misalnya http://localhost/login.asp).
Sekarang coba masukkan username 'a' dan password 'a', program akan kembali lagi
ke halaman login.asp karena username dan password tersebut salah. Sekarang
coba sekali lagi, kali ini username 'sql' dan password 'inject'. Karena username dan
password benar maka Anda akan diarahkan ke halaman secured_page.asp. Anda
bisa klik link logout jika ingin logout. Aktivitas tersebut adalah aktivitas normal pada
suatu sistem pada login. Bagaimanakah cara tidak normalnya? Kita memeriksa
apakah login tersebut bisa di bypass atau tidak dengan cara memberikan inputan
tanda ' (single quote) pada bagian inputan username dan masukkan sembarang
string pada bagian password.

Jika Anda tekan tombol submit maka akan muncul error seperti berikut ini.

Error Type:

Microsoft OLE DB Provider for SQL Server (0x80040E14)

Line 1: Incorrect syntax near

17
'aku'. /login_process.asp, line 8

Error di atas merupakan error dari database SQL Server yang sebenarnya
menyatakan ada kesalahan pada statement SQL (akibat kita masukkan karakter '
tadi). Penyebab utama kejadian di atas adalah karena karakter ' (single quote) yang
kita inputkan pada bagian username. Karakter ' (single quote) merupakan karakter
pemutus dari statement SQL dan dari sini bisa kita kembangkan untuk membelokkan
statement SQL asli menjadi statement SQL sesuai keinginan kita. Mari kita lihat
kembali kejadiannya. Misalnya kita masukkan string 'user' dan password 'pass' maka
statement

SQL yang terjadi adalah sebagai berikut.

select * from tbUser where username = 'user' and password = 'pass'

Jalankan pada MS Query Analyzer maka hasilnya akan menjadi suatu zero
recordset dan tidak error. Sekarang misalnya kita memasukkan karakter ' pada
username dan string 'aku' pada bagian password maka statement SQL pada
database akan menjadi seperti berikut ini.

select * from tbUser where username = ''' and password = 'aku'

Coba jalankan pada MS Query Analyzer dan akan muncul error seperti berikut ini.

Server: Msg 170, Level 15, State 1, Line 1

Line 1: Incorrect syntax near 'aku'.

Server: Msg 105, Level 15, State 1, Line 1

Unclosed quotation mark before the character string ''.

Kita lihat error yang pertama persis sama pesannya seperti yg terjadi pada web tadi.
Itu terjadi karena Anda melakukan pemotongan statement SQL dengan karakter '
dan belum Anda selesaikan. Efek dari pemotongan ini akhirnya Anda bisa
menambahkan statement SQL Anda sendiri setelah karakter ' tadi. Sekarang kita

18
selesaikan pemotongan statement SQL tadi dengan menambahkan string or 1=1.
Setelah karakter ' tadi (jadi pada bagian username

Anda ketikkan ' or 1=1 sehingga sekarang statement SQL nya akan menjadi seperti
berikut ini.

select * from tbUser where username = '' or 1=1 --' and password = 'aku'

Setelah di jalankan pada MS Query Analyzer. Hasilnya adalah menimbulkan suatu


record set yang menampilkan semua data pada tabel tbUser tersebut. Kita lihat lagi
pada statement di atas. Karakter adalah karakter untuk menandakan bahwa string
setelah tanda akan di ignore atau dianggap sebagai remark pada suatu statement
SQL. Jadi sebenarnya pada statement di atas yang dijalankan adalah sebagai
berikut.

select * from tbUser where username = '' or 1=1

Jadi perintah di atas akan men-select username yang berupa blank character dan
kemudian di OR dengan suatu kondisi TRUE (dalam hal ini diwakili dengan 1=1).
Kondisi apapun jika di OR dengan keadaan TRUE maka hasilnya akan selalu TRUE
pula. Itulah inti dari kejadian di atas.

11. CONTOH KASUS


Berikut ini merupakan teknik SQL injection yang dilakukan oleh hacker untuk
menginjeksi suatu situs tertentu yang memberikan pelayanan SMS web ke sebuah
handphone. Disini akan dijelaskan string dasar SQL yang dapat berubah menjadi hal
yang membahayakan suatu situs.
Adapun cara yang dapat dilakukan oleh hacker tersebut adalah sebagai berikut :
1. Mencari target dengan Google, keywordnya allinurl:.com/sendsms.asp. Inilah
URL yang sering dipakai oleh web site yang menyediakan jasa mengirim SMS.
2. Dalam contoh ini, biasanya hacker memakai www.yepcell.com, situs ini adalah
sebuah situs dari Timur Tengah yang menyediakan jasa pengiriman sms ke
seluruh penjuru dunia dan menyediakan aksesori handphone seperti, ringtone
dan gambar.
3. Lalu hacker harus mendaftar dulu untuk menjadi anggota supaya bisa mengirim
SMS. Isikan data diri anda; semuanya boleh palsu kecuali nomor handphone.

19
Dalam contoh ini kita buat userID dengan nama yamakasi. Tetapi sebelumnya
hacker harus dapat menguji apakah situs ini memakai SQL. Cara mengujinya
dapat pada input box login dengan string yang telah dibahas di atas.
4. Setelah itu klik OK, dan account anda telah terbentuk.
5. Proses penyerangan akan dimulai, anda masuk ke members direktory yang
URL-nya adalah www.yepcell.com /members.asp lalu masukan debuging code '
having 1=1- di kolom username dan masukan sembarang password di kolom
password.
6. Lalu akan keluar error page-nya, dan dari erro page tersebut telah dijelaskan:
bahwa terdapat Error Type: Microsoft OLE DB Provider for ODBC Drivers
(0x80040E14) [Microsoft] [ODBC SQL Server Driver] [SQL Server] Column
'YepCell_membersDB.UserID' is invalid in the select list because it is not
contained in an aggregate function and there is no GROUP BY clause. Lalu
hacker harus tahu bahwa ada table Yepcell_membersDB dan ada field UserID,
ini adalah informasi berharga. untuk itu siapa tahu ada lagi filed lainnya, jadi
hacker masukan string 'GROUP BY YepCell_membersDB
7. Lalu muncul lagi error-nya. Error Type: Microsoft OLE DB Provider for ODBC
Drivers (0x80040E14) [ Microsoft ] [ ODBC SQL Server Driver ] [ SQL Server ]
Column 'YepCell_membersDB.Password' is invalid in the select list because it is
not contained in an aggregate function and there is no GROUP BY clause. Jika
ada lagi fieldnya yaitu Password, dan hackerpun mencoba kembali untuk
menginjeksi jikalau ada kemungkinan lagi field lainnya dengan 'GROUP BY
YepCell_membersDB.Password, tapi jika ternyata error-nya kembali ke awal lagi,
berarti ada dua field dalam satu table YepCell_membersDB.
8. Karena sejak awal hacker melakukan SQL Injection ini untuk menambah Credits
(string khusus penghitung SMS) di situs ini, maka hacker mengubah account
mereka dengan injeksi ini. Perintah UPDATE adalah perintah SQl yang berguna
untuk mengubah atau memperbaiki data dalam suatu field di table yang memuat
field itu, dengan kode 'UPDATE [nama_table] set [field1] = [nilai1] where kondisi ;
Jadi dengan info yang kita dapatkan dari error page yang tadi maka kita dapat
membuat string-nya 'UPDATE YepCell_membersDB set Credits = 100 where
UserID ='yamakasi' kita klik submit lalu.
9. Jika terjadi error, hacker butuh keyakinan bahwa semua kegiatan akan selalu
berjalan mulus tapi dicek terlebih dahulu account mereka.

20
10. Bila sudah terlihat credits kita bertambah menjadi seratus.Artinya hacker telah
sukses menginjeksi database situs itu dengan perintah SQL dasar tadi dan
bukan dengan cara carding.
11. Dan hasilnya hacker telah menginjeksi situs tersebut dan mereka bisa ber SMS
ria sepuasnya. Namun kadang-kadang SMS gateway situs ini sering down.

12. CARA PENCEGAHAN


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 gak bisa diinject dengan perintah yang panjang.
2. Memfilterisasi input yang dimasukkan oleh user, terutama penggunaan tanda
kutip tunggal (Input Validation).
3. Mematikan atau sembunyikan pesan-pesan error yang keluar dari SQL Server
yang berjalan.
4. Mematikan fasilitas-fasilitas standar seperti Stored Procedures, Extended Stored
Procedures jika memungkinkan.
5. Mengubah "Startup and run SQL Server" menggunakan low privilege user di
SQL Server Security tab.

21
BAB III

PENUTUP

1. KESIMPULAN
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 datadata yang berada didalam database. Bahkan yang
lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak bisa
memberi layanan kepada web server.

22
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 gak bisa diinject dengan perintah yang panjang.
2. Memfilterisasi input yang dimasukkan oleh user, terutama penggunaan tanda
kutip tunggal (Input Validation).
3. Mematikan atau sembunyikan pesan-pesan error yang keluar dari SQL Server
yang berjalan.
4. Mematikan fasilitas-fasilitas standar seperti Stored Procedures, Extended Stored
Procedures jika memungkinkan.
5. Mengubah "Startup and run SQL Server" menggunakan low privilege user di
SQL Server Security tab.

23
DAFTAR PUSTAKA

Stiawan Deris. 2005. Sistem Keamanan Komputer. PT. Elex Media Komputindo: Jakarta.
http://www.sony ak.com. 12/01/2004. SQL Injection Menggunakan ASP dan MS SQL
Server.
http://www.wartaegov.com. 04/06/2007. Tujuh Jurus Mengantisipasi Serangan Ke Situs
Web.
http://www.gedex.web.id 02/07/2007. Microsoft Kena Deface Lagi !!! Lagi-lagi SQL
Injection.
http://www.rose-see.nr. 07/11/2007. Hacking Security - Jamu Penawar SQL Injection.
http://www.demittegal.multiply.com.10/12/2007. Masalah_SQL_Injection_dan_Solusinya.
http://www.blogger.com 07/05/2008. Tutorial SQL Injection.

24

Anda mungkin juga menyukai