SlideShare una empresa de Scribd logo
1 de 16
[Type the document title]
ANALISA KEAMANAN TERHADAP SQL INJECTION PADA WEB SERVICE

Nelly shofiyani.. 1 dan Rizki Putri Yanda 2
1,2. Fakultas Teknik Universitas Muhammadiyah Malang
Email: Nellykawaii93@gmail.com, rizkiputriyanda@gmail.com

Abstrak

Seiring dengan pesatnya perkembangan ilmu pengetahuan dan teknologi maka semakin
tinggi juga tingkat kebutuhan manusia terhadap informasi dan komunikasi. Sistem
informasi berbasis Web sangat rentan terhadap serangan. Penyerang (attacker)
melakukan serangan ke sejumlah Website dengan berbagai alasan. Keamanan aplikasi
Website perlu diteliti lebih lanjut karena keamanan sistem informasi yang berbasis
Website sangat penting. Penelitian ini bertujuan untuk membuat aplikasi Website yang
tahan dari serangan SQL Injection. Injeksi SQL atau SQL Injection memiliki makna dan
arti yaitu sebuah teknik yang menyalahgunakan sebuah celah keamanan yang terjadi
dalam lapisan basis data sebuah aplikasi . SQL injection adalah jenis aksi hacking pada
keamanan komputer di mana seorang penyerang bisa mendapatkan akses ke basis data
di dalam sistem. Sedangkan Web Service itu sendiri merupakan sistem perangkat lunak
yang didesain untuk mendukung interoperabilitas interaksi antar mesin dalam suatu
jaringan (network). Kebanyakan penyerang menggunakan tools SQL Injection yaitu
Havij dan SQLMap sebagai tool otomatis untuk memanfaatkan celah keamanan pada
suatu website. Dan terdapat 4 metode serangan, yaitu : SQL Injection, XSS (CrossSite Scripting), RFI (Remote File Inclusion), dan Username Enumeration ini kami lebih
focus terhadap jenis serangan pada SQL Injection. Tujuan tugas akhir ini adalah
membangun aplikasi yang bisa mendeteksi kelemahan dari aplikasi web terhadap SQL
Injection, untuk meningkatkan keamanan pada web service dari serangan SQL Injection
dkk.

Kata Kunci : Sql Injection , Web Service .

1|Page

Teknik Informatika UMM Angkatan 2011
[Type the document title]
Abstract
Along with the rapid development of science and technology the higher the level of
human needs to information and communication . Web -based information systems are
highly vulnerable to attack . The attacker ( the attacker ) to attack a website with a
variety of reasons . Website application security needs to be further investigated
because of the security -based information systems is very important website . This
study aims to create a website that is resistant applications from SQL Injection attacks .
SQL injection or SQL Injection has meaning and significance is a technique that is
abusing a security gap that occurs in the database layer of an application . SQL
injection is a type of hacking on computer security in which an attacker can gain access
to the database in the system . While the Web Service itself is a software system
designed to support interaction interoperability between machines in a network
(network ) . Most attackers use tools is Havij SQL Injection and Mapper as an
automatic tool to exploit vulnerabilities on a website. And for 4 methods of
attack,namely:SQLInjection,XSS(Cross-Site Scripting),RFI(RemoteFile Inclusion),and
Username Enumeration we more focus on the types of SQL injection attacks. The
purpose of this thesis is to build an application that can detect the weakness of web
applications against SQL Injection, to improve the security of web service from SQL
Injection attacks et al.
Keywords : Sql Injection , Web Service .

2|Page

Teknik Informatika UMM Angkatan 2011
[Type the document title]
1.PENDAHULUAN
SQL injection adalah salah satu jenis penyerangan yang mengizinkan user tidak sah
(penyerang) untuk mengakses database server. Pada dasarnya, serangan ini difasilitasi
oleh kode program itu sendiri. Tekniknya, penyerang mencoba memasukan query
(melalui field atau URL) yang akan menyebabkan database serber menggenerate query
SQL yang tidak valid.
Kejahatan di dunia teknologi dan informasi terutama pada aplikasi web
semakin marak terjadi. Salah satu faktor yang menyebabkan kurangnya tingkat
keamanan pada aplikasi web adalah kesalahan penulisan kode program. Kesalahan
penulisan kode program dalam pembuatan aplikasi web adalah hal yang sering
dimanfaatkan oleh para penyerang, hal ini mengakibatkan rata-rata aplikasi web
bisa diserang dengan memanfaatkan kesalahan ini. Kelemahan-kelemahan yang
sering dimanfaatkan oleh para penyerang diantaranya adalah kelemahan terhadap
SQL Injection, XSS, Remote File Inclusion, dan Username Enumeration.
Aplikasi web tidak terlepas dari penggunaan database sebagai sumber data untuk
membuat tampilan web yang dinamis. Dalam

dunia

pengembangan

website,

pengamanan terhadap sebuah website seringkali luput dari benak pengembang web.
Pada kenyataanya,

mencari suatu bug atau kelemahan keamanan dan melakukan

audit terhadap suatu website cukup sulit untuk dilakukan. Melihat kenyataan
tersebut, para pengembang ataupun praktisi keamanan web mengaplikasikan berbagai
teknik keamanan. Setiap pengembang website harus memperbaiki pengamanan terhadap
website

yang

dibangunnya.

Pengamanan

harus diterapkan sejak awal karena

penerapannya akan sangat sulit jika telah terjadi masalah di kemudian hari. Akan tetapi,
hal tersebut tidak menjamin website tersebut aman 100% karena selalu terdapat celahcelah yang harus diminimalisir jumlahnya. Salah satu faktor yang menyebabkan
kurangnya tingkat keamanan pada aplikasi web adalah kesalahan penulisan kode
program. Kesalahan penulisan kode program dalam pembuatan aplikasi web adalah
hal yang sering dimanfaatkan oleh para penyerang, hal ini mengakibatkan rata-rata
aplikasi web bisa diserang dengan memanfaatkan kesalahan ini. Kelemahankelemahan penulisan kode yang sering dimanfaatkan oleh para penyerang untuk
menyerang korbannya

diantaranya

adalah SQL

Injection

dan

XSS. Seperti

ditunjukan pada diagram yang dirilis oleh webappsec.org (diperbaharui terakhir
3|Page

Teknik Informatika UMM Angkatan 2011
[Type the document title]
Juli 2011) pada Gambar 1 bahwa SQL Injection (20%) dan XSS (9,9%)
merupakan dua metode serangan yang sering digunakan [1].

Gambar 1. Diagram Serangan pada Aplikasi Web
Selain 2 metode yang telah disebutkan, terdapat pula metode-metode lain yang
bisa dilakukan untuk menyerang suatu aplikasi web, diantaranya adalah : Username
Enumeration, dan Remote File Inclusion [2]. Apabila celah-celah keamanan ini tidak
diatasi dengan baik dan benar, maka bisa menimbulkan dampak buruk pada aplikasi
web.
Salah satu cara untuk mempermudah pendeteksian adanya kelemahan-kelemahan
pada aplikasi web/website adalah dengan menggunakan aplikasi pencari celah
keamanan. Aplikasi pencari celah keamanan ini dimaksudkan untuk mendeteksi
secara otomatis apakah suatu aplikasi web memiliki kerentanan terhadap suatu
serangan. Dengan menggunakan aplikasi seperti ini maka baik administrator
maupun pengembang aplikasi web dapat mengetahui dimana letak kerentanan pada
aplikasi web mereka. Hal ini tentunya akan memudahkan dalam upaya meningkatkan
keamanan aplikasi web.
4|Page

Teknik Informatika UMM Angkatan 2011
[Type the document title]
SQL injection adalah salah satu metode penyusupan administrasi website yang
tergolong mudah untuk dipelajari. Selain itu, SQL Injection juga memiliki beberapa
kelebihan dibandingkan metode hacking lainnya, diantaranya adalah:
1. SQL Injection tidak memerlukan aplikasi khusus, pelaku tinggal memanipulasi
String yang akan menjadi inputan bagi suatu form, atau memanipulasi alamat
URL suatu situs.
2. SQL Injection tidak akan meninggalkan jejak kecuali dilakukan pencatatan
aktivitas setiap query ke tabel.
3. Tidak mensyaratkan banyak hal, seperti melakukan ping, menggunakan port
tertentu, tidak terpengaruh firewall.

II. TINJAUAN PUSTAKA
A. SQL Injection
SQL Injection adalah jenis serangan yang memungkinkan penyerang untuk
memanipulasi perintah SQL melalui URL atau isian form yang dikirimkan oleh aplikasi
web ke server [3]. Salah satu bentuk serangan ini dilakukan dengan menyusun
perintah SQL yang memungkinkan dilakukannya login tanpa memiliki akun yang valid.
Query Untuk MySQL
Query yang paling sering mendapat eksploitasi adalah query login. Untuk
melakukan login, biasanya setelah menerima inputan dari form, maka digunakan
perintah select berdasarkan kriteria username dan passwordnya. Jika username dan
password tersebut cocok, maka user tersebut bisa menggunakan session atau cookies
untuk login.
$username = $_POST['username'];
$password = $_POST['password'];
$run = mysql_query("SELECT * FROM user WHERE username = '$username' AND
password = '$password'");
$jml = mysql_num_rows($run);
if($jml > 0){
echo "Anda berhasil login";
} else {
5|Page

Teknik Informatika UMM Angkatan 2011
[Type the document title]
echo "username atau password salah!";

SQL Injection biasanya terjadi pada website yang memiliki tingkat keamanan yang
rendah. Hal ini ditandai dengan tidak memiliki suatu filter terhadap inputan tertentu,
baik dari form maupun dari URL. Kecerobohan kecil semacam ini biasanya bisa
dimanfaatkan oleh penyusup untuk membypass suatu halaman login misalnya dan
masuk ke direktori administrator.
Dalam serangan SQL Injection, penyerang mencoba memasukkan query baik
melalui field atau URL yang menyebabkan database server menghasilkan query SQL
yang salah. Teknik SQL Injection merupakan teknik penyerangan yang sangat
sederhana, namun justru hal inilah yang

sering diabaikan oleh para pengembang

aplikasi web.
SQL Injection dapat disebabkan karena penanganan yang buruk terhadap karakter
tanda „ (petik satu), karakter --(double minus), maupun karakter-karakter lain
yang menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL. Hal ini bisa
mengakibatkan

seorang

penyerang menyisipkan perintah SQL kedalam suatu

parameter maupun suatu form.
Alur Sistem
A. Deskripsi Umum
Aplikasi yang akan dibuat dalam tugas besar ini adalah aplikasi pencari celah
keamanan pada aplikasi web untuk meningkatkan keamanan terhadap website. Aplikasi
ini akan memberikan informasi tentang kerentanan suatu aplikasi web terhadap
serangan-serangan yang akan dilakukan dengan menggunakan empat metode
berbeda. Metode penyerangan yang akan digunakan dalam aplikasi ini adalah :
SQL Injection, XSS (Cross-Site Scripting), RFI(Remote File Inclusion), dan
Usename Enumeration.Namun disini kami hanya mengambil metode sql Injection
saja. Aplikasi ini akan menghasilkan laporan yang berisikan informasi letak celah
keamanan yang terdapat pada aplikasi web yang dijadikan bahan uji.
B. Arsitektur Sistem

6|Page

Teknik Informatika UMM Angkatan 2011
[Type the document title]
Dalam tugas besar ini akan dirancang dan diaplikasikan sebuah aplikasi pencari celah
keamanan untuk aplikasi web dimana secara garis besar memiliki arsitektur seperti
diperlihatkan pada Gambar 2.

Gambar 2. Arsitektur Sistem
Sesuai dengan gambar 2, maka jalannya aplikasi adalah sebagai berikut:
1. Aplikasi Pencari Celah Keamanan melakukan request berupa URL ke server
2. Server memberikan respon berupa HTML
3. Aplikasi melakukan proses scan terhadap respon HTML dan menginjeksikan
script injeksi.
4. Server memberikan respon berupa HTML.
5. Aplikasi melakukan proses scan terhadap respon HTML untuk mengecek hasil
proses injeksi.
6. Aplikasi memberikan laporan hasil proses scan.
C. Deskripsi Singkat Aplikasi
Aplikasi pencari celah keamanan ini memiliki empat fitur utama yang dapat membantu
untuk mencari celah keamanan yang mungkin terdapat pada suatu aplikasi web. Fiturfitur yang terdapat pada aplikasi ini adalah sebagai berikut:
-

Mencari Celah Keamanan terhadap XSS.

-

Mencari Celah Keamanan terhadap SQL Injection.

-

Mencari Celah Keamanan terhadap RFI. dan

-

Username Enumeration

7|Page

Teknik Informatika UMM Angkatan 2011
[Type the document title]
Namun disini kami hanya membahas mengenai SQL Injection.
Fungsi scanning SQL Injection dimulai dengan pengguna memasukkan alamat sebuah
situs web. Aplikasi akan memulai proses crawling situs web yang menjadi masukan,
kemudian menginjeksikan script SQL Injection. Aplikasi akan menentukan apakah
terdapat celah keamanan yang rentan terhadap serangan SQL Injection dalam situs
web yang menjadi masukan.
D. Diagram Alir Aplikasi
Diagram alir dari aplikasi SQL Injection Scanner.

8|Page

Teknik Informatika UMM Angkatan 2011
[Type the document title]
III. IMPLEMENTASI
1. Implementasi Fitur Pencarian Celah Keamanan terhadap SQL Injection
Lapisan logika pada fitur ini diimplementasikan di dalam class EvaluatorSQL. Saat
fitur ini dijalankan, aplikasi mengeksekusi fungsi cari_link pada dengan parameter
sebuah URL untuk memulai proses crawling tahap pertama, dilanjutkan dengan fungsi
isi_semua_link untuk melakukan crawling tahap kedua. Kemudian aplikasi akan
menginjeksikan script SQL Injection ke dalam link yang telah didapatkan dengan
menggunakan fungsi replace_param_sql. Dilanjutkan dengan fungsi search_form dan
search_post_form untuk mendapatkan dan menginjeksi form yang terdapat pada
URL. Fungsi terakhir yang dijalankan adalah fungsi eval untuk menentukan
apakah suatu URL memiliki celah keamanan terhadap SQL Injection atau tidak.
IV. UJI COBA DAN EVALUASI
Uji Coba Pencarian Celah Keamanan terhadap SQL Injection .
Uji coba ini dilakukan dengan dengan cara memasukkan sebuah URL ke dalam
textbox pada antarmuka aplikasi, kemudian menekan tombol scan. Aplikasi akan
memulai proses pencarian celah keamanan terhadap SQL Injection.
Setelah proses selesai tekan tombol report untuk menampilkan hasil pencarian celah
keamanan.

9|Page

Teknik Informatika UMM Angkatan 2011
[Type the document title]

Untuk membuktikan bahwa aplikasi telah berjalan sebagaimana mestinya, maka
dilakukan pengecekan secara manual terhadap link yang dinyatakan memiliki celah
keamanan oleh aplikasi. Parameter keberhasilan uji coba ini adalah pada saat dilakukan
pengecekan secara manual, link yang dinyatakan vulnerable oleh aplikasi valid.
Proses pencarian bisa dilihat pada Gambar 9, sementara hasil pengujian manual
bisa dilihat pada Gambar 10.

Gambar 10. Pengujian Manual SQL Injection
Ada juga sebuah contoh sederhana dari sebuah aplikasi sbb :
Untuk melakukan SQL Injection sederhana, ada beberapa hal yang harus dipahami
oleh seorang penyusup, diantaranya adalah penggunaan query untuk mysql, penggunaan
karakter khusus, form, dll. Dengan menggabungkan semua pengetahuan tentang query
database, maka seseorang bisa melakukan SQL Injection terhadap suatu aplikasi web.
2. ByPass Halaman Login
Halaman login adalah halaman yang sering menjadi sasaran para penyusup. Hal ini
karena halaman login merupakan pintu untuk masuk ke halaman administrator yang
bisa mengelola seluruh aplikasi web. Beberapa programmer terkadang lalai dalam
menerapkan keamanan untuk halaman loginnya sehingga bisa ditembus dengan mudah.
Sebagai contoh, sebuah halaman login dibuat tanpa menggunakan standar
pengamanan apapun terhadap serangan SQL Injection.

Gambar 1.1 – Halaman Login
10 | P a g e

Teknik Informatika UMM Angkatan 2011
[Type the document title]
Dengan memasukan karakter injeksi sederhana, maka form halaman login bisa
ditembus tanpa harus memiliki account. Karakter yang sering digunakan adalah (' or
1=1--).

Gambar 1.2 – Halaman Login Bisa Ditembus Tanpa Memiliki Username
Hal tersebut terjadi karena form login tersebut dicek dengan menggunakan perintah
"SELECT * FROM user WHERE username = '$username'

AND password =

'$password'"
Sehingga jika variabel username diberi input (' or 1=1--), maka query SQLnya akan
menjadi
"SELECT * FROM user WHERE username = '' or 1=1--' AND password = ''"
Pernyataan 1=1 akan membuat query tersebut selalu mengembalikan nilai TRUE
untuk pernyataan tersebut. Karakter double sign setelah username akan membuat
pemeriksaan terhadap password akan diabaikan sehingga penyusup tidak perlu
memasukan password.
3. Pencegahan SQL Injection
Pencegahan serangan dengan SQL Injection bisa dilakukan dengan cara yang
sederhana maupun dengan cara yang rumit. Beberapa cara untuk mencegah atau
menanggulangi penyusup yang menggunakan teknik SQL Injection antara lain yaitu
dengan: Menghilangkan tampilan error program saat aplikasi web sedang berjalan.
Tampilan informasi error syntak hanyalah untuk developer aplikasi, bukan untuk
konsumsi publik. Pada php, pesan error akan ditampilkan pada browser, untuk
menghilangkannya cukup gunakan karakter @ sebelum pernyataan. Misalnya pada baris
perintah
11 | P a g e

Teknik Informatika UMM Angkatan 2011
[Type the document title]
$koneksi = mysql_connect("localhost", "root", "");
Jika terdapat kesalahan saat menuliskan nama host menjadi
$koneksi = mysql_connect("localhosta", "root", "");
Maka akan ditampilkan pesan kesalahan seperti ini.

Gambar 1.2 – Tampilan Error Pada Browser
Pesan kesalahan semacam ini akan menjadi bahan untuk dieksploitasi penyerang.
Untuk menghilangkan tampilan pesan kesalahan seperti diatas, cukup gunakan karakter
@ sebelum deklarasi variabel koneksi.
@$koneksi = mysql_connect("localhosta", "root", "");

Sehingga pesan error tidak akan ditampilkan.
Gambar 3. 1 – Pesan Error Tidak Ditampilkan Di Browser
12 | P a g e

Teknik Informatika UMM Angkatan 2011
[Type the document title]
Jika ingin menampilkan pesan error, gunakan pesan error buatan sendiri dengan
bahasa yang sederhana.
if(@mysql_connect("localhosta", "root", "")){

echo "Koneksi Database Berhasil";

} else {
echo "Koneksi Database Gagal";}
Dengan menggunakan pesan error yang dibuat sendiri, akan menghindarkan browser
menampilkan hal – hal yang tidak perlu.

Gambar 3. 2 – Tampilan Error Custom
Membatasi dan memfilter input pada form, terutama pada form – form yang sensitif
terhadap keamanan aplikasi. Misalnya form login, form pendaftaran, dll. Pada html,
pembatasan panjang karakter input suatu form dilakukan dengan cara menambahkan
parameter “maxsize” pada tag “<input>”.
<input type=”text” name=”username” maxlength=”15” />
Filter terlebih dahulu data inputan baik dari form maupun dari URL, baik dengan
method POST maupun dengan method GET. Hal ini untuk menjamin bahwa user tidak
menginputkan karakter yang tidak lazim. Pada PHP, ada berbagai cara untuk menyaring
inputan dari pengguna. Beberapa diantaranya adalah:
Mengecek panjang string dengan membuat fungsi cek panjang inputan
function checkLength($value, $maxLength, $minLength = 0){
if (!(strlen($value) > $maxLength) && !(strlen($value) < $minLength)) {
return $value;
13 | P a g e

Teknik Informatika UMM Angkatan 2011
[Type the document title]
} else { return false; }}
Menggunakan Escape String. Fungsi mysql_real_escape_string akan membuat php
mengkonverskan beberapa karakter dengan menambahkan karakter “” sebelum
karakter tertentu untuk mencegah injeksi dari form/URL
$username = $_POST['username'];
$username = mysql_real_escape_string($username);
Menggunakan fungsi string replace. Fungsi str_replace akan menggantikan
karakter/kalimat tertentu dengan karakter/kalimat yang sudah didefinisikan.
$vowels = array("'", "--");
$replacer = "";
$teks = "It's my time now--";
$teks = str_replace($vowels, $replacer, $teks);
Jika perlu, gunakan fungsi untuk mengecek apakah suatu nilai integer yang
dimasukan (dari URL maupun Form) terutama untuk halaman yang menggunakan
id. Hal ini untuk mencegah SQL Injection yang menghasilkan tampilan error.
$id = $_GET[„id‟];
if($id < 0){

$id = $id * (-1); }

Hindari menggunakan id untuk merujuk suatu alamat tertentu, baik dalam link
maupun dalam URL. Hal ini untuk mencegah eksploitasi database dengan
menggunakan kolom id pada tabel tertentu. Jika ingin menggunakan id, gunakan
javascript dan ajax untuk menyembunyikan proses dan menghilangkan id dari
alamat URL.
<input type=”Button” onclick=‟goToPage(„.$page.‟);‟ />
Gunakan kalimat maupun string yang irasional dan sulit mengejanya, hal ini untuk
mempersulit penyusup dalam mencari dan menebak struktur database dari aplikasi.
Misalnya tabel “user”, akan lebih baik jika dituliskan dalam bentuk “us3r”.
Meskipun akan mempersulit dalam pembangunan aplikasi, tetapi cara ini bisa
efektif untuk mencegah injeksi.
3. Kasus – Kasus SQL Injection

14 | P a g e

Teknik Informatika UMM Angkatan 2011
[Type the document title]
Kasus SQL Injection seringkali ditemui pada aplikasi website yang tidak memiliki
sistem keamanan untuk memasukan isian pada form maupun alamat URL . Beberapa
kasus pencurian data besar yang dilakukan melalui teknik SQL Injection diantaranya:
1. Pada 1 Oktober 2012, sekelompok hacker yang menyebut diri mereka “The Ghost
Shell Team” menyebarkan catatan pribadi dari mahasiswa, dosen, karyawan dan
alumni dari 53 universitas termasuk Harvard, Princeton, Stanford, Cornell, Johns
Hopkins dan University of Zurich ke pastebin.com.
2. Pada Juli 2012, sekelompok hacker berhasil mencuri 450.000 data pengguna
Yahoo, termasuk username dan passwordnya. Data tersebut disimpan dalam plain
text dan didapatkan dengan cara melakukan SQL Injection pada salah satu kanal
layanan Yahoo yaitu Yahoo Voice.
3. Pada saat pemilu Swedia tanggal 19 September 2010, seorang pemilih menghack
sistem pemilu dengan menuliskan kode injeksi pada saat sedang melakukan voting.
4. Dan yang paling terkenal di dalam negeri adalah pada tahun 2004, saat seorang
hacker yang menyebut dirinya Xnuxer berhasil masuk dan mengacak – acak
konfigurasi tabel pada website Komisi Pemilihan Umum seharga 125 milyar
Rupiah. Dengan menggunakan SQL Injection, hacker tersebut merubah nama dari
partai peserta pemilu dan perolehan jumlah suaranya.

V. KESIMPULAN
Meskipun tergolong teknik lama, tetapi penggunaan SQL Injection untuk
mendapatkan hak akses administrator terhadap suatu aplikasi web masih populer. Hal
ini karena tidak sedikit programmer yang ceroboh dengan membiarkan karakter –
karakter asing diinputkan kedalam query sehingga menghasilkan lubang keamanan.
Dengan sedikit tambahan kode, bisa dilakukan proteksi keamanan terhadap aplikasi web
yang dibuat sehingga memperkecil resiko kerusakan pada aplikasi karena ulah penyusup
yang menggunakan teknik SQL Injection. Proses crawling dilakukan dengan membaca
link yang terdapat pada suatu halaman web, kemudian menyimpannya ke dalam
daftar link. Proses pembacaan dilakukan sedalam 2 tingkat.

15 | P a g e

Teknik Informatika UMM Angkatan 2011
[Type the document title]
VI. DAFTAR PUSTAKA
[1] Jovan, FM.2006.Pembobol Kartu Kredit.Media Kita:
[2] Malik, Jaja Jamaludin.2009.Best Tool Hacking & Recovery Password.Penerbit
Andi:Yogyakarta.
[3] Prasetyo, Didik Dwi.2006.101 Tip dan Trik Pemrograman PHP.Elex Media
Komputindo:Jakarta.
[4] Zam, Efvy.2012.SQL Injection, Jurus Menembus Keamanan Situs Web Paling
Berbahaya.Elex Media Komputindo:Jakarta.
[5] http://preview.detik.com/detiknews/read/2004/04/18/062225/127975/10/setelahdihack-data-hasil-pemilu-tidak-diupdate-12-jam diakses pada 1 November 2012
[6] http://www.cbsnews.com/8301-501465_162-57470956-501465/yahoo-reportedlyhacked-is-your-account-safe/ diakses pada 1 November 2012
[7] http://www.zdnet.com/450000-user-passwords-leaked-in-yahoo-breach7000000772/ diakses pada 1 November 2012
[8] http://www.bbc.co.uk/news/technology-11711478 diakses pada 1 November 2012
[9] http://alicebobandmallory.com/articles/2010/09/23/did-little-bobby-tables-migrateto-sweden diakses pada 1 November 2012
[10] Barnett, R. Web Hacking Incident Database [Internet]. 2011 [diperbaharui
pada April 2012; disitat pada 23 September 2011].
[11].http://projects.webappsec.org/w/page/13246995/Web-Hacking-Incident
Database#nbspTopAttackMethodsAllEntries.
[12] Siddharth, S. Doshi, P. Five Common Web Application Vulnerabilities [Internet].
2010 [diperbaharui pada 2 November 2010; disitat pada 23 September 2011].
[13]http://www.symantec.com/connect/articles/five-common-web-application-vulnerabilities.
[14] Clarke, Justin. SQL Injection Attacks and Defense. United States of America : Syngress
Publishing, Inc, 2009.
[15] http://isjd.pdii.lipi.go.id/index.php/Search.html?act=tampil&id=42368&idc=25
[16] http://journal.umsida.ac.id/files/Sumarno%20Rev.pdf
[17]

-

-

16 | P a g e

Teknik Informatika UMM Angkatan 2011

Más contenido relacionado

Destacado

Destacado (6)

Mis2013 chapter 5 - teknologi internet
Mis2013   chapter 5 - teknologi internetMis2013   chapter 5 - teknologi internet
Mis2013 chapter 5 - teknologi internet
 
Laporan
LaporanLaporan
Laporan
 
web-security
web-securityweb-security
web-security
 
Ppt on sql injection
Ppt on sql injectionPpt on sql injection
Ppt on sql injection
 
SQL Injection
SQL Injection SQL Injection
SQL Injection
 
Sql injection
Sql injectionSql injection
Sql injection
 

Similar a Jurnal kj

Extreme Programming adalah salah satu dari pendekatan agile software developm...
Extreme Programming adalah salah satu dari pendekatan agile software developm...Extreme Programming adalah salah satu dari pendekatan agile software developm...
Extreme Programming adalah salah satu dari pendekatan agile software developm...triayuk
 
SQL Injection dan XSS
SQL Injection dan XSSSQL Injection dan XSS
SQL Injection dan XSSYode Arliando
 
PELANGGARAN KODE ETIK BIDANG TI
PELANGGARAN KODE ETIK BIDANG TIPELANGGARAN KODE ETIK BIDANG TI
PELANGGARAN KODE ETIK BIDANG TIBrader Kampus
 
Tugas keamanan sistem informasi4
Tugas keamanan sistem informasi4Tugas keamanan sistem informasi4
Tugas keamanan sistem informasi4James Montolalu
 
PUBLISH JURNAL MARZUKI HASIBUAN.pdf
PUBLISH JURNAL MARZUKI HASIBUAN.pdfPUBLISH JURNAL MARZUKI HASIBUAN.pdf
PUBLISH JURNAL MARZUKI HASIBUAN.pdfMarzuki Hasibuan
 
Seminar and Workshop Computer Security, BPPTIK Kominfo
Seminar and Workshop Computer Security, BPPTIK KominfoSeminar and Workshop Computer Security, BPPTIK Kominfo
Seminar and Workshop Computer Security, BPPTIK KominfoDigit Oktavianto
 
Basic Web Exploit Development
Basic Web Exploit DevelopmentBasic Web Exploit Development
Basic Web Exploit DevelopmentRiswanda N.S
 
Penetration tool berbasis sistem terdistribusi untuk analisa vulnerability pa...
Penetration tool berbasis sistem terdistribusi untuk analisa vulnerability pa...Penetration tool berbasis sistem terdistribusi untuk analisa vulnerability pa...
Penetration tool berbasis sistem terdistribusi untuk analisa vulnerability pa...idsecconf
 
Dasar Keamanan Jaringan Komputer
Dasar Keamanan Jaringan KomputerDasar Keamanan Jaringan Komputer
Dasar Keamanan Jaringan KomputerSelamet Hariadi
 
web security informasi informasi mengenai internet security
web security informasi informasi mengenai internet securityweb security informasi informasi mengenai internet security
web security informasi informasi mengenai internet securityUch Ta
 
6. si &amp; pi. anggri afriani, prof. dr, ir hapzi ali, mm, cma konsep dasar ...
6. si &amp; pi. anggri afriani, prof. dr, ir hapzi ali, mm, cma konsep dasar ...6. si &amp; pi. anggri afriani, prof. dr, ir hapzi ali, mm, cma konsep dasar ...
6. si &amp; pi. anggri afriani, prof. dr, ir hapzi ali, mm, cma konsep dasar ...Anggriafriani
 
2, si &amp; pi,mislia, hapzi ali, si definisi dan jenis penyerangan dan penya...
2, si &amp; pi,mislia, hapzi ali, si definisi dan jenis penyerangan dan penya...2, si &amp; pi,mislia, hapzi ali, si definisi dan jenis penyerangan dan penya...
2, si &amp; pi,mislia, hapzi ali, si definisi dan jenis penyerangan dan penya...Mislia lia
 
Solusi network security dari ancaman sql injection dan denial of service
Solusi network security dari ancaman sql injection dan denial of service Solusi network security dari ancaman sql injection dan denial of service
Solusi network security dari ancaman sql injection dan denial of service SeljaSampeRante
 
Sim, ester, hapzi ali, keamanan sistem informasi, universitas mercu buana, 20...
Sim, ester, hapzi ali, keamanan sistem informasi, universitas mercu buana, 20...Sim, ester, hapzi ali, keamanan sistem informasi, universitas mercu buana, 20...
Sim, ester, hapzi ali, keamanan sistem informasi, universitas mercu buana, 20...EsTer Rajagukguk
 
Investigasi Serangan Terhadap Website Pada Web Server Apache
Investigasi Serangan Terhadap Website Pada Web Server ApacheInvestigasi Serangan Terhadap Website Pada Web Server Apache
Investigasi Serangan Terhadap Website Pada Web Server ApacheMark Thalib
 
Undetectable Backdoor: The Art of Malicious Software and Social Engineering -...
Undetectable Backdoor: The Art of Malicious Software and Social Engineering -...Undetectable Backdoor: The Art of Malicious Software and Social Engineering -...
Undetectable Backdoor: The Art of Malicious Software and Social Engineering -...idsecconf
 

Similar a Jurnal kj (20)

Extreme Programming adalah salah satu dari pendekatan agile software developm...
Extreme Programming adalah salah satu dari pendekatan agile software developm...Extreme Programming adalah salah satu dari pendekatan agile software developm...
Extreme Programming adalah salah satu dari pendekatan agile software developm...
 
SQL Injection dan XSS
SQL Injection dan XSSSQL Injection dan XSS
SQL Injection dan XSS
 
PELANGGARAN KODE ETIK BIDANG TI
PELANGGARAN KODE ETIK BIDANG TIPELANGGARAN KODE ETIK BIDANG TI
PELANGGARAN KODE ETIK BIDANG TI
 
Keamanan komputer - Dasar XSS
Keamanan komputer - Dasar XSSKeamanan komputer - Dasar XSS
Keamanan komputer - Dasar XSS
 
Tugas keamanan sistem informasi4
Tugas keamanan sistem informasi4Tugas keamanan sistem informasi4
Tugas keamanan sistem informasi4
 
PUBLISH JURNAL MARZUKI HASIBUAN.pdf
PUBLISH JURNAL MARZUKI HASIBUAN.pdfPUBLISH JURNAL MARZUKI HASIBUAN.pdf
PUBLISH JURNAL MARZUKI HASIBUAN.pdf
 
Tugas kkm
Tugas kkmTugas kkm
Tugas kkm
 
Seminar and Workshop Computer Security, BPPTIK Kominfo
Seminar and Workshop Computer Security, BPPTIK KominfoSeminar and Workshop Computer Security, BPPTIK Kominfo
Seminar and Workshop Computer Security, BPPTIK Kominfo
 
Basic Web Exploit Development
Basic Web Exploit DevelopmentBasic Web Exploit Development
Basic Web Exploit Development
 
Penetration tool berbasis sistem terdistribusi untuk analisa vulnerability pa...
Penetration tool berbasis sistem terdistribusi untuk analisa vulnerability pa...Penetration tool berbasis sistem terdistribusi untuk analisa vulnerability pa...
Penetration tool berbasis sistem terdistribusi untuk analisa vulnerability pa...
 
Dasar Keamanan Jaringan Komputer
Dasar Keamanan Jaringan KomputerDasar Keamanan Jaringan Komputer
Dasar Keamanan Jaringan Komputer
 
Presentation tkj
Presentation tkj Presentation tkj
Presentation tkj
 
web security informasi informasi mengenai internet security
web security informasi informasi mengenai internet securityweb security informasi informasi mengenai internet security
web security informasi informasi mengenai internet security
 
6. si &amp; pi. anggri afriani, prof. dr, ir hapzi ali, mm, cma konsep dasar ...
6. si &amp; pi. anggri afriani, prof. dr, ir hapzi ali, mm, cma konsep dasar ...6. si &amp; pi. anggri afriani, prof. dr, ir hapzi ali, mm, cma konsep dasar ...
6. si &amp; pi. anggri afriani, prof. dr, ir hapzi ali, mm, cma konsep dasar ...
 
2, si &amp; pi,mislia, hapzi ali, si definisi dan jenis penyerangan dan penya...
2, si &amp; pi,mislia, hapzi ali, si definisi dan jenis penyerangan dan penya...2, si &amp; pi,mislia, hapzi ali, si definisi dan jenis penyerangan dan penya...
2, si &amp; pi,mislia, hapzi ali, si definisi dan jenis penyerangan dan penya...
 
Ayu
AyuAyu
Ayu
 
Solusi network security dari ancaman sql injection dan denial of service
Solusi network security dari ancaman sql injection dan denial of service Solusi network security dari ancaman sql injection dan denial of service
Solusi network security dari ancaman sql injection dan denial of service
 
Sim, ester, hapzi ali, keamanan sistem informasi, universitas mercu buana, 20...
Sim, ester, hapzi ali, keamanan sistem informasi, universitas mercu buana, 20...Sim, ester, hapzi ali, keamanan sistem informasi, universitas mercu buana, 20...
Sim, ester, hapzi ali, keamanan sistem informasi, universitas mercu buana, 20...
 
Investigasi Serangan Terhadap Website Pada Web Server Apache
Investigasi Serangan Terhadap Website Pada Web Server ApacheInvestigasi Serangan Terhadap Website Pada Web Server Apache
Investigasi Serangan Terhadap Website Pada Web Server Apache
 
Undetectable Backdoor: The Art of Malicious Software and Social Engineering -...
Undetectable Backdoor: The Art of Malicious Software and Social Engineering -...Undetectable Backdoor: The Art of Malicious Software and Social Engineering -...
Undetectable Backdoor: The Art of Malicious Software and Social Engineering -...
 

Jurnal kj

  • 1. [Type the document title] ANALISA KEAMANAN TERHADAP SQL INJECTION PADA WEB SERVICE Nelly shofiyani.. 1 dan Rizki Putri Yanda 2 1,2. Fakultas Teknik Universitas Muhammadiyah Malang Email: Nellykawaii93@gmail.com, rizkiputriyanda@gmail.com Abstrak Seiring dengan pesatnya perkembangan ilmu pengetahuan dan teknologi maka semakin tinggi juga tingkat kebutuhan manusia terhadap informasi dan komunikasi. Sistem informasi berbasis Web sangat rentan terhadap serangan. Penyerang (attacker) melakukan serangan ke sejumlah Website dengan berbagai alasan. Keamanan aplikasi Website perlu diteliti lebih lanjut karena keamanan sistem informasi yang berbasis Website sangat penting. Penelitian ini bertujuan untuk membuat aplikasi Website yang tahan dari serangan SQL Injection. Injeksi SQL atau SQL Injection memiliki makna dan arti yaitu sebuah teknik yang menyalahgunakan sebuah celah keamanan yang terjadi dalam lapisan basis data sebuah aplikasi . SQL injection adalah jenis aksi hacking pada keamanan komputer di mana seorang penyerang bisa mendapatkan akses ke basis data di dalam sistem. Sedangkan Web Service itu sendiri merupakan sistem perangkat lunak yang didesain untuk mendukung interoperabilitas interaksi antar mesin dalam suatu jaringan (network). Kebanyakan penyerang menggunakan tools SQL Injection yaitu Havij dan SQLMap sebagai tool otomatis untuk memanfaatkan celah keamanan pada suatu website. Dan terdapat 4 metode serangan, yaitu : SQL Injection, XSS (CrossSite Scripting), RFI (Remote File Inclusion), dan Username Enumeration ini kami lebih focus terhadap jenis serangan pada SQL Injection. Tujuan tugas akhir ini adalah membangun aplikasi yang bisa mendeteksi kelemahan dari aplikasi web terhadap SQL Injection, untuk meningkatkan keamanan pada web service dari serangan SQL Injection dkk. Kata Kunci : Sql Injection , Web Service . 1|Page Teknik Informatika UMM Angkatan 2011
  • 2. [Type the document title] Abstract Along with the rapid development of science and technology the higher the level of human needs to information and communication . Web -based information systems are highly vulnerable to attack . The attacker ( the attacker ) to attack a website with a variety of reasons . Website application security needs to be further investigated because of the security -based information systems is very important website . This study aims to create a website that is resistant applications from SQL Injection attacks . SQL injection or SQL Injection has meaning and significance is a technique that is abusing a security gap that occurs in the database layer of an application . SQL injection is a type of hacking on computer security in which an attacker can gain access to the database in the system . While the Web Service itself is a software system designed to support interaction interoperability between machines in a network (network ) . Most attackers use tools is Havij SQL Injection and Mapper as an automatic tool to exploit vulnerabilities on a website. And for 4 methods of attack,namely:SQLInjection,XSS(Cross-Site Scripting),RFI(RemoteFile Inclusion),and Username Enumeration we more focus on the types of SQL injection attacks. The purpose of this thesis is to build an application that can detect the weakness of web applications against SQL Injection, to improve the security of web service from SQL Injection attacks et al. Keywords : Sql Injection , Web Service . 2|Page Teknik Informatika UMM Angkatan 2011
  • 3. [Type the document title] 1.PENDAHULUAN SQL injection adalah salah satu jenis penyerangan yang mengizinkan user tidak sah (penyerang) untuk mengakses database server. Pada dasarnya, serangan ini difasilitasi oleh kode program itu sendiri. Tekniknya, penyerang mencoba memasukan query (melalui field atau URL) yang akan menyebabkan database serber menggenerate query SQL yang tidak valid. Kejahatan di dunia teknologi dan informasi terutama pada aplikasi web semakin marak terjadi. Salah satu faktor yang menyebabkan kurangnya tingkat keamanan pada aplikasi web adalah kesalahan penulisan kode program. Kesalahan penulisan kode program dalam pembuatan aplikasi web adalah hal yang sering dimanfaatkan oleh para penyerang, hal ini mengakibatkan rata-rata aplikasi web bisa diserang dengan memanfaatkan kesalahan ini. Kelemahan-kelemahan yang sering dimanfaatkan oleh para penyerang diantaranya adalah kelemahan terhadap SQL Injection, XSS, Remote File Inclusion, dan Username Enumeration. Aplikasi web tidak terlepas dari penggunaan database sebagai sumber data untuk membuat tampilan web yang dinamis. Dalam dunia pengembangan website, pengamanan terhadap sebuah website seringkali luput dari benak pengembang web. Pada kenyataanya, mencari suatu bug atau kelemahan keamanan dan melakukan audit terhadap suatu website cukup sulit untuk dilakukan. Melihat kenyataan tersebut, para pengembang ataupun praktisi keamanan web mengaplikasikan berbagai teknik keamanan. Setiap pengembang website harus memperbaiki pengamanan terhadap website yang dibangunnya. Pengamanan harus diterapkan sejak awal karena penerapannya akan sangat sulit jika telah terjadi masalah di kemudian hari. Akan tetapi, hal tersebut tidak menjamin website tersebut aman 100% karena selalu terdapat celahcelah yang harus diminimalisir jumlahnya. Salah satu faktor yang menyebabkan kurangnya tingkat keamanan pada aplikasi web adalah kesalahan penulisan kode program. Kesalahan penulisan kode program dalam pembuatan aplikasi web adalah hal yang sering dimanfaatkan oleh para penyerang, hal ini mengakibatkan rata-rata aplikasi web bisa diserang dengan memanfaatkan kesalahan ini. Kelemahankelemahan penulisan kode yang sering dimanfaatkan oleh para penyerang untuk menyerang korbannya diantaranya adalah SQL Injection dan XSS. Seperti ditunjukan pada diagram yang dirilis oleh webappsec.org (diperbaharui terakhir 3|Page Teknik Informatika UMM Angkatan 2011
  • 4. [Type the document title] Juli 2011) pada Gambar 1 bahwa SQL Injection (20%) dan XSS (9,9%) merupakan dua metode serangan yang sering digunakan [1]. Gambar 1. Diagram Serangan pada Aplikasi Web Selain 2 metode yang telah disebutkan, terdapat pula metode-metode lain yang bisa dilakukan untuk menyerang suatu aplikasi web, diantaranya adalah : Username Enumeration, dan Remote File Inclusion [2]. Apabila celah-celah keamanan ini tidak diatasi dengan baik dan benar, maka bisa menimbulkan dampak buruk pada aplikasi web. Salah satu cara untuk mempermudah pendeteksian adanya kelemahan-kelemahan pada aplikasi web/website adalah dengan menggunakan aplikasi pencari celah keamanan. Aplikasi pencari celah keamanan ini dimaksudkan untuk mendeteksi secara otomatis apakah suatu aplikasi web memiliki kerentanan terhadap suatu serangan. Dengan menggunakan aplikasi seperti ini maka baik administrator maupun pengembang aplikasi web dapat mengetahui dimana letak kerentanan pada aplikasi web mereka. Hal ini tentunya akan memudahkan dalam upaya meningkatkan keamanan aplikasi web. 4|Page Teknik Informatika UMM Angkatan 2011
  • 5. [Type the document title] SQL injection adalah salah satu metode penyusupan administrasi website yang tergolong mudah untuk dipelajari. Selain itu, SQL Injection juga memiliki beberapa kelebihan dibandingkan metode hacking lainnya, diantaranya adalah: 1. SQL Injection tidak memerlukan aplikasi khusus, pelaku tinggal memanipulasi String yang akan menjadi inputan bagi suatu form, atau memanipulasi alamat URL suatu situs. 2. SQL Injection tidak akan meninggalkan jejak kecuali dilakukan pencatatan aktivitas setiap query ke tabel. 3. Tidak mensyaratkan banyak hal, seperti melakukan ping, menggunakan port tertentu, tidak terpengaruh firewall. II. TINJAUAN PUSTAKA A. SQL Injection SQL Injection adalah jenis serangan yang memungkinkan penyerang untuk memanipulasi perintah SQL melalui URL atau isian form yang dikirimkan oleh aplikasi web ke server [3]. Salah satu bentuk serangan ini dilakukan dengan menyusun perintah SQL yang memungkinkan dilakukannya login tanpa memiliki akun yang valid. Query Untuk MySQL Query yang paling sering mendapat eksploitasi adalah query login. Untuk melakukan login, biasanya setelah menerima inputan dari form, maka digunakan perintah select berdasarkan kriteria username dan passwordnya. Jika username dan password tersebut cocok, maka user tersebut bisa menggunakan session atau cookies untuk login. $username = $_POST['username']; $password = $_POST['password']; $run = mysql_query("SELECT * FROM user WHERE username = '$username' AND password = '$password'"); $jml = mysql_num_rows($run); if($jml > 0){ echo "Anda berhasil login"; } else { 5|Page Teknik Informatika UMM Angkatan 2011
  • 6. [Type the document title] echo "username atau password salah!"; SQL Injection biasanya terjadi pada website yang memiliki tingkat keamanan yang rendah. Hal ini ditandai dengan tidak memiliki suatu filter terhadap inputan tertentu, baik dari form maupun dari URL. Kecerobohan kecil semacam ini biasanya bisa dimanfaatkan oleh penyusup untuk membypass suatu halaman login misalnya dan masuk ke direktori administrator. Dalam serangan SQL Injection, penyerang mencoba memasukkan query baik melalui field atau URL yang menyebabkan database server menghasilkan query SQL yang salah. Teknik SQL Injection merupakan teknik penyerangan yang sangat sederhana, namun justru hal inilah yang sering diabaikan oleh para pengembang aplikasi web. SQL Injection dapat disebabkan karena penanganan yang buruk terhadap karakter tanda „ (petik satu), karakter --(double minus), maupun karakter-karakter lain yang menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL. Hal ini bisa mengakibatkan seorang penyerang menyisipkan perintah SQL kedalam suatu parameter maupun suatu form. Alur Sistem A. Deskripsi Umum Aplikasi yang akan dibuat dalam tugas besar ini adalah aplikasi pencari celah keamanan pada aplikasi web untuk meningkatkan keamanan terhadap website. Aplikasi ini akan memberikan informasi tentang kerentanan suatu aplikasi web terhadap serangan-serangan yang akan dilakukan dengan menggunakan empat metode berbeda. Metode penyerangan yang akan digunakan dalam aplikasi ini adalah : SQL Injection, XSS (Cross-Site Scripting), RFI(Remote File Inclusion), dan Usename Enumeration.Namun disini kami hanya mengambil metode sql Injection saja. Aplikasi ini akan menghasilkan laporan yang berisikan informasi letak celah keamanan yang terdapat pada aplikasi web yang dijadikan bahan uji. B. Arsitektur Sistem 6|Page Teknik Informatika UMM Angkatan 2011
  • 7. [Type the document title] Dalam tugas besar ini akan dirancang dan diaplikasikan sebuah aplikasi pencari celah keamanan untuk aplikasi web dimana secara garis besar memiliki arsitektur seperti diperlihatkan pada Gambar 2. Gambar 2. Arsitektur Sistem Sesuai dengan gambar 2, maka jalannya aplikasi adalah sebagai berikut: 1. Aplikasi Pencari Celah Keamanan melakukan request berupa URL ke server 2. Server memberikan respon berupa HTML 3. Aplikasi melakukan proses scan terhadap respon HTML dan menginjeksikan script injeksi. 4. Server memberikan respon berupa HTML. 5. Aplikasi melakukan proses scan terhadap respon HTML untuk mengecek hasil proses injeksi. 6. Aplikasi memberikan laporan hasil proses scan. C. Deskripsi Singkat Aplikasi Aplikasi pencari celah keamanan ini memiliki empat fitur utama yang dapat membantu untuk mencari celah keamanan yang mungkin terdapat pada suatu aplikasi web. Fiturfitur yang terdapat pada aplikasi ini adalah sebagai berikut: - Mencari Celah Keamanan terhadap XSS. - Mencari Celah Keamanan terhadap SQL Injection. - Mencari Celah Keamanan terhadap RFI. dan - Username Enumeration 7|Page Teknik Informatika UMM Angkatan 2011
  • 8. [Type the document title] Namun disini kami hanya membahas mengenai SQL Injection. Fungsi scanning SQL Injection dimulai dengan pengguna memasukkan alamat sebuah situs web. Aplikasi akan memulai proses crawling situs web yang menjadi masukan, kemudian menginjeksikan script SQL Injection. Aplikasi akan menentukan apakah terdapat celah keamanan yang rentan terhadap serangan SQL Injection dalam situs web yang menjadi masukan. D. Diagram Alir Aplikasi Diagram alir dari aplikasi SQL Injection Scanner. 8|Page Teknik Informatika UMM Angkatan 2011
  • 9. [Type the document title] III. IMPLEMENTASI 1. Implementasi Fitur Pencarian Celah Keamanan terhadap SQL Injection Lapisan logika pada fitur ini diimplementasikan di dalam class EvaluatorSQL. Saat fitur ini dijalankan, aplikasi mengeksekusi fungsi cari_link pada dengan parameter sebuah URL untuk memulai proses crawling tahap pertama, dilanjutkan dengan fungsi isi_semua_link untuk melakukan crawling tahap kedua. Kemudian aplikasi akan menginjeksikan script SQL Injection ke dalam link yang telah didapatkan dengan menggunakan fungsi replace_param_sql. Dilanjutkan dengan fungsi search_form dan search_post_form untuk mendapatkan dan menginjeksi form yang terdapat pada URL. Fungsi terakhir yang dijalankan adalah fungsi eval untuk menentukan apakah suatu URL memiliki celah keamanan terhadap SQL Injection atau tidak. IV. UJI COBA DAN EVALUASI Uji Coba Pencarian Celah Keamanan terhadap SQL Injection . Uji coba ini dilakukan dengan dengan cara memasukkan sebuah URL ke dalam textbox pada antarmuka aplikasi, kemudian menekan tombol scan. Aplikasi akan memulai proses pencarian celah keamanan terhadap SQL Injection. Setelah proses selesai tekan tombol report untuk menampilkan hasil pencarian celah keamanan. 9|Page Teknik Informatika UMM Angkatan 2011
  • 10. [Type the document title] Untuk membuktikan bahwa aplikasi telah berjalan sebagaimana mestinya, maka dilakukan pengecekan secara manual terhadap link yang dinyatakan memiliki celah keamanan oleh aplikasi. Parameter keberhasilan uji coba ini adalah pada saat dilakukan pengecekan secara manual, link yang dinyatakan vulnerable oleh aplikasi valid. Proses pencarian bisa dilihat pada Gambar 9, sementara hasil pengujian manual bisa dilihat pada Gambar 10. Gambar 10. Pengujian Manual SQL Injection Ada juga sebuah contoh sederhana dari sebuah aplikasi sbb : Untuk melakukan SQL Injection sederhana, ada beberapa hal yang harus dipahami oleh seorang penyusup, diantaranya adalah penggunaan query untuk mysql, penggunaan karakter khusus, form, dll. Dengan menggabungkan semua pengetahuan tentang query database, maka seseorang bisa melakukan SQL Injection terhadap suatu aplikasi web. 2. ByPass Halaman Login Halaman login adalah halaman yang sering menjadi sasaran para penyusup. Hal ini karena halaman login merupakan pintu untuk masuk ke halaman administrator yang bisa mengelola seluruh aplikasi web. Beberapa programmer terkadang lalai dalam menerapkan keamanan untuk halaman loginnya sehingga bisa ditembus dengan mudah. Sebagai contoh, sebuah halaman login dibuat tanpa menggunakan standar pengamanan apapun terhadap serangan SQL Injection. Gambar 1.1 – Halaman Login 10 | P a g e Teknik Informatika UMM Angkatan 2011
  • 11. [Type the document title] Dengan memasukan karakter injeksi sederhana, maka form halaman login bisa ditembus tanpa harus memiliki account. Karakter yang sering digunakan adalah (' or 1=1--). Gambar 1.2 – Halaman Login Bisa Ditembus Tanpa Memiliki Username Hal tersebut terjadi karena form login tersebut dicek dengan menggunakan perintah "SELECT * FROM user WHERE username = '$username' AND password = '$password'" Sehingga jika variabel username diberi input (' or 1=1--), maka query SQLnya akan menjadi "SELECT * FROM user WHERE username = '' or 1=1--' AND password = ''" Pernyataan 1=1 akan membuat query tersebut selalu mengembalikan nilai TRUE untuk pernyataan tersebut. Karakter double sign setelah username akan membuat pemeriksaan terhadap password akan diabaikan sehingga penyusup tidak perlu memasukan password. 3. Pencegahan SQL Injection Pencegahan serangan dengan SQL Injection bisa dilakukan dengan cara yang sederhana maupun dengan cara yang rumit. Beberapa cara untuk mencegah atau menanggulangi penyusup yang menggunakan teknik SQL Injection antara lain yaitu dengan: Menghilangkan tampilan error program saat aplikasi web sedang berjalan. Tampilan informasi error syntak hanyalah untuk developer aplikasi, bukan untuk konsumsi publik. Pada php, pesan error akan ditampilkan pada browser, untuk menghilangkannya cukup gunakan karakter @ sebelum pernyataan. Misalnya pada baris perintah 11 | P a g e Teknik Informatika UMM Angkatan 2011
  • 12. [Type the document title] $koneksi = mysql_connect("localhost", "root", ""); Jika terdapat kesalahan saat menuliskan nama host menjadi $koneksi = mysql_connect("localhosta", "root", ""); Maka akan ditampilkan pesan kesalahan seperti ini. Gambar 1.2 – Tampilan Error Pada Browser Pesan kesalahan semacam ini akan menjadi bahan untuk dieksploitasi penyerang. Untuk menghilangkan tampilan pesan kesalahan seperti diatas, cukup gunakan karakter @ sebelum deklarasi variabel koneksi. @$koneksi = mysql_connect("localhosta", "root", ""); Sehingga pesan error tidak akan ditampilkan. Gambar 3. 1 – Pesan Error Tidak Ditampilkan Di Browser 12 | P a g e Teknik Informatika UMM Angkatan 2011
  • 13. [Type the document title] Jika ingin menampilkan pesan error, gunakan pesan error buatan sendiri dengan bahasa yang sederhana. if(@mysql_connect("localhosta", "root", "")){ echo "Koneksi Database Berhasil"; } else { echo "Koneksi Database Gagal";} Dengan menggunakan pesan error yang dibuat sendiri, akan menghindarkan browser menampilkan hal – hal yang tidak perlu. Gambar 3. 2 – Tampilan Error Custom Membatasi dan memfilter input pada form, terutama pada form – form yang sensitif terhadap keamanan aplikasi. Misalnya form login, form pendaftaran, dll. Pada html, pembatasan panjang karakter input suatu form dilakukan dengan cara menambahkan parameter “maxsize” pada tag “<input>”. <input type=”text” name=”username” maxlength=”15” /> Filter terlebih dahulu data inputan baik dari form maupun dari URL, baik dengan method POST maupun dengan method GET. Hal ini untuk menjamin bahwa user tidak menginputkan karakter yang tidak lazim. Pada PHP, ada berbagai cara untuk menyaring inputan dari pengguna. Beberapa diantaranya adalah: Mengecek panjang string dengan membuat fungsi cek panjang inputan function checkLength($value, $maxLength, $minLength = 0){ if (!(strlen($value) > $maxLength) && !(strlen($value) < $minLength)) { return $value; 13 | P a g e Teknik Informatika UMM Angkatan 2011
  • 14. [Type the document title] } else { return false; }} Menggunakan Escape String. Fungsi mysql_real_escape_string akan membuat php mengkonverskan beberapa karakter dengan menambahkan karakter “” sebelum karakter tertentu untuk mencegah injeksi dari form/URL $username = $_POST['username']; $username = mysql_real_escape_string($username); Menggunakan fungsi string replace. Fungsi str_replace akan menggantikan karakter/kalimat tertentu dengan karakter/kalimat yang sudah didefinisikan. $vowels = array("'", "--"); $replacer = ""; $teks = "It's my time now--"; $teks = str_replace($vowels, $replacer, $teks); Jika perlu, gunakan fungsi untuk mengecek apakah suatu nilai integer yang dimasukan (dari URL maupun Form) terutama untuk halaman yang menggunakan id. Hal ini untuk mencegah SQL Injection yang menghasilkan tampilan error. $id = $_GET[„id‟]; if($id < 0){ $id = $id * (-1); } Hindari menggunakan id untuk merujuk suatu alamat tertentu, baik dalam link maupun dalam URL. Hal ini untuk mencegah eksploitasi database dengan menggunakan kolom id pada tabel tertentu. Jika ingin menggunakan id, gunakan javascript dan ajax untuk menyembunyikan proses dan menghilangkan id dari alamat URL. <input type=”Button” onclick=‟goToPage(„.$page.‟);‟ /> Gunakan kalimat maupun string yang irasional dan sulit mengejanya, hal ini untuk mempersulit penyusup dalam mencari dan menebak struktur database dari aplikasi. Misalnya tabel “user”, akan lebih baik jika dituliskan dalam bentuk “us3r”. Meskipun akan mempersulit dalam pembangunan aplikasi, tetapi cara ini bisa efektif untuk mencegah injeksi. 3. Kasus – Kasus SQL Injection 14 | P a g e Teknik Informatika UMM Angkatan 2011
  • 15. [Type the document title] Kasus SQL Injection seringkali ditemui pada aplikasi website yang tidak memiliki sistem keamanan untuk memasukan isian pada form maupun alamat URL . Beberapa kasus pencurian data besar yang dilakukan melalui teknik SQL Injection diantaranya: 1. Pada 1 Oktober 2012, sekelompok hacker yang menyebut diri mereka “The Ghost Shell Team” menyebarkan catatan pribadi dari mahasiswa, dosen, karyawan dan alumni dari 53 universitas termasuk Harvard, Princeton, Stanford, Cornell, Johns Hopkins dan University of Zurich ke pastebin.com. 2. Pada Juli 2012, sekelompok hacker berhasil mencuri 450.000 data pengguna Yahoo, termasuk username dan passwordnya. Data tersebut disimpan dalam plain text dan didapatkan dengan cara melakukan SQL Injection pada salah satu kanal layanan Yahoo yaitu Yahoo Voice. 3. Pada saat pemilu Swedia tanggal 19 September 2010, seorang pemilih menghack sistem pemilu dengan menuliskan kode injeksi pada saat sedang melakukan voting. 4. Dan yang paling terkenal di dalam negeri adalah pada tahun 2004, saat seorang hacker yang menyebut dirinya Xnuxer berhasil masuk dan mengacak – acak konfigurasi tabel pada website Komisi Pemilihan Umum seharga 125 milyar Rupiah. Dengan menggunakan SQL Injection, hacker tersebut merubah nama dari partai peserta pemilu dan perolehan jumlah suaranya. V. KESIMPULAN Meskipun tergolong teknik lama, tetapi penggunaan SQL Injection untuk mendapatkan hak akses administrator terhadap suatu aplikasi web masih populer. Hal ini karena tidak sedikit programmer yang ceroboh dengan membiarkan karakter – karakter asing diinputkan kedalam query sehingga menghasilkan lubang keamanan. Dengan sedikit tambahan kode, bisa dilakukan proteksi keamanan terhadap aplikasi web yang dibuat sehingga memperkecil resiko kerusakan pada aplikasi karena ulah penyusup yang menggunakan teknik SQL Injection. Proses crawling dilakukan dengan membaca link yang terdapat pada suatu halaman web, kemudian menyimpannya ke dalam daftar link. Proses pembacaan dilakukan sedalam 2 tingkat. 15 | P a g e Teknik Informatika UMM Angkatan 2011
  • 16. [Type the document title] VI. DAFTAR PUSTAKA [1] Jovan, FM.2006.Pembobol Kartu Kredit.Media Kita: [2] Malik, Jaja Jamaludin.2009.Best Tool Hacking & Recovery Password.Penerbit Andi:Yogyakarta. [3] Prasetyo, Didik Dwi.2006.101 Tip dan Trik Pemrograman PHP.Elex Media Komputindo:Jakarta. [4] Zam, Efvy.2012.SQL Injection, Jurus Menembus Keamanan Situs Web Paling Berbahaya.Elex Media Komputindo:Jakarta. [5] http://preview.detik.com/detiknews/read/2004/04/18/062225/127975/10/setelahdihack-data-hasil-pemilu-tidak-diupdate-12-jam diakses pada 1 November 2012 [6] http://www.cbsnews.com/8301-501465_162-57470956-501465/yahoo-reportedlyhacked-is-your-account-safe/ diakses pada 1 November 2012 [7] http://www.zdnet.com/450000-user-passwords-leaked-in-yahoo-breach7000000772/ diakses pada 1 November 2012 [8] http://www.bbc.co.uk/news/technology-11711478 diakses pada 1 November 2012 [9] http://alicebobandmallory.com/articles/2010/09/23/did-little-bobby-tables-migrateto-sweden diakses pada 1 November 2012 [10] Barnett, R. Web Hacking Incident Database [Internet]. 2011 [diperbaharui pada April 2012; disitat pada 23 September 2011]. [11].http://projects.webappsec.org/w/page/13246995/Web-Hacking-Incident Database#nbspTopAttackMethodsAllEntries. [12] Siddharth, S. Doshi, P. Five Common Web Application Vulnerabilities [Internet]. 2010 [diperbaharui pada 2 November 2010; disitat pada 23 September 2011]. [13]http://www.symantec.com/connect/articles/five-common-web-application-vulnerabilities. [14] Clarke, Justin. SQL Injection Attacks and Defense. United States of America : Syngress Publishing, Inc, 2009. [15] http://isjd.pdii.lipi.go.id/index.php/Search.html?act=tampil&id=42368&idc=25 [16] http://journal.umsida.ac.id/files/Sumarno%20Rev.pdf [17] - - 16 | P a g e Teknik Informatika UMM Angkatan 2011