analisis keamanan otentikasi dan basis data pada web simple

advertisement
UNIVERSITAS INDONESIA
ANALISIS KEAMANAN OTENTIKASI DAN BASIS DATA
PADA WEB SIMPLE-O MENGGUNAKAN SQL INJECTION
SKRIPSI
ALIFANDI YUDISTIRA
0806339023
FAKULTAS TEKNIK
PROGRAM STUDI TEKNIK KOMPUTER
DEPOK
JUNI 2012
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
UNIVERSITAS INDONESIA
ANALISIS KEAMANAN OTENTIKASI DAN BASIS DATA
PADA WEB SIMPLE-O MENGGUNAKAN SQL INJECTION
SKRIPSI
Diajukan sebagai salah satu syarat memperoleh gelar sarjana
ALIFANDI YUDISTIRA
0806339023
FAKULTAS TEKNIK
PROGRAM STUDI TEKNIK KOMPUTER
DEPOK
JUNI 2012
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
ii
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
iii
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
KATA PENGANTAR
Puji syukur saya panjatkan kepada Allah SWT, karena atas berkat dan
rahmat-Nya, proses penulisan skripsi ini dapat terselesaikan. Penulisan skripsi ini
dilakukan dalam rangka memenuhi persyaratan dari mata kuliah Skripsi yang
terdapat dalam kurikulum program studi Teknik Komputer Universitas Indonesia.
Saya menyadari bahwa tanpa bantuan dan bimbingan dari berbagai pihak, dari
masa perkuliahan sampai dengan masa penyusunan skripsi, sangatlah sulit bagi
saya untuk menyelesaikan skripsi ini. Oleh karena itu, saya mengucapkan terima
kasih kepada:
1. Dr. Ir. Anak Agung Putri Ratna M.Eng., selaku dosen pembimbing yang telah
menyediakan waktu, tenaga, dan pikiran dalam mengarahkan dan membantu
saya menyusun skripsi ini.
2. Jumantoro S.Sos dan Diah Kurnia Rahayu, orang tua saya, yang telah
mendidik dan membesarkan saya sampai saat ini. Tanpa beliau berdua tidak
mungkin saya bisa menjadi seperti sekarang. Begitu banyak kasih sayang,
pengorbanan, dukungan dan doa yang telah mereka berikan kepada saya.
3. Bianda Talitha Utari Ayu dan Shania Mentari Ayu, kedua adik saya, yang tak
henti-hentinya memberikan dukungan dan doa untuk kesuksesan saya.
4. Fath Fatheya yang selalu memberikan dukungan dan doa serta tidak pernah
bosan menjadi tempat saya untuk berbagi masalah yang saya hadapi di dalam
dunia perkuliahan.
5. Adani Arisy yang selalu menjadi tempat bagi saya untuk bertanya masalah di
bidang komputer. Tanpa bantuan beliau, saya tidak mungkin berhasil
menyelesaikan skripsi ini.
6. Ika Nurfitriani Listyanti S.Psi yang telah membantu saya dalam meningkatkan
self-esteem dan mengurangi distress psikologis melalui Interpersonal
Psychoherapy (IPT) yang beliau berikan.
7. Teman-teman kosan Pondok Bunayya, baik yang masih di bunayya Maman,
Irvan, Koko, Gustav, Ello, Emi, Atha, Amal, Iwan, Andreas, Fitri maupun
yang sudah tidak di bunayya lagi Riko, Erik, Shasha, Mei, Abe, Faad, Efriko
dan yang tidak dapat saya sebutkan semuanya. Terima kasih telah menjadi
iv
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
teman yang selalu memberikan hiburan di setiap saat, teman nonton film
bareng, teman main futsal, teman main bulutangkis, teman nonton World Cup
2010, teman nonton EPL, teman maen dota dan teman berjuang kuliah selama
4 tahun di Bunayya.
8. Aryanto Hamdany alias Koko, teman satu kosan di Bunayya dan teman
seperjuangan di jurusan Teknik Komputer UI yang saat ini sedang berjuang
dalam penyembuhan. Semoga beliau dapat sembuh dan menyelesaikan
kuliahnya.
9. Ahmad Shaugi selaku teman satu bimbingan yang telah membantu saya
menentukan topik skripsi dan teman menghadapi masalah skripsi bersamasama.
10. Asep Sunandar selaku teman satu bimbingan dan teman satu daerah dari
Lampung yang selalu menjadi teman dalam berjuang di Tenik Komputer UI.
11. Seluruh teman-teman Departemen Teknik Elektro Fakultas Teknik Universitas
Indonesia angkatan 2008 yang telah menjadi teman seperjuangan saat kuliah
selama 4 tahun. Semoga kita semua tetap satu dalam elkom 08. Elektro!
Elektro! Elektro!
Akhir kata, saya berharap agar Allah SWT berkenan membalas segala
kebaikan dari semua pihak yang telah membantu. Semoga skripsi ini dapat
memberikan manfaat bagi pengembangan ilmu pengetahuan.
Depok, 9 Juni 2012
Alifandi Yudistira
v
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
HALAMAN PERNYATAAN PERSETUJUAN PUBLIKASI
SKRIPSI UNTUK KEPENTINGAN AKADEMIS
Sebagai sivitas akademika Universitas Indonesia, saya bertanda tangan di bawah
ini :
Nama
: Alifandi Yudistira
NPM
: 0806339023
Program Studi : Teknik Komputer
Departemen
: Teknik Elektro
Fakultas
: Teknik
Jenis Karya
: Skripsi
demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada
Universitas Indonesia Hak Bebas Royalti Noneksklusif (Non-exclusive Royalty
Free Right) atas karya ilmiah saya yang berjudul :
ANALISIS KEAMANAN OTENTIKASI DAN BASIS DATA PADA WEB
SIMPLE-O MENGGUNAKAN SQL INJECTION
beserta perangkat yang ada (jika diperlukan). Dengan Hak Bebas Royalti Non
Eksklusif ini Universitas Indonesia berhak menyimpan, mengalih media /
formatkan, mengelola dalam bentuk pangkalan data (database), merawat, dan
mempublikasikan skripsi saya selama tetap mencantumkan nama saya sebagai
pemegang Hak Cipta.
Demikian pernyataan ini saya buat dengan sebenarnya.
Dibuat di
: Depok
Pada tanggal : 9 Juni 2012
Yang menyatakan
Alifandi Yudistira
vi
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
ABSTRAK
Nama
: Alifandi Yudistira
Program Studi
: Teknik Komputer
Judul
: Analisis Keamanan Otentikasi dan Basis Data pada Web
Simple-O Menggunakan SQL Injection
Pembimbing
: Dr. Ir. Anak Agung Putri Ratna M.Eng.
Simple-O adalah aplikasi berbasis web yang sedang dikembangkan oleh
Departemen Teknik Elektro Universitas Indonesia untuk digunakan sebagai ujian
essay secara online. Aplikasi Simple-O ini harus memiliki sistem keamanan yang
baik, sehingga sistem keamanan Simple-O perlu diuji tingkat keamanannya. Salah
satu caranya adalah menggunakan SQL Injection, sebuah teknik eksploitasi pada
aplikasi berbasis web yang menggunakan basis data sebagai penyimpanan data.
Skripsi ini melakukan analisis tingkat keamanan web Simple-O menggunakan
SQL Injection dan penerapan Anti SQL Injection untuk menghindari serangan
SQL Injection. Hasil dari pengujian didapatkan bahwa Simple-O dapat diserang
menggunakan SQL Injection melalui sintaks ’ or ‘1’=‘1; ’ #; ’ 0=0 # dan
serangan tersebut dapat dihindari menggunakan Anti SQL Injection.
Kata kunci:
Simple-O, Sistem Keamanan, SQL Injection, Anti SQL Injection, Basis Data
vii
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
ABSTRACT
Name
: Alifandi Yudistira
Study Programme
: Teknik Komputer
Title
: Analysis of Authentication and Database Security of
Simple-O Web Using SQL Injection
Supervisor
: Dr. Ir. Anak Agung Putri Ratna M.Eng.
Simple-O is a web-based application which currently developed by Department of
Electrical Engineering University of Indonesia to be used as online essay exams.
This Simple-O web must has a good security system, that is why Simple-O
security system must be tested for it’s security level. One of the way is using SQL
injection, an exploited technique on web-based application that use database as
data storage. This thesis does the analysis of security level of Simple-O using
SQL injection and execute Anti SQL Injection to avoid SQL Injection attacks.
Result of testing is Simple-O can be attacked by SQL Injection with syntax ’ or
‘1’=‘1; ’ #; ’ 0=0 # and the attack can be avoided by Anti SQL Injection.
Keyword:
Simple-O, Security System, SQL Injection, Anti SQL Injection, Database
viii
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
DAFTAR ISI
HALAMAN PERNYATAAN ORISINALITAS .................................................... ii
HALAMAN PENGESAHAN ................................................................................ iii
KATA PENGANTAR ........................................................................................... iv
HALAMAN PERNYATAAN PERSETUJUAN PUBLIKASI SKRIPSI UNTUK
KEPENTINGAN AKADEMIS ............................................................................. vi
ABSTRAK ............................................................................................................ vii
ABSTRACT ......................................................................................................... viii
DAFTAR ISI .......................................................................................................... ix
DAFTAR TABEL ................................................................................................. xii
DAFTAR GAMBAR ........................................................................................... xiv
BAB I PENDAHULUAN ....................................................................................... 1
1.1
Latar Belakang Masalah ........................................................................... 1
1.2
Tujuan ....................................................................................................... 2
1.3
Pembatasan Masalah ................................................................................ 3
1.4
Metodologi Penelitian .............................................................................. 3
1.5
Sistematika Penulisan ............................................................................... 4
BAB II KONSEP DASAR APLIKASI BERBASIS WEB DAN SISTEM
KEAMANANNYA ................................................................................................. 5
2.1
Aplikasi Berbasis Web ............................................................................. 5
2.2
E-learning ................................................................................................. 9
2.3
Simple-O ................................................................................................ 10
2.4
Keamanan Web ...................................................................................... 11
2.4.1
Aspek Dasar Keamanan Web.......................................................... 11
2.4.2
Serangan-serangan Keamanan Web ................................................ 13
2.4.2.1
Macam-Macam Penyerang……………………………...……13
ix
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
2.4.2.2
Bentuk-bentuk Serangan Keamanan Web dan Cara
Mengatasinya………………………………………………………….…15
2.4.2.3
2.5
Tools yang Digunakan Untuk Menyerang………………..….16
Penetration Testing ................................................................................ 17
2.5.1
Jenis-jenis Penetration Testing ....................................................... 17
2.5.2
Penetration Testing Tools ............................................................... 18
2.5.3
Metode Penetration Testing ............................................................ 18
2.6
SQL Injection .......................................................................................... 19
2.6.1
Contoh sintaks SQL Injection ......................................................... 19
2.6.2
Cara Pencegahan SQL Injection ...................................................... 21
2.7
Perangkat Lunak ..................................................................................... 21
2.7.1
Sistem Operasi ................................................................................ 21
2.7.2
Web Server Apache ......................................................................... 21
2.7.2.1
Program Pendukung Apache………………………………....22
2.7.2.2
Kelebihan Apache…………………………………………....22
2.7.3
MySQL............................................................................................ 23
2.7.4
PHP ................................................................................................. 23
2.7.5
Web Browser ................................................................................... 23
2.7.6
Lamp ............................................................................................... 24
2.7.7
Havij ................................................................................................ 24
BAB III SKENARIO PENGUJIAN SISTEM ...................................................... 26
3.1
Spesifikasi Perangkat Keras ................................................................... 26
3.2
Spesifikasi Perangkat Lunak .................................................................. 27
3.3
Desain Jaringan dan Sistem Keamanan Simple-O ................................. 28
3.3.1
Desain Jaringan ............................................................................... 28
3.3.2
Sistem Keamanan Simple-O ........................................................... 29
x
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
3.4
3.3.2.1
Session dengan Pewaktuan…………………………………...30
3.3.2.2
Password Strength Meter…………………………………….31
3.3.2.3
Hash Kata Sandi dengan MD5…………………………….....32
3.3.2.4
Lupa Kata Sandi dan Ubah Kata Sandi……………………....32
3.3.2.5
Proses Login dengan Sistem Terkunci………………….……33
3.3.2.6
CAPTCHA pada Proses Login……………………….………34
Skenario Pengujian ................................................................................. 35
BAB IV PENGUJIAN DAN ANALISIS SISTEM .............................................. 38
4.1
Skenario SQL Injection Manual ............................................................. 39
4.1.1
4.1.1.1
Pengujian…………………………………………….……….40
4.1.1.2
Analisis………………………………………………….……41
4.1.2
Injeksi di loginform ......................................................................... 45
4.1.2.1
Pengujian………………………………………………..……46
4.1.2.2
Analisis……………………………………………………….62
4.1.3
4.2
Injeksi di URL ................................................................................. 39
Memberi Pengaman Anti SQL Injection ......................................... 72
4.1.3.1
Pengujian…………………………………………….……….72
4.1.3.2
Analisis……………………………………...………………..77
Skenario SQL Injection Otomatis ........................................................... 78
4.2.1
Pengujian ......................................................................................... 78
4.2.1.1
Web Simple-O………………………………………………..78
4.2.1.2
Web Dummy…………………………………………………80
4.2.2
Analisis............................................................................................ 85
BAB V KESIMPULAN ........................................................................................ 89
DAFTAR REFERENSI ........................................................................................ 90
DAFTAR PUSTAKA ........................................................................................... 93
xi
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
DAFTAR TABEL
Tabel 4.1. User ID Mahasiswa pada web Simple-O ............................................. 46
Tabel 4.2. User ID Dosen pada web Simple-O ..................................................... 46
Tabel 4.3. Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ’ or
‘1’=‘1 dalam proses SQL Injection di form user id web Simple-O ...................... 52
Tabel 4.4 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ” or
“1”=“1 dalam proses SQL Injection di form user id web Simple-O .................... 53
Tabel 4.5 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ’) or
(‘1’=‘1 dalam proses SQL Injection di form user id web Simple-O ..................... 54
Tabel 4.6 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ”) or
(“1”=“1 dalam proses SQL Injection di form user id web Simple-O ................... 54
Tabel 4.7 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ’ #
dalam proses SQL Injection di form user id web Simple-O.................................. 55
Tabel 4.8 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ’ or
0=0 -- dalam proses SQL Injection di form user id web Simple-O....................... 56
Tabel 4.9 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ” or
0=0 -- dalam proses SQL Injection di form user id web Simple-O....................... 57
Tabel 4.10 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks or
0=0 -- dalam proses SQL Injection di form user id web Simple-O....................... 58
Tabel 4.11 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ’ or
0=0 # dalam proses SQL Injection di form user id web Simple-O ....................... 59
Tabel 4.12 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ” or
0=0 # dalam proses SQL Injection di form user id web Simple-O ....................... 60
Tabel 4.13 Hasil pengujian semua user id web aplikasi Simple-O dan semua
sintaks dalam proses SQL Injection di form kata sandi web Simple-O ................ 61
Tabel 4.14 Tabel a ................................................................................................. 69
Tabel 4.15 Tabel b................................................................................................. 69
Tabel 4.16 Persilangan tabel a dan tabel b ............................................................ 70
Tabel 4.17. Hasil pengecekan login secara normal ............................................... 70
xii
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Tabel 4.18. Hasil pengecekan login SQL Injection ............................................... 71
Tabel 4.19 Hasil pengujian semua user id Simple-O dan sintaks ’ or ‘1’=‘1 dalam
proses SQL Injection setelah web Simple-O diberi pengaman Anti SQL Injection
............................................................................................................................... 74
Tabel 4.20 Hasil pengujian semua user id Simple-O dan sintaks ’ or 0=0 # dalam
proses SQL Injection setelah web Simple-O diberi pengaman Anti SQL Injection
............................................................................................................................... 75
Tabel 4.21 Hasil pengujian semua user id Simple-O dan sintaks ’ # dalam proses
SQL Injection setelah web Simple-O diberi pengaman Anti SQL Injection ......... 76
xiii
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
DAFTAR GAMBAR
Gambar 2.1 Contoh source code aplikasi berbasis web ........................................ 19
Gambar 2.2 Contoh penggunaan SQL Injection ................................................... 20
Gambar 2.3 Contoh SQL Injection pada Loginform ............................................. 20
Gambar 2.4 Beberapa contoh variasi kode SQL Injection .................................... 20
Gambar 2.5 Tampilan GUI Havij………………………………………………...25
Gambar 3.1 Topologi jaringan pada sistem pengujian.......................................... 29
Gambar 3.2 Algoritma session dengan pewaktuan web Simple-O ....................... 31
Gambar 3.3 Algoritma Password Strength Meter web SIMPLE-O ..................... 31
Gambar 3.4 Algoritma Hash Kata Sandi dengan MD5 web SIMPLE-O ............. 32
Gambar 3.5 Algoritma Login dengan Sistem Terkunci web Simple-O ................ 34
Gambar 3.6 Algoritma CAPTCHA pada Login web SIMPLE-O ......................... 35
Gambar 4.1 Loginform Simple-O ......................................................................... 39
Gambar 4.2 Alamat web Simple-O yang belum dimodifikasi .............................. 40
Gambar 4.3 Alamat web Simple-O yang sudah ditambah tanda petik satu (’) ..... 40
Gambar 4.4 Eror saat menggunakan tanda petik satu (‘) ...................................... 40
Gambar 4.5 Alamat web Simple-O yang belum dimodifikasi .............................. 40
Gambar 4.6 Alamat web Simple-O yang sudah ditambah perintah ORDER BY . 40
Gambar.4.7 Eror saat menggunakan perintah ORDER BY .................................. 41
Gambar 4.8 Source code method POST web Simple-O ....................................... 41
Gambar 4.9 Alamat web yang menggunakan method GET.................................. 42
Gambar 4.10 Alamat web yang menggunakan method POST.............................. 42
Gambar 4.11 Contoh alamat web sebelum diberi perintah ORDER BY .............. 43
Gambar 4.12 Contoh alamat web yang sudah diberi perintah ORDER BY ......... 44
Gambar 4.13 Contoh pengujian mencari banyaknya tabel basis data ................... 44
xiv
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Gambar 4.14 Pengujian perintah ORDER BY pada web Simple-O ..................... 44
Gambar 4.15 Tampilan loginform Simple-O ........................................................ 47
Gambar 4.16 Sintaks SQL Injection yang digunakan web Simple-O ................... 48
Gambar 4.17 User id “iyuzh” dan sintaks SQL Injection ..................................... 48
Gambar 4.18 Proses SQL Injection menggunakan sintaks iyuzh’ or ‘1’=’1 ........ 49
Gambar 4.19 Simple-O berhasil ditembus menggunakan sintaks iyuzh’ or ‘1’= ‘1
............................................................................................................................... 49
Gambar 4.20 User id “ratna” dan sintaks SQL Injection ...................................... 50
Gambar 4.21 Proses SQL Injection menggunakan sintaks ratna’ or ‘1’=‘1 ........ 50
Gambar 4.22 Simple-O berhasil ditembus menggunakan sintaks ratna’ or ‘1’=‘1
............................................................................................................................... 51
Gambar 4.23 SQL Injection pada form kata sandi web Simple-O ........................ 61
Gambar 4.24 Algoritma query yang digunakan untuk menegecek user id dan kata
sandi web Simple-O .............................................................................................. 63
Gambar 4.25 Bagian query tempat user id dan kata sandi dicek .......................... 63
Gambar 4.26 Source code user id ......................................................................... 64
Gambar 4.27 Source code kata sandi .................................................................... 64
Gambar 4.28 User id “iyuzh” dan sintaks SQL Injection ..................................... 64
Gambar 4.29 Query yang termanipulasi oleh sintaks iyuzh’ or ‘1’=‘1 ................ 64
Gambar 4.30 Nilai query yang sudah termanipulasi ............................................. 65
Gambar 4.31 Query yang termanipulasi oleh sintaks iyuzh’ or 0=0 # ................. 65
Gambar 4.32 Nilai query yang sudah termanipulasi ............................................. 65
Gambar 4.33 Query yang termanipulasi oleh sintaks iyuzh’ #.............................. 65
Gambar 4.34 Nilai query yang sudah termanipulasi ............................................. 66
Gambar 4.35 Sintaks yang akan dimasukkan ke dalam form kata sandi .............. 67
Gambar 4.36 Sintaks yang sudah berubah akibat hash MD5 ............................... 67
Gambar 4.37 Query dimana kata sandi tidak memakai hash MD5 ...................... 67
xv
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Gambar 4.38 Hasil query dimana kata sandi tidak memakai MD5 ...................... 67
Gambar 4.39 Query dimana kata sandi memakai hash MD5 ............................... 67
Gambar 4.40 Hasil query dimana kata sandi memakai hash MD5 ....................... 68
Gambar 4.41 Algoritma captcha ........................................................................... 68
Gambar 4.42 Algoritma query yang digunakan untuk menegecek user id dan kata
sandi web Simple-O .............................................................................................. 70
Gambar 4.43 Hasil dari query menggunakan SQL Injection ................................ 71
Gambar 4.44 Proses SQL Injection menggunakan sintaks iyuzh’ or ‘1’=’1 ........ 72
Gambar 4.45 Proses SQL Injection iyuzh’ or ‘1’=‘1 tidak berhasil .................... 73
Gambar 4.46 Proses SQL Injection menggunakan sintaks ratna’ or ‘1’=’1 ........ 73
Gambar 4.47 Proses SQL Injection ratna’ or ‘1’=‘1 tidak berhasil ..................... 74
Gambar 4.48 Source code algoritma Anti SQL Injection ..................................... 77
Gambar 4.49 Perangkat Lunak Havij .................................................................... 78
Gambar 4.50 Alamat web Simple-O dimasukkan ke dalam Havij ....................... 79
Gambar 4.51 Eror tidak ada input parameter ........................................................ 79
Gambar 4.52 Eror Havij tidak berhasil menginjeksi web Simple-O .................... 80
Gambar 4.53 Homepage web dummy ................................................................... 81
Gambar 4.54 Eror yang terjadi saat Havij gagal menginjeksi web dummy .......... 82
Gambar 4.55 Havij berhasil menginjeksi web dummy.......................................... 82
Gambar 4.56 Tabel basis data dbmedia ................................................................ 83
Gambar 4.57 Kolom pada tabel “user” ................................................................. 83
Gambar 4.58 Data “id_user” dan “password”....................................................... 84
Gambar 4.59 Kata sandi dari user id “admin” ...................................................... 85
Gambar 4.60 SQL Injection menggunakan method POST pada Havij ................. 86
xvi
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
BAB I
PENDAHULUAN
1.1
Latar Belakang Masalah
Teknologi informasi di zaman modern ini semakin berkembang, salah
satunya adalah aplikasi berbasis web. Saat ini sudah banyak sekali aplikasi
berbasis web yang sudah dibuat dan dikembangkan seperti contohnya adalah
jejaring sosial, e-commerce, dan e-learning.
Instansi-instansi pendidikan seperti sekolah dan universitas kini sudah
menerapkan suatu proses pembelajaran menggunakan e-learning. E-learning
adalah suatu sistem pembelajaran yang menggunakan aplikasi berbasis web
dengan media jaringan komputer atau internet. Sehingga proses pembelajaran
dapat dilakukan dimana saja asalkan tempat tersebut tersambung dengan jaringan
komputer atau internet. Contohnya adalah pembelajaran tidak perlu lagi di kelas
dan dapat belajar di rumah sendiri yang sudah terhubung dengan jaringan. Elearning tidak hanya mencakup sebagai proses belajar-mengajar jarak jauh,
namun bisa juga digunakan sebagai suatu media yang menyediakan materi
perkuliahan/pembelajaran, media untuk dikumpulnya tugas-tugas sekolah/kuliah,
diskusi online, ujian online, praktikum online, dan sebagainya. Mengenai ujian
online, telah dikembangkan aplikasi untuk ujian online yang disebut essay
grading.
Essay grading adalah suatu aplikasi yang digunakan untuk menilai
jawaban essay secara otomatis. Essay grading ini digunakan untuk ujian-ujian
online yang soalnya berupa essay bukan pilihan ganda, sehingga saat ujian telah
selesai, nilai dari jawaban essay tersebut akan langsung muncul dari sistem.
Penilaian essay grading berbeda dengan ujian pilihan ganda, dimana nilai pada
ujian pilihan ganda berdasarkan jumlah jawaban yang benar, sedangkan pada
essay grading harus dibuat suatu algoritma penilaian yang bekerja seperti seorang
pemeriksa ujian essay. Hal ini yang membuat algoritma essay grading menjadi
lebih rumit dibandingkan ujian pilihan ganda. Salah satu contoh aplikasi yang
dikembangkan di Departemen Teknik Elektro Universitas Indonesia adalah
Simple-O.
1
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
2
Simple-O saat ini masih dikembangkan oleh Departemen Teknik Elektro
Universitas
Indonesia
agar
nantinya
aplikasi
Simple-O
ini
dapat
diimplementasikan dalam ujian essay di Departemen Teknik Elektro atau dapat
juga dipakai di semua departemen di semua fakultas yang ada di Universitas
Indonesia. Aplikasi Simple-O ini haruslah memiliki metode pengamanan yang
baik, agar tidak dapat ditembus oleh pihak-pihak yang tidak bertanggung jawab
dan memiliki niat yang tidak baik seperti mencuri soal essay, membuat nilai
jawaban yang tidak sesuai, bahkan sampai merusak sistem.
Salah satu cara yang dilakukan oleh para penyerang yang ingin menembus
aplikasi berbasis web adalah SQL Injection. SQL Injection adalah salah satu jenis
penyerangan yang mengijinkan user yang tidak sah (penyerang) untuk mengakses
database server. Teknik SQL Injection adalah memanfaatkan kelalaian dari
website yang mengijinkan user untuk memasukkan data tertentu tanpa melakukan
filter terhadap malicious character. Input tersebut biasanya dimasukkan pada box
search atau bagian-bagian tertentu dari website yang berinteraksi dengan basis
data SQL dari situs tersebut. Hal inilah yang menjadi latar belakang untuk
melakukan SQL Injection pada aplikasi Simple-O dengan tujuan untuk
mengetahui dan menganalisis tingkat keamanan aplikasi Simple-O dari serangan
SQL Injection, serta mengimplementasikan Anti SQL Injection pada aplikasi
Simple-O
apabila
aplikasi
Simple-O
memang
terbukti
dapat
diserang
menggunakan SQL Injection.. Anti SQL Injection adalah suatu cara yang
digunakan untuk mencegah serangan SQL Injection dengan cara menuliskan script
program pada aplikasi berbasis web yang ingin dicegah dari serangan SQL
Injection. Script-script program ini berfungsi untuk membuat perintah-perintah
SQL Injection tidak berfungsi saat dijalankan.
Tujuan
1.2
Tujuan dari penulisan skripsi ini adalah:
1) Melakukan pengujian tingkat keamanan aplikasi Simple-O menggunakan
teknik SQL Injection.
2) Menerapkan teknik Anti SQL Injection pada aplikasi Simple-O.
3) Menganalisis hasil uji coba dari implementasi teknik SQL Injection pada
aplikasi Simple-O.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
3
1.3
Pembatasan Masalah
Batasan masalah yang
perancangan/skenario
pengujian
dibahas
keamanan
dalam
skripsi
ini
aplikasi
Simple-O,
adalah
pengujian
keamanan pada aplikasi Simple-O menggunakan metode SQL Injection,
pengamanan aplikasi Simple-O menggunakan metode Anti SQL Injection, serta
analisis hasil uji coba pengujian keamanan aplikasi Simple-O dilihat dari basis
datanya.
1.4
Metodologi Penelitian
Metodologi penelitian yang dilakukan pada skripsi ini adalah:
1) Studi Literatur
Mencari dan mengumpulkan bahan, informasi, dan materi dari buku-buku,
jurnal-jurnal, dan situs-situs di internet.
2) Konsultasi/Bimbingan
Melakukan konsultasi/bimbingan pada dosen pembimbing setiap minggunya.
Tidak hanya pada dosen pembimbing, konsultasi juga dilakukan pada pihakpihak yang memiliki pengalaman dalam keamanan web dan jaringan
khususnya masalah SQL Injection.
3) Merancang Skenario
Merancang skenario pengujian keamanan aplikasi Simple-O yang akan
dilakukan.
4) Implementasi
Melakukan implementasi berupa pengujian keamanan aplikasi Simple-O
menggunakan metode SQL Injection dan melakukan pengamanan pada
aplikasi Simple-O menggunakan metode Anti SQL Injection.
5) Trial and Error
Melakukan pengujian pada sistem dengan cara melakukan percobaan berulang
kali sampai didapatkan hasil yang dicari.
6) Analisis
Melakukan analisis pada hasil pengujian keamanan aplikasi Simple-O dan
membandingkan keamanan tersebut dengan suatu keamanan web dummy (web
contoh yang sudah pasti dapat ditembus dengan SQL Injection) agar dapat
diteliti sejauh mana keamanan aplikasi Simple-O tersebut.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
4
1.5
Sistematika Penulisan
Skripsi ini dibagi menjadi 5 bab, yaitu:
1) Bab 1: Pendahuluan
Pada bab ini akan dijelaskan mengenai latar belakang, tujuan, pembatasan
masalah, metodologi penelitian, sistematika penulisan.
2) Bab 2: Konsep Dasar Aplikasi Berbasis Web dan Sistem Keamanannya
Pada bab ini akan dijelaskan mengenai teori-teori mengenai aplikasi berbasis
web, e-learning, Simple-O, keamanan web, Penetration Testing, SQL
Injection, dan perangkat lunak yang mendukung jalannya implementasi.
3) Bab 3: Skenario Pengujian Sistem
Pada bab ini akan dijelaskan mengenai skenario pengujian sistem keamanan
aplikasi Simple-O yang akan dilakukan.
4) Bab 4: Pengujian dan Analisis Sistem
Pada bab ini akan dijelaskan mengenai uji coba dan analisis dari penerapan
teknik SQL Injection dalam menguji keamanan aplikasi Simple-O dan
penerapan Anti SQL Injection dalam mengamankan aplikasi Simple-O .
5) Bab 5: Kesimpulan
Pada bab ini akan dijelaskan mengenai kesimpulan yang dapat diambil dari
skripsi ini.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
BAB II
KONSEP DASAR APLIKASI BERBASIS WEB DAN SISTEM
KEAMANANNYA
2.1
Aplikasi Berbasis Web
Aplikasi berbasis web adalah suatu aplikasi dimana untuk menjalankannya
harus menggunakan koneksi internet atau intranet. Aplikasi berbasis web
membutuhkan koneksi internet atau intranet karena setiap menjalankannya,
aplikasi tersebut diunduh dari web server, sehingga aplikasi berbasis web ini dapat
diakses dimana saja asalkan memiliki koneksi internet atau intranet. Hal ini
mendefinisikan bahwa aplikasi berbasis web cukup di-install sekali saja di web
server dan tidak perlu di-install di setiap perangkat yang akan menjalankan
aplikasi tersebut. Berbeda dengan aplikasi berbasis desktop dimana aplikasi
tersebut harus di-install di setiap perangkat yang ingin menjalankannya. [1]
Sering sekali aplikasi berbasis web dibandingkan dengan aplikasi berbasis
desktop. Dari perbandingan tersebut aplikasi berbasis web memiliki keuntungankeuntungan dibandingkan aplikasi berbasis desktop, antara lain adalah sebagai
berikut:
1) Alokasi Storage
Salah satu kentungan dari aplikasi berbasis web dibandingkan aplikasi
berbasis desktop adalah penghematan alokasi storage yang ada pada perangkat
yang akan menjalankan aplikasi tersebut. Pada aplikasi berbasis desktop, saat
ingin menjalankan aplikasi, aplikasi tersebut harus di-install terlebih dahulu di
perangkat yang akan menjalankannya. Saat meng-install aplikasi di perangkat
tentu saja akan membutuhkan suatu alokasi storage sebagai tempat
menyimpan data-data aplikasi tersebut. Apabila aplikasi tersebut sangat besar
ukurannya, hal ini akan membuat storage perangkat akan berkurang. Sehingga
harus disediakan storage yang besar agar masih terdapat alokasi storage yang
tersisa. Untuk menyediakan storage tentu saja berhubungan dengan biaya.
Semakin storage yang diinginkan besar maka semakin besar pula biaya yang
harus dikeluarkan untuk membeli storage tersebut. Berbeda dengan aplikasi
5
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
6
berbasis web, aplikasi tersebut tidak perlu di-install terlebih dahulu di
perangkat-perangkat yang akan menjalankannya. Cukup di-install pada web
server, kemudian dijalankan menggunakan browser yang ada pada perangkat.
Hal ini membuat storage pada perangkat tidak terpakai untuk aplikasi berbasis
web tersebut. [1]
2) Kecocokan sistem
Setiap aplikasi tentu saja memiliki kecocokan sistem tertentu yang
menjadi syarat sebelum aplikasi tersebut di-install pada perangkat yang
menjalankannya. Kecocokan sistem ini bermacam-macam, yang paling sering
dan mendasar adalah kecocokan terhadap sistem operasi yang dipakai oleh
perangkat. Sebagai contoh adalah sistem operasi yang sering digunakan adalah
Windows, Macintosh, Linux, Android, dan sebagainya. Sistem operasi ini
memiliki aturan tersendiri, sehingga tidak semua aplikasi dapat di-install di
sistem operasi tersebut. Oleh sebab itu banyak aplikasi yang dibuat dengan
sistem yang berbeda-beda agar dapat di-install di beberapa sistem operasi.
Berbeda dengan aplikasi berbasis web, aplikasi ini bersifat independen dimana
aplikasi ini dapat digunakan di semua sistem operasi. Kecocokan sistem
berasal dari browser yang digunakan, terkadang terdapat aplikasi-aplikasi baru
yang hanya dapat dijalankan dengan browser yang sudah diperbaharui
versinya. [1]
3) Lisensi
Setiap aplikasi yang tidak gratis atau bukan open source, pasti memiliki
lisensi yang berfungsi sebagai bukti bahwa aplikasi tersebut dibeli. Namun
biaya yang harus dikeluarkan untuk membeli aplikasi tersebut tidaklah murah,
sehingga harus dipersiapkan biaya yang tidak sedikit untuk satu aplikasi.
Untuk meng-install aplikasi yang lainnya pun sama, biaya harus dikeluarkan
untuk membeli lisensinya. Sehingga semakin banyak aplikasi yang diinginkan
semakin banyak pula biaya yang harus dikeluarkan. Apalagi jika di-install-nya
tidak hanya di satu perangkat. Oleh karena itu, salah satu upaya mengurangi
biaya adalah menggunakan aplikasi berbasis web. Perangkat cukup
dihubungkan dengan koneksi internet atau intranet, maka aplikasi tersebut
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
7
sudah dapat digunakan tanpa membeli lisensinya. Tidak hanya itu, aplikasi
tersebut dapat digunakan pada lebih dari satu komputer tanpa biaya.
4) Perangkat
Aplikasi berbasis web dapat diakses di beberapa perangkat, baik itu
komputer, mobile phone, tablet, dan sebagainya. Berbeda dengan aplikasi
berbasis desktop dimana sebagian besar aplikasi-aplikasi tersebut hanya dapat
dijalankan di PC (Personal Computer) ataupun laptop. Saat
ini aplikasi
berbasis web yang sedang marak-maraknya adalah jejaring sosial. Aplikasi ini
kini lebih banyak diakses menggunakan perangkat yang lebih kecil
dibandingkan PC ataupun laptop seperti mobile phone dan tablet sehingga
membuat orang-orang lebih mudah mengaksesnya. [1]
5) Spesifikasi
Aplikasi berbasis web tidak perlu memiliki spesifikasi yang tinggi seperti
sebagian aplikasi berbasis desktop yang menuntut perangkat memiliki
spesifikasi yang tinggi agar aplikasi tersebut dapat berjalan. Aplikasi berbasis
web adalah aplikasi yang ringan yang dapat dijalankan pada perangkat yang
memiliki spesifikasi rendah sekali pun. Pada aplikasi berbasis web, biasanya
proses kerja sudah dilakukan di web server tempat aplikasi berbasis web diinstall. [1]
6) Ketersediaan
Salah satu keuntungan lain dari aplikasi berbasis web adalah ketersedian
aplikasi yang ada pada perangkat. Saat dibutuhkan suatu aplikasi, namun
aplikasi tersebut tidak ada di perangkat, maka dapat digunakan aplikasi
berbasis web yang fungsinya sama dengan yang dibutuhkan. Contohnya
adalah seperti aplikasi permainan Angry Bird. Apabila tidak memiliki aplikasi
di perangkat, aplikasi tersebut dapat digunakan di internet.
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
8
7) Kemudahan bertransaksi
Aplikasi berbasis web juga memberikan kemudahan dalam bertransaksi,
seperti contohnya adalah internet banking. Internet banking ini adalah salah
satu aplikasi berbasis web yang memudahkan nasabah bank dalam
bertransaksi. Seperti contohnya adalah saat ingin mentransfer uang, tidak perlu
mencari ATM atau pun bank, saat butuh pulsa atau membeli paket internet,
tidak perlu ke tempat penjual pulsa, cukup menggunakan internet banking,
sehingga ini sangat mempermudah transaksi sehari-hari.
8) Berperan dalam pendidikan
Saat ini dalam dunia pendidikan sudah diterapkan proses pembelajaran elearning dimana proses pembelajaran tidak harus dilakukan di kelas. Elearning ini sendiri tidak lepas dari aplikasi berbasis web karena untuk
mendukung e-learning tersebut diperlukan aplikasi berbasis web. Contohnya
adalah seperti scele yang diterapkan oleh Universitas Indonesia. Tugas dan
materi kuliah dapat diunduh yang diberikan oleh dosen, tugas yang harus
dikumpul kepada dosen juga dapat diunggah sehingga
tidak perlu lagi
membawa hardcopy tugas yang harus dikumpulkan. Hal ini dapat mendukung
green global karena dapat menghemat kertas. Tidak hanya itu, melalui elearning praktikum juga dapat dilakukan. Jadi tidak perlu datang ke
laboratorium, cukup menggunakan aplikasi berbasis web yang jalan pada
browser.
Walaupun aplikasi berbasis web memiliki keunggulan-keunggulan
dibandingkan aplikasi berbasis desktop, namun aplikasi berbasis web juga
memiliki kekurangan-kekurangan dibandingkan aplikasi berbasis desktop, antara
lain sebagai berikut:
1) Ketergantungan koneksi internet
Aplikasi berbasis web memiliki ketergantungan pada koneksi internet. Apabila
tidak ada koneksi internet yang tersambung ke perangkat, maka aplikasi tidak
dapat digunakan.
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
9
2) Biaya internet
Aplikasi berbasis web memiliki ketergantungan pada koneksi internet. Untuk
menggunakan koneksi internet, harus membayar biaya internet tersebut.
Sehingga setiap ingin mengakses aplikasi berbasis web, harus membayar
biaya internet.
3) Gangguan jaringan
Jaringan internet tidaklah selalu bagus, hal ini tergantung lokasi dan kondisi.
Apabila berada di tempat terpencil yang jauh dari koneksi internet maka
kemungkinan
tidak
dapat
mendapatkan
koneksi
internet
atau
juga
mendapatkan koneksi internet namun koneksinya sangat jelek. Hal ini sangat
mempengaruhi kualitas yang didapatkan saat menggunakan aplikasi berbasis
web tersebut.
Aplikasi berbasis web saat ini sudah banyak sekali di internet, seperti
Youtube, Google Translate, 4share, Mediafire, dan sebagainya. Salah satu contoh
aplikasi berbasis web yang akan dibahas dalam penelitian ini adalah Simple-O,
yaitu aplikasi yang dipakai untuk e-learning.
2.2
E-learning
E-learning menurut para ahli memiliki pengertian sebagai berikut:
1) E-learning
sebagai
sembarang
pengajaran
dan
pembelajaran
yang
menggunakan rangkaian elektronik (LAN, WAN, atau internet) untuk
menyampaikan isi pembelajaran, interaksi, atau bimbingan [2].
2) E-learning sebagai kegiatan belajar asynchronous melalui perangkat
elektronik komputer yang memperoleh bahan belajar yang sesuai dengan
kebutuhannya [2].
3) E-learning merujuk pada penggunaan teknologi internet untuk mengirimkan
serangkaian solusi yang dapat meningkatkan pengetahuan dan keterampilan
[2].
4) E-learning merupakan suatu jenis belajar mengajar yang memungkinkan
tersampaikannya bahan ajar ke siswa dengan menggunakan media Internet,
Intranet atau media jaringan komputer lain [2].
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
10
5) E-learning adalah sistem pendidikan yang menggunakan aplikasi elektronik
untuk mendukung belajar mengajar dengan media Internet, jaringan komputer,
maupun komputer standalone [2].
Secara umum pengertian e-learning adalah suatu sistem pembelajaran
yang menggunakan aplikasi berbasis web dengan media jaringan komputer,
internet atau intranet. Sehingga proses pembelajaran dapat dilakukan dimana saja
asalkan tempat tersebut tersambung dengan jaringan komputer, internet atau
intranet.
E-learning memberikan banyak sekali kemudahan dalam proses
pembelajaran, berikut adalah beberapa kemudahan tersebut:
1) Jarak tidak menjadi suatu masalah, karena dengan menggunakan E-learning
pembelajaran dapat dilakukan dimana saja walau jaraknya sangat jauh.
2) Materi pembelajaran didapatkan secara mudah, karena materi pembelajaran
dapat diunduh dari internet dan pengajar pun dapat memberikan tugas ke
muridnya melalui internet
3) Ujian dapat dilakukan darimana saja, seperti ujian online Cisco. Saat ini
Departemen Teknik Elektro UI sedang mengembangkan essay grading, yaitu
suatu ujian online dengan bentuk essay, yang dinamakan dengan Simple-O.
4) Praktikum dapat dilakukan secara online menggunakan internet, seperti yang
dilakukan oleh Fakultas MIPA Universitas Indonesia dimana para mahasiswa
yang menjadi praktikan dapat mengambil data melalui internet.
5) Informasi akademis dapat dilihat secara online dan dapat dilihat darimana saja,
seperti SIAK-NG (Sistem Informasi Akademis Next Generation) milik
Universitas Indonesia.
2.3
Simple-O
Simple-O adalah suatu aplikasi berbasis web yang digunakan untuk ujian
essay online. Simple-O ini sedang dikembangkan oleh Departemen Teknik
Elektro Universitas Indonesia. Simple-O ini merupakan suatu aplikasi essay
grading dimana nantinya saat mahasiswa melakukan ujian essay menggunakan
Simple-O, aplikasi ini sendiri yang akan langsung mengkoreksi kesalahankesalahan mahasiswa dan langsung memberikan nilai dari hasil ujian tersebut.
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
11
Pada aplikasi Simple-O ini dipakai beberapa keamanan untuk menjaga
program dari serangan orang-orang yang tidak bertanggung jawab. Jenis serangan
dapat bermacam-macam, mulai dari ingin mengetahui data-data di dalam
program, sampai pada ingin merusak sebuah program. Sebagai contoh yang dapat
terjadi adalah soal-soal ujian dari Simple-O dapat diambil sebelum waktu ujian
dan yang lebih bahaya lagi apabila sistem Simple-O diubah sehingga membuat
semua nilai hasil ujian dari Simple-O sempurna. Sistem Keamanan yang
diterapkan oleh Simple-O adalah sebagai berikut:
1) Session dengan pewaktuan [3];
2) Password strength meter [3];
3) Hash kata sandi dengan MD5 [3];
4) Lupa kata sandi dan ubah kata sandi [3];
5) Proses login dengan sistem terkunci [3];
6) CAPTCHA pada proses login [3]
2.4
Keamanan Web
Keamanan web adalah suatu hal yang sangat penting dalam web karena
web memiliki konten yang harus dilindungi. Penerapan keamanan web adalah
berupa pencegahan akses ke dalam web oleh pengguna yang tidak dikenal.
Siapapun dapat menembus masuk ke dalam web dan dapat memperoleh data-data
yang yang tersimpan di dalam web. Oleh karena itu dalam mengamankan suatu
web, suatu keamanan harus memiliki standar dan aspek dasar keamanan yang
sudah teruji. Berikut ini akan dibahas mengenai aspek dasar keamanan jaringan
dan web, serangan-serangan keamanan web, dan keamanan dalam e-learning.
2.4.1
Aspek Dasar Keamanan Web
Secara umum terdapat 7 aspek dasar keamanan aplikasi berbasis web yang
harus diperhatikan, yaitu otentikasi, otorisasi, confidentiality, integritas data, nonrepudiation [4], availability, dan kontrol akses [5].
1) Otentikasi
Otentikasi merupakan proses untuk mengidentifikasi pengirim ataupun
penerima. Otentikasi juga dapat disebut sebuah verifikasi apakah seseorang itu
adalah orang yang berhak. Seseorang disini maksudnya adalah pengguna yang
dapat mengakses aplikasi berbasis web. Otentikasi ini biasanya melibatkan
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
12
sebuah identitas seperti contohnya adalah username dan kata sandi. Pengguna
yang dapat mengakses aplikasi berbasis harus memiliki identitas yang sudah
diotentikasi, maksudnya memiliki username dan kata sandi [4].
2) Otorisasi
Otorisasi adalah sebuah proses pencarian apakah pengguna yang
identitasnya sudah diidentifikasi (otentikasi), diijinkan untuk memanipulasi
sumber daya tertentu. Ini biasanya ditentukan dengan mencari apakah orang
itu merupakan bagian dari aturan khusus yang memiliki akses ke sumber daya
[4].
3) Confidentiality
Confidentiality adalah suatu layanan dimana data/informasi yang
tersimpan
atau
dikirim
dijamin
kerahasiaannya
dengan
melindungi
data/informasi tersebut agar tidak mudah dibaca oleh entitas (orang atau
aplikasi) yang tidak berhak. Metode yang dilakukan biasanya adalah
menggunakan enkripsi, dimana data/informasi diubah menjadi suatu
data/informasi yang bukan sebenarnya menggunakan sebuah kunci yang
hanya diketahui oleh pengirim dan penerima. Sehingga orang lain yang tidak
akan dapat mengetahui data/informasi tersebut [4].
4) Integritas Data
Integritas data memastikan bahwa data/informasi yang dikirimkan dari
sumber ke tujuan (server ke client) selama pengiriman tidak mengalami
perubahan sesuai dengan data/informasi aslinya. Data/informasi selama
pengiriman dapat saja diubah oleh user/aplikasi yang tidak memiliki hak
untuk melakukan perubahan data. Oleh karena itu, layanan integritas data
sangat penting [4].
5) Non-Repudiation
Layanan ini menjamin bahwa server dan client yang berhubungan tidak
dapat menyangkal hubungan yang terjadi. Sehingga seorang pengirim pesan
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
13
dapat memastikan bahwa pesan yang dikirmnya benar-benar diterima oleh
penerima [4].
6) Kontrol Akses
Suatu kemampuan untuk melakukan pembatasan akses ke sistem host dan
aplikasinya, yang dilakukan melalui jalur-jalur komunikasi [5].
7) Availability
Suatu ketersediaan sumber daya yang dapat diakses oleh client maupun
server yang berwenang dalam mengakses sumber daya tersebut. Tidak hanya
sumber daya yang harus tersedia, namun juga konektivitas pun harus tersedia
agar server dan client dapat saling berhubungan [5].
2.4.2
Serangan-serangan Keamanan Web
Setiap orang dapat menjadi penyerang dan menembus suatu aplikasi
berbasis web. Penyerang tersebut dalam menyerang web tersebut memiliki motif.
Motif yang dijalankan oleh penyerang pun bermacam-macam, ada yang hanya
iseng, ada yang hanya sekedar ingin tahu konten web tersebut, ada yang hanya
ingin menguji kemampuan, namun banyak juga yang motifnya tidak baik seperti,
ingin mengambil data-data web tersebut untuk kepentingan pribadi dan bahkan
ingin mengubah dan merusak isi dari web tersebut.
Untuk memahami lebih lanjut mengenai serangan terhadap web, berikut
akan dibahas mengenai bentuk-bentuk serangan terhadap aplikasi berbasis web,
macam-macam penyerang, dan alat yang digunakan mereka dalam menyerang.
2.4.2.1 Macam-macam Penyerang
Berikut adalah macam-macam penyerang keamanan web serta motif mereka
menyerang:
1) White Hat Hacker
White hat hacker adalah orang yang suka menembus suatu keamanan
komputer namun tidak memiliki tujuan yang buruk. Mereka adalah orangorang yang hanya suka menguji kemampuan mereka dalam menembus suatu
keamanan mereka. Biasanya mereka disewa oleh sebuah perusahaan untuk
menguji keamanan jaringan dari perusahaan tersebut [6].
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
14
2)
Black Hat Hacker
Black hat hacker ini adalah kebalikan dari white hat hacker. Ini adalah
orang yang suka menembus suatu jaringan komputer dengan tujuan buruk
seperti mengambil data/informasi dan bahkan merusak data/informasi
tersebut. Black hat hacker ini biasanya sering disebut juga cracker [6].
3)
Cyber Criminal
Tujuan utamanya mencuri uang dari korbannya dengan menggunakan
malware. Cyber criminal biasanya terdiri dari kelompok yang besar. Macammacam cara dan objek yang dilakukan untuk melancarkan aksi jahatnya.
Misalnya, memakai nomor kartu kredit milik korban, memanipulasi akun
bank, mencuri indentitas seperti kata sandi korbannya [7].
4) Spammer
Ini adalah orang-orang yang menyebarkan spam ke suatu aplikasi berbasis
web. Tujuan macam-macam, ada yang hanya iseng maupun ada yang ingin
mengiklankan sesuatu secara illegal lewat spam tersebut [7].
5)
Advanced Persistent Threat (APT) agent
Tujuan mereka ialah mencuri properti intelektual sebuah perusahaan untuk
mendapatkan uang dengan cara cepat. Mereka menjiplak ide dari perusahaan
lain dan menjual informasi yang mereka dapat ke pelelang tinggi [7].
6)
Mata-mata perusahaan
Hampir mirip seperti APT agent, namun bedanya mereka tidak teroganisir
seperti APT agent [7].
7)
Hacktivist
Hacker tipe ini melancarkan aksinya dengan latar belakang politik, agama,
lingkungan hingga keyakinan. Biasanya mereka mempermalukan lawannya
atau mengobrak-abrik situs mereka [7].
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
15
8) Cyber warriors
Cyber warrior berperan dalam perang cyber di mana suatu wilayah suatu
negara melawan wilayah negara lain dengan tujuan akhir melumpuhkan
kemampuan militer lawan [7].
9) Rogue Hackers
Mereka melakukan aksi hacking hanya untuk membuktikan kemampuan
mereka, menyombongkan diri ke teman atau hanya karena merasa tertantang
dalam melakukan aksi ilegal. Aksi mereka memang mengganggu namun
mereka tidak mengobrak-abrik internet atau bisnis orang lain [7].
2.4.2.2 Bentuk-bentuk Serangan Keamanan Web dan Cara Mengatasinya
Berikut adalah beberapa bentuk serangan terhadap keamanan web:
1) Memodifikasi Validasi Input
Biasanya para penyerang mencoba menguji validasi-validasi input yang
diterapkan pada form dan parameter buangan pada address bar dalam
melakukan proses attacking [8].
Penanganan yang harus diperhatikan adalah memperhatikan validasi yang
terdapat pada form, baik itu validasi angka maupun validasi string, membatasi
jumlah karakter yang dapat dimasukkan, membatasi kegiatan-kegiatan injeksi
dengan: strip_tags(), htmlspecialchars(), menggunakan variabel global
sebagaimana mestinya dan menggunakan wordfilter untuk memfilter berbagai
input yang berbahaya [8].
2) SQL Injection
Kegiatan attacking yang banyak dilakukan akhir-akhir ini adalah SQL
Injection, karena SQL Injection merupakan teknik hacking yang sudah
tersebar luas dan relatif mudah dipahami. Attacker melakukan proses
attacking dengan menyisipkan perintah-perintah SQL pada form ataupun pada
address bar [8].
Untuk
mengatasi
hal
ini,
sebaiknya
input
dibatasi
dengan:
htmlspecialchars(), mysql_escape_string() dan menghubungi administrator
hosting untuk merubah: magic_quotes_gpc=on [8].
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
16
2.4.2.3 Tools yang Digunakan Untuk Menyerang
Berikut adalah beberapa tools yang digunakan untuk menyerang keamanan web
dan jaringan:
1) Cain & Abel
Tool yang sangat popular ini dikenal sebagai aplikasi serba guna.
Disamping dapat melakukan cracking kata sandi, aplikasi ini memungkinkan
untuk memperoleh nilai hash dari berbagai sumber [9].
2) Dumpacl-Dumpsec
Tools ini digunakan untuk melakukan pekerjaan enumerasi. Cara kerjanya
dengan memanfaatkan Null Connections, sehingga tools ini mampu
menampilkan user account secara rinci. [9].
3) Keylogger
Tools ini dapat menyembunyikan dirinya jika dideteksi dari Task
Manager. Keylogger secara diam-diam mencatat seluruh kegiatan keyboard
pada PC yang sudah di-install aplikasi ini, termasuk clipboard, snapshot, dan
alamat website yang dikunjungi [9].
4) Winfingerprint
Aplikasi ini menggabungkan banyak teknik enumerasi. Di aplikasi ini
dapat dijumpai enumerasi melalui Net BIOS, SMB, MSRPC, SNMP, dan
Active Directory. Hanya memasukkan alamat IP dari host yang hendak
diperiksa dan memilih tombol scan untuk mulai melakukan scanning [9].
5) Sams Big Play Maker
Aplikasi yang satu ini cukup unik karena mampu menyembunyikan teks
atau pesan tersembunyi yang dimasukkan menjadi layaknya bentuk
percakapan. Biasanya mereka tidak akan menyadari bahwa sesungguhnya ada
pesan tersembunyi di dalamnya [9].
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
17
6) Track Eraser Pro
Dalam urusan menghapus jejak, aplikasi ini memang sangat dapat
diandalkan, karena mendukung banyak sekali jenis aplikasi. Selain dapat
menghapus log yang dicatat oleh Windows, aplikasi ini akan menghapus jejak
pada aplikasi Office, Realone Player, media player dan sebagainya [9].
7) Active Password Changer
Dengan tools ini, kata sandi dalam komputer yang dapat diakses secara
fisik dapat diubah. Ada beberapa fitur yang dimilikinya, yaitu melakukan
booting dari USB, Floppy disk, ataupun melalui CD [9].
2.5
Penetration Testing
Penetration testing adalah pengujian keamanan pada suatu jaringan atau
sistem komputer dengan cara melakukan simulasi serangan terhadap jaringan atau
sistem komputer tersebut [10]. Sehingga nantinya akan terlihat celah-celah
keamanan yang dapat ditembus. Penetration testing ini dilakukan dengan
menggunakan sebuah tools/perangkat lunak yang memang digunakan untuk
melakukan sebuah penetration testing. Penetration testing ini memiliki beberapa
jenis, tools, dan metode.
2.5.1 Jenis-jenis Penetration Testing
Berikut adalah jenis-jenis penetration testing yang digunakan.
1) Black Box Testing
Penetrasi dilakukan tanpa mengetahui informasi-informasi sebelumnya
yang berkaitan dengan sistem/jaringan seperti sitem operasi yang digunakan
oleh target, topologi jaringannya seperti apa, open port dan service apa saja
yang sedang running [10].
2) White Box Testing
Penetrasi dilakukan dengan sudah mengetahui informasi-informasi
mengenai sistem/jaringan, tetapi hal tersebut bukan berarti memberikan
kemudahan dalam melakukan penetrasi, hal tersebut tergantung dari tester
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
18
yang melakukan pengujian menilai sejauh mana kelemahan-kelemahan yang
terdapat di dalam sistem/jaringan [10].
2.5.2 Penetration Testing Tools
Berikut adalah beberapa tools yang digunakan dalam melakukan penetration
testing:
1) Nikto
2) Acunetix
3) OpenVAS
4) Metasploit
5) Fasttrack
6) sqlNinja
7) w3af
2.5.3 Metode Penetration Testing
Metode penetration testing dari aplikasi berbasis web adalah sebagai berikut:
1) Passive Penetration Testing
Dalam hal ini yang dilakukan adalah melakukan pemetaan dan pengujian
terhadap kontrol yang ada didalam web application, login dan konfigurasinya,
sehingga dapat dipetakan target sistem [11].
2) Active Penetration Testing
Melakukan kegiatan aktif dalam pengujian terhadap keamanan sistem
dengan melakukan manipulasi input, pengambilan akses, dan melakukan
pengujian terhadap vulnerability-vulnerability yang sudah ada [11].
3) Aggressive Penetration Testing
Melakukan
eksploitasi
terhadap
vulnerability,
melakukan
reverse
enginering terhadap perangkat lunak dan sistem, menanamkan backdoor,
mendownload code, mencoba mengambil alih informasi yang ada di server
[11].
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
19
2.6
SQL Injection
SQL Injection adalah sebuah aksi hacking yang dilakukan di aplikasi client
dengan cara memodifikasi perintah SQL yang ada di memori aplikasi client. SQL
Injection merupakan teknik mengeksploitasi aplikasi berbasis yang di dalamnya
menggunakan basis data untuk penyimpanan data.
Penyebab utama terjadinya SQL Injection adalah tidak adanya penanganan
terhadap karakter-karakter tanda petik satu (‘) dan juga karakter double minus (--)
yang menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL. Sehingga
seorang hacker menyisipkan perintah SQL ke dalam parameter suatu form.
Serangan SQL Injection memanfaatkan kelalaian dari website yang mengijinkan
user untuk meng-input-kan data tertentu tanpa melakukan filter terhadap
malicious character [12]. Input tersebut biasanya dimasukkan pada box search
atau bagian-bagian tertentu dari website yang berinteraksi dengan basis data SQL
dari situs tersebut.
Bug SQL Injection sangat berbahaya, karena teknik ini memungkinkan
seseorang dapat login ke dalam sistem tanpa harus memeiliki account. Selain itu
SQL Injection juga memungkinkan seseorang, mengubah, menghapus, maupun
menambahkan data-data yang berada di dalam basis data. Bahkan yang lebih
berbahaya lagi yaitu mematikan basis data itu sendiri, sehingga tidak dapat
memberi layanan kepada web server.
2.6.1
Contoh sintaks SQL Injection
Sebagai contoh misalkan ada suatu aplikasi berbasis web dengan source
code seperti yang ditunjukkan pada Gambar 2.1.
$SQL = “select ” from login where username = ‘$username’ and password =
‘$password’”;
Gambar 2.1 Contoh source code aplikasi berbasis web
dengan metode pengiriman data GET ataupun POST, maka query seperti ini dapat
diinjeksi dengan mengisikan string ’ or ‘’=‘ pada loginform, sehingga hasilnya
akan seperti ini pada Gambar 2.2.
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
20
$SQL = “select “ from login where username = ‘user’ or ‘’=‘’ and
password= ‘pass’ or ‘’= ‘’;
Gambar 2.2 Contoh penggunaan SQL Injection
dengan sintaks SQL Injection ini hasil selection akan selalu TRUE sehingga
aplikasi tersebut dapat ditembus seperti contoh pada Gambar 2.3.
Gambar 2.3 Contoh SQL Injection pada Loginform
Tidak hanya itu, variasi kode SQL Injection memiliki banyak versi
tergantung dari source code query nya seperti apa. Beberapa contoh variasi kode
SQL Injection yang pada umumnya dilakukan oleh para attacker adalah seperti
pada Gambar 2.4 berikut [13]:
’ or ‘1’=‘1
” or “1”=“1
’) or (‘1’=‘1
”) or (“1”=“1
’#
’ or 0=0 -” or 0=0 -or 0=0 -’ or 0=0 #
” or 0=0 #
Gambar 2.4 Beberapa contoh variasi kode SQL Injection
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
21
2.6.2 Cara Pencegahan SQL Injection
1) Membatasi panjang input box (jika
memungkinkan),
dengan
cara
membatasinya di kode program, jadi si cracker pemula akan bingung sejenak
melihat input box nya tidak dapat diinjeksi dengan perintah panjang [13].
2) Memfilter input yang dimasukkan oleh user, terutama penggunaan tanda kutip
tunggal (Input Validation) [13].
3) Mematikan atau menyembunyikan pesan-pesan error yang keluar dari SQL
Server yang berjalan [13].
4) Mematikan fasilitas-fasilitas standar seperti Stored Procedures, Extended
Stored Procedures jika memungkinkan [13].
5) Mengubah “Startup and run SQL server” menggunakan low privilege user di
SQL Server Security tab [13].
2.7
Perangkat Lunak
2.7.1
Sistem Operasi
Sistem operasi (biasa disingkat ke OS, O/S atau kernel) adalah sebuah
antarmuka antara perangkat keras dan perangkat lunak dalam sistem komputer.
OS bertanggung jawab atas pengelolaan dan koordinasi kegiatan dan berbagi dari
keterbatasan sumber daya dari komputer. Sistem operasi yang bertindak sebagai
tuan rumah untuk aplikasi yang berjalan di komputer. Sebagai tuan rumah, tujuan
utama dari sistem operasi adalah untuk menangani secara rincian operasi
perangkat keras. Hal ini membebaskan program aplikasi untuk mengelola
perangkat keras tingkat rendah dan membuatnya lebih mudah untuk menulis
perangkat lunak. Hampir semua komputer, termasuk laptop, komputer desktop,
supercomputer, dan bahkan video game konsol, menggunakan sistem operasi dari
berbagai jenis. Beberapa model lama mungkin menggunakan sistem operasi
embedded, yang mungkin disimpan pada kompak disk atau perangkat penyimpan
data. Beberapa contoh sistem operasi adalah Windows, Linux, dan Macintosh
[14].
2.7.2
Web Server Apache
Apache merupakan web server yang paling banyak dipergunakan di
internet. Program ini pertama kali didesain untuk sistem operasi lingkungan
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
22
UNIX. Namun demikian, pada beberapa versi berikutnya Apache menegeluarkan
programnya yang dapat dijalankan di Windows NT [15].
Saat ini Apache dipergunakan secara luas. Hal ini disebabkan karena
programnya yang gratis, dengan kinerja relatif stabil. Apache mempunyai
program pendukung yang cukup banyak. Hal ini memberikan layanan yang cukup
lengkap bagi penggunanya.
2.7.2.1 Program Pendukung Apache
1) Kontrol Akses
Kontrol ini dapat dijalankan berdasarkan nama host atau nomor IP.
2) CGI (Common Gateway Interface)
Yang paling terkenal untuk digunakan adalah perl (Practical Extraction and
Report Language), didukung oleh Apache dengan menempatkannya sebagai
modul (mod_perl).
3) PHP (Personal Home Page/PHP Hypertext Processor)
Program dengan metode semacam CGI, yang memproses teks dan bekerja di
server. Apache mendukung PHP dengan menempatkannya sebagai salah satu
modulnya (mod_php). Hal ini membuat kinerja PHP menjadi lebih baik.
4) SSI (Server Side Include)
Dengan memasukkan teks khusus dalam dokumen HTML, perintah dapat
diberikan kepada server Apache untuk melakukan tindakan atas HTML itu,
sebelum dikirimkan ke pengunjung situs.
2.7.2.2 Kelebihan Apache
Web server Apache mempunyai kelebihan dari beberapa pertimbangan di atas:
1) Apache termasuk dalam kategori freeware
2) Apache mudah sekali proses instalasinya jika dibanding web server lainnya
seperti NCSA, IIS, dan lain-lain.
3) Mampu beroperasi pada berbagai platform sistem operasi.
4) Mudah mengatur konfigurasinya. Apache hanya mempunyai empat file
konfigurasi.
5) Mudah dalam menambahkan peripheral lainnya ke dalam platform web server
nya.
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
23
2.7.3 MySQL
MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL
atau DBMS yang multithread dan multi-user. MySQL adalah Relational Database
Management System (RDBMS) yang didistribusikan secara gratis dibawah lisensi
GPL (General Public Lisence). Setiap orang bebas untuk menggunakan MySQL
[16].
MySQL sebenarnya merupakan turunan dari SQL (Structured Query
Language). SQL adalah sebuah konsep pengoperasian basis data, terutama untuk
pemilihan atau seleksi dan pemasukan data, yang memungkinkan pengoperasian
data dikerjakan dengan mudah secara otomatis. Sebagai database server, MySQL
dapat dikatakan lebih unggul dibandingkan database server lainnya dalam query
data. Hal ini terbukti untuk query yang dilakukan oleh single user, kecepatan
query MySQL dapat sepuluh kali lebih cepat PostgreSQL dan lima kali lebih
cepat dibandingkan Interbase [16].
2.7.4
PHP
PHP adalah bahasa pemrograman yang digunakan secara luas untuk
penanganan pembuatan dan pengembangan sebuah web dan bisa digunakan pada
HTML. PHP merupakan singkatan dari PHP “PHP: Hypertext Prepocessor”, dan
merupakan bahasa yang disertakan dalam dokumen HTML sekaligus bekerja di
sisi server (server-side HTML-embedded scripting). Artinya sintaks dan perintah
yang diberikan akan sepenuhnya dijalankan di server tetapi disertakan pada
halaman HTML biasa, sehingga script-nya tak tampak di sisi client [16].
PHP dirancang untuk dapat bekerja sama dengan database server dan
dibuat sedemikian rupa sehingga pembuatan dokumen HTML yang dapat
mengakses basis data menjadi begitu mudah. Tujuan dari bahasa scripting ini
adalah untuk membuat aplikasi dimana aplikasi tersebut yang dibangun oleh PHP
pada umumnya akan memberikan hasil pada web browser, tetapi prosesnya secara
keseluruhan dijalankan di server [16].
2.7.5
Web Browser
Web browser atau internet browser adalah sebuah aplikasi perangkat lunak
untuk melintasi, mengambil, dan menyajikan sumber informasi di World Wide
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
24
Web. Sumber informasi diidentifikasi denagn Uniform Resource Identifier (URI)
termasuk sebuah halaman web, gambar, video atau bagian lain dari konten web.
Tujuan utama dari web browser adalah untuk membawa sumber informasi
kepada pengguna. Proses ini dimulai ketika pengguna memasukkan sebuah
Uniform Resource Identifier (URI), misalnya http://example.com ke dalam
browser.
Sumber yang telah diambil web browser akan ditampilkan. HTML
ditampilkan ke mesin tata letak browser, dan akan diubah dari markup ke
dokumen interaktif. Selain dari HTML, web browser umumnya dapat
menampilkan setiap jenis konten yang menjadi bagian dari suatu halaman web
[17].
2.7.6
Lamp
Lamp merupakan singkatan untuk menyebutkan Linux, Apache, MySQL
dan PHP. LAMP digunakan sebagai suatu perangkat lunak yang memiliki fungsi
dari kombinasi aplikasi Linux, Apache, MySQL dan PHP. Aplikasi-aplikasi inilah
yang saling bekerjasama mengelola suatu aplikasi berbasis web dan membentuk
jaringan server lokal.
2.7.7 Havij
Havij merupakan aplikasi "Automated SQL Injection" yang dapat membantu
untuk melakukan pengujian penetrasi dan mengeksploitasi kelemahan SQL
Injection sebuah halaman web. Aplikasi inilah yang digunakan untuk menginjeksi
Simple-O dan akan di-install di komputer client (notebook). Aplikasi ini dapat
memanfaatkan kelemahan aplikasi web yang rentan, dapat melakukan back-end
database fingerprint, mengambil user dan hash kata sandi pengguna DBMS,
Dump tabel & kolom, mengabil data dari basis data, menjalankan perintah SQL
dan bahkan mengakses sistem file yang mendasari dan mengeksekusi perintah
pada sistem operasi. Dengan tampilan GUI yang cukup mudah dimengerti
membuat Havij dapat digunakan oleh seorang yang amatir sekalipun. Havij yang
digunakan dalam sistem pengujian ini adalah Havij 1.15 pro [18]. Contoh
tampilan GUI Havij adalah seperti pada Gambar 2.5.
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
25
Gambar 2.5 Tampilan GUI Havij
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
BAB III
SKENARIO PENGUJIAN SISTEM
Di dalam sebuah sistem pengujian, diperlukan sebuah skenario pegujian
yang baik, karena skenario pengujian sistem ini menjadi faktor penentu sistem
tersebut dapat berjalan dengan baik atau tidak. Pada bab 3 ini akan dijelaskan
mengenai skenario pengujian yang nanti akan dijalankan dalam menguji tingkat
keamanan Simple-O dengan menggunakan metode SQL Injection.
3.1
Spesifikasi Perangkat Keras
Pada sistem pengujian ini akan digunakan beberapa perangkat keras,
antara lain adalah 1 buah PC desktop, 1 buah notebook dan 1 buah router. PC
desktop dan notebook tersebut masing-masing berfungsi sebagai komputer server
dan komputer client yang keduanya akan saling terhubung. Berikut adalah
spesifikasi masing-masing perangkat keras.
1) Komputer
Komputer Server
ï‚·
Platform
: desktop PC
ï‚·
Motherboards
: MS-6712, vendor MSI, version 1.0
ï‚·
Processor type
: AMD Athlon AMD Athlon, 3GHz, 32 bits, clock
100Mhz, , vendor Hynix Semiconductor. L1 cache
1Mb, L2 cache 2Mb.
ï‚·
Standard memory
: 1 GB DDR1, PC2100
ï‚·
Video type
: NV17 (GeForce4 MX440), nVidia Corporation,
64Mb
ï‚·
Hard drive type
: ATA Disk, Maxtor 6E040L0, Maxtor, 40Gb
ï‚·
Optical drive type
: DVD±RW
ï‚·
Networking
: Ethernet interface, RTL8139 Ethernet, D-Link
System
ï‚·
Network speed
: 100 Mbps
ï‚·
Interface provided
: 6x USB 2.0, VGA, LAN, Audio
26
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
27
Komputer Client
ï‚·
Platform
: Notebook
ï‚·
Motherboards
: Intel Mobile 965GML Express Chipset
Motherboard
ï‚·
Processor type
: Intel Core 2 Duo Processor T7300, 2.0 GHz, 2 MB
L2 Cache, 800 MHz FSB
ï‚·
Standard memory
: 1024-MB DDR2 533 MHz SDRAM
ï‚·
Video type
: Intel Graphics Media Accelerator GMA X3100
Graphics Chipset, up to 356 MB of shared
memory, supporting Microsoft DirectX 9.0
ï‚·
Hard drive type
: 160-GB 5400 rpm SATA hard disk drive
ï‚·
Optical drive type
: DVD±RW
ï‚·
Networking
: Intel PRO/Wireless 3945BG WiFi 802.11a/b/g
Wireless LAN connection, 10/100 mbps Ethernet
LAN Card,
ï‚·
Network speed
: 100 Mbps
ï‚·
Interface provided
: 4x USB 2.0, VGA, LAN, Audio
2) Router
Router yang terpasang pada topologi sistem pengujian ini cukup penting,
karena dengan memakai router, komputer client (notebook) dan komputer
server (desktop) dapat saling terhubung. Sistem pengujian ini dilakukan di
ruangan Mercator UI, dimana PC-PC pada ruangan tersebut sudah terhubung
dengan sebuah router yang berhubungan langsung dengan JUITA (Jaringan
Universitas Indonesia Terpadu). Salah satu dari PC-PC yang ada pada ruangan
Mercator tersebutlah yang menjadi komputer server, sedangkan untuk
komputer client nya adalah notebook yang nantinya akan disambungkan ke
router menggunakan wireless.
3.2
Spesifikasi Perangkat Lunak
Pada sistem pengujian ini digunakan beberapa perangkat lunak seperti
sistem operasi, tools SQL Injection, web server, sistem manajemen basis data, dan
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
28
sebagainya. Perangkat-perangkat lunak tersebut memiliki fungsi dan peranan
penting baik sebagai sistem operasi platform PC, alat untuk melakukan pengujian
SQL injection, membentuk jaringan lokal server, dan mengelola basis data yang
pada aplikasi berbasis web yang akan diuji keamanannya. Berikut adalah
perangkat lunak yang digunakan dalam pengujian sistem ini.
1) Linux 11.10
2) Windows 7
3) LAMP
4) Havij
5) Simple-O
6) Aplikasi berbasis web dummy
7) Mozilla Firefox
3.3
Desain Jaringan dan Sistem Keamanan Simple-O
3.3.1
Desain Jaringan
Sistem pengujian ini menggunakan perangkat-perangkat keras dan
perangkat-perangkat lunak yang sudah dijelaskan di atas. Perangkat keras
utamanya adalah 1 buah PC desktop dan 1 buah notebook yang saling terhubung
dalam jaringan dan masing-masing PC desktop dan notebook tersebut berfungsi
sebagai server dan client. Komputer server dan komputer client terhubung pada
jaringan ruangan Mercator UI yang juga terhubung dengan JUITA (Jaringan
Universitas Indonesia Terpadu). Jaringan di ruangan Mercator UI terdiri dari
beberapa komputer, router, dan switch yang saling terhubung. Salah satu
komputer tersebut akan dijadikan komputer server dan terhubung dengan sebuah
notebook yang berfungsi sebagai komputer client. Komputer server (PC-Desktop)
terhubung dengan jaringan menggunakan kabel LAN sedangkan komputer client
(notebook) akan terhubung dengan jaringan menggunakan wireless. Untuk lebih
jelasnya, dapat dilihat desain topologi jaringan seperti pada Gambar 3.1 berikut.
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
29
JUITA
Switch
Router
Wireless Access Point
Komputer Client
Komputer Server
192.168.10.73
192.168.10.48
Gambar 3.1 Topologi jaringan pada sistem pengujian
Konfigurasi jaringan dari masing-masing komputer server dan komputer client
adalah sebagai berikut:
Komputer Server (PC-Desktop)
IP address (IPv4)
: 192.168.10.48
Subnet Mask
: 255.255.255.0
Default Route
: 192.168.10.1
DNS
: 192.168.10.1 152.118.24.2 152.118.24.10
Komputer Client (notebook)
IP address (IPv4)
: 192.168.10.73
Subnet Mask
: 255.255.255.0
Default Gateway
: 192.168.10.1
3.3.2
Sistem Keamanan Simple-O
Pada bab sebelumnya sudah dijelaskan apa itu aplikasi Simple-O. Aplikasi
berbasis web inilah yang akan diuji, diteliti, dan dianalisis tingkat keamanannya.
Aplikasi ini akan di-install di web server Apache yang sudah ada di komputer
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
30
server. Alamat dari web Simple-O ini adalah http://192.168.10.48/simple-o.
Berikut adalah penjelasan sistem keamanan yang ada pada web Simple-O.
3.3.2.1 Session dengan pewaktuan
Session/sesi merupakan suatu mekanisme untuk menyimpan suatu data
tertentu seperti nama pengguna atau kata sandi pada saat mengakses suatu
website. Data session tersimpan pada web server, yang berfungsi untuk
membentuk interaksi antara client dan web server. Pada prinsipnya session dan
cookie mekanisme kerjanya hampir sama, tetapi berbeda tempat penyimpanan,
jika session menyimpan data pada server sedangkan cookie menyimpan data pada
client [3].
Untuk lebih meningkatkan keamanan dari segi sesi dalam aplikasi SimpleO, maka sesi akan menggunakan pewaktuan. Pewaktuan yang dimaksud guna
untuk menghindari pengguna lupa log out dari aplikasi Simple-O sehingga dapat
mengamankan identitas pengguna. Algoritma session dengan pewaktuan dapat
dilihat pada Gambar 3.2.
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
31
Gambar 3.2 Algoritma session dengan pewaktuan web Simple-O
3.3.2.2 Password Strength Meter
Pada aplikasi Simple-O, terdapat sistem keamanan otentikasi dimana
pengguna akan dimintai username dan kata sandi [3]. Dalam pemilihan kata sandi
tersebut, pada umumnya terbagi menjadi dua hal yang utama, yaitu kata sandi
yang terpilih secara acak untuk pengguna dan kata sandi yang khusus dibuat
sendiri oleh pengguna. Pada aplikasi Simple-O ini, menggunakan sistem kata
sandi yang dibuat sendiri oleh pengguna dengan tujuan memudahkan pengguna
untuk mengingat kata sandi tersebut. Namun, terkadang kata sandi yang dibuat
oleh pengguna bersifat kurang aman bagi pengguna. Hal ini disebabkan kata sandi
yang dibuat oleh pengguna kualitasnya “kurang bagus”. Kata “kurang bagus”
disini maksudnya sebagai kombinasi kata sandi seperti kombinasi huruf besar dan
kecil, angka, dan batas minimal karakter untuk kata sandi. Sehingga dengan
adanya password strength meter, pengguna dapat mengukur seberapa bagus
kualitas kata sandi yang dibuatnya. Algoritma password strength meter seperti
pada Gambar 3.3 berikut.
Gambar 3.3 Algoritma Password Strength Meter web SIMPLE-O
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
32
3.3.2.3 Hash Kata Sandi dengan MD5
Kata sandi yang tersimpan dalam basis data Simple-O diamankan dengan
menggunakan metode hash MD5 (Message Digest 5) [3]. Metode ini membuat
kata sandi yang tersimpan dalam basis data mengalami proses hash sehingga kata
sandi yang tersimpan dalam basis data bukanlah kata sandi yang sebenarnya.
Metode hash MD5 ini menggunakan algoritma yang menerima input dari
sejumlah karakter yang bebas, kemudian mengubahnya dan menghasilkan output
heksadesimal sepanjang 32 karakter. Fungsi dari hash MD5 ini adalah agar
apabila ada orang lain yang dapat masuk ke basis data, dia tidak dapat melihat
kata sandi-kata sandi sebenarnya yang tersimpan dalam basis data. Algoritma hash
kata sandi MD5 dapat dilihat pada Gambar 3.4 berikut.
Gambar 3.4 Algoritma Hash Kata Sandi dengan MD5 web SIMPLE-O
3.3.2.4 Lupa Kata Sandi dan Ubah Kata Sandi
Pada umumnya pengguna kadang-kadang lupa kata sandi nya. Hal ini
adalah masalah yang biasa bagi manusia apalagi bagi pengguna yang memiliki
banyak akun. Akun yang banyak membuat pengguna harus memiliki banyak kata
sandi juga karena untuk pengamanan yang baik pengguna memiliki satu kata
sandi untuk satu akun. Namun sering juga ada pengguna yang memiliki satu kata
sandi untuk beberapa akun. Hal ini tidak aman apabila ada orang lain yang
mengetahui kata sandi tersebut maka akun yang lain dapat ditembus oleh orang
tersebut. Bagi pengguna yang memiliki kata sandi yang banyak, sering sekali lupa
pada kata sandi tersebut. Pada aplikasi Simple-O ini, disediakan suatu fasilitas
lupa kata sandi, sehingga pengguna yang lupa kata sandinya tetap dapat
mengetahui kata sandinya [3].
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
33
Penerapan lupa kata sandi pada aplikasi Simple-O ini bukanlah
memberitahukan sandi dari pengguna, melainkan memberikan kata sandi baru
yang dibuat oleh sistem secara acak dengan panjang 6 karakter. Pemberian kata
sandi yang dibuat oleh sistem terdiri dari huruf besar, huruf kecil, dan angka. Pada
saat masuk ke form lupa kata sandi, maka pengguna akan ditanyakan alamat
kotak suratnya (email). Dengan memasukkan alamat kotak surat, maka sistem
akan akan mengecek alamat kotak surat tersebut terdaftar dalam basis data atau
tidak. Jika alamat kotak surat dari pengguna terdaftar dalam sistem basis data,
maka proses reset kata sandi akan berlangsung.
Penerapan dari ubah kata sandi, dapat dilakukan setelah pengguna
melakukan proses login. Hal ini dikarenakan pada aplikasi Simple-O ini
menggunakan sistem login terkunci dimana pengguna yang sudah masuk ke
dalam aplikasi Simple-O tidak dapat ditembus oleh orang lain.
3.3.2.5 Proses Login dengan Sistem Terkunci
Pada aplikasi Simple-O ini proses login menggunakan sistem terkunci
sehingga tidak memungkinkan seseorang dapat menembus akun orang lain pada
saat mengerjakan soal ujian. Penerapan proses login dengan sistem terkunci ini
terdapat sebuah field yang bertujuan untuk memberikan sebuah tanda apabila
seorang pengguna sedang login atau tidak. Field tersebut memiliki nilai 0 dan 1,
dimana nilai 0 adalah kondisi dimana akun sedang tidak aktif, sedangkan nilai 1
berarti akun sedang aktif [3].
Pada bagian cekuser.html terdapat algoritma pengecekan keadaan sign
pada basis data dimana nilai dari sign=0. Apabila saat dicek nilai sign dari suatu
pengguna bernilai 0, maka pengguna dapat masuk ke program dan sistem
memperbaharui basis data dimana nilai sign berubah menjadi 1 sebagai tanda
bahwa akun tersebut sedang aktif. Pada bagian logout.html terdapat algoritma
yang mengembalikan nilai dari sign menjadi posisi semula yaitu bernilai 0 ketika
pengguna keluar dari program [3]. Algoritma login dengan sistem terkunci dapat
dilihat pada Gambar 3.5.
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
34
Gambar 3.5 Algoritma Login dengan Sistem Terkunci web Simple-O
3.3.2.6 CAPTCHA Pada Proses Login
Penerapan CAPTCHA di Simple-O ini dipasang pada bagian form login
untuk keamanan pada
sistem otentikasi. Program CAPTCHA ini diharapkan
dapat menghindari program yang dijalankan komputer untuk masuk ke dalam
sistem Simple-O. Pada script form login Simple-O terdapat sebuah kode untuk
memanggil script CAPTCHA tersebut. Sedangkan pada file cekuser.html terdapat
sebuah algoritma dimana akan mengecek pengguna memasukkan data yang sesuai
atau tidak sesuai dengan gambar CAPTCHA tersebut. CAPTCHA sendiri
memiliki aturan agar CAPTCHA tersebut berfungsi dengan maksimal, yaitu:
1) Gambar teks CAPTCHA harus terdistorsi secara acak sebelum disajikan
kepada pengguna [3].
2) CAPTCHA mudah dibaca oleh manusia dan tidak terbaca oleh komputer,
yaitu dibuat hanya dengan berdasarkan teks bacaan atau persepsi visual
lainnya [3].
3) Tingkat keamanan dari script CAPTCHA itu sendiri harus bersifat aman [3].
4) Penggunaan script CAPTCHA sendiri merupakan hal yang kurang baik
karena dikhawatirkan akan terdapat banyak kemungkinan celah yang dapat
ditembus oleh penyerang [3].
Algoritma CAPTCHA dapat dilihat pada Gambar 3.6 berikut.
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
35
Gambar 3.6 Algoritma CAPTCHA pada Login web SIMPLE-O
3.4
Skenario Pengujian
Skenario pengujian sistem ini memiliki 2 buah skenario, dimana masing-
masing skenario memiliki tahapan yang berbeda-beda. Skenario pertama adalah
pengujian menggunakan cara manual
sedangkan skenario
yang kedua
menggunakan cara otomatis. Cara manual disini maksudnya adalah melakukan
pengujian (SQL Injection pada Simple-O) tanpa menggunakan perangkat lunak
SQL Injection. Pengujian tersebut dilakukan dengan memasukkan string-string
input pada setiap tempat masukkan yang tersedia seperti URL, login form, search
bar, dan sebagainya. Hal ini berbeda dengan cara otomatis yang menggunakan
perangkat lunak, dimana pada perangkat lunak tersebut cukup dimasukkan saja
web address yang menjadi target pengujian, kemudian perangkat lunak itu sendiri
yang akan bekerja sesuai dengan perintah yang dilakukan. Semua proses SQL
Injection dilakukan di komputer client, karena komputer client lah yang berfungsi
sebagai penyerang atau dalam hal ini adalah penguji keamanan web.
3.4.1
Skenario 1: SQL Injection manual
Skenario pengujian ini dilakukan dengan memasukkan string-string di
tempat input yang nantinya akan memodifikasi source code dari aplikasi berbasis
web yang akan menjadi target. Berikut adalah tahapan-tahapan yang dilakukan
dalam skenario pengujian ini.
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
36
1) Injeksi di URL
Aplikasi berbasis web yang menjadi target adalah Simple-O yang diinstall di web server lokal, yakni Apache yang sudah ada di komputer server.
Seperti yang telah diketahui sebelumnya, ip address dari komputer server
adalah 192.168.10.48, sehingga alamat target adalah seperti berikut
http://192.168.10.48/simple-o.
Hal yang pertama dilakukan adalah membuka alamat aplikasi Simple-O
dari web browser Mozilla Firefox. Setelah terbuka maka disinilah proses SQL
Injection dijalankan. Proses yang dilakukan adalah menambahkan string-string
yang dapat mengganggu jalannya aplikasi Simple-O. String-string tersebut
antara lain dapat berupa tanda petik satu (‘), tanda plus (+), dsb. Tidak hanya
string, input yang dapat ditambahkan adalah integer, yaitu input berupa angkaangka. Penjelasan mengenai proses SQL Injection akan dijelaskan lebih rinci
pada BAB IV.
2) Injeksi di Login Form
Pada saat membuka alamat http://192.168.10.48/simple-o, maka alamat
tersebut akan menampilkan login form. Login form tersebut meminta input
antara lain adalah username, kata sandi, dan captcha yang benar. Disinilah
proses SQL Injection juga dapat dilakukan. Input username, kata sandi, dan
captcha dapat ditambahkan string-string yang bukan input seharusnya seperti
tanda petik satu (‘), kata “or”, dan sebagainya. String-string inilah yang akan
memanipulasi query yang ada dalam source code web Simple-O. Proses SQL
Injection akan dijelaskan lebih rinci pada BAB IV.
3) Memberi Pengaman
Setelah aplikasi Simple-O diuji keamanannya, maka baru source code dari
web Simple-O tersebut diberi pengaman. Pengaman ini dimaksudkan agar
proses SQL Injection tidak dapat berhasil dijalankan. Pengaman yang
diberikan tergantung dari pengujian yang sudah dilakukan, seperti apakah
bentuk SQL Injection yang berhasil dilakukan. Bentuk pengamanan ini bisa
berupa pembatalan atau pelarangan perintah memasukkan input yang
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
37
seharusnya tidak boleh dimasukkan, seperti string-string dan integer-integer
yang dapat mengganggu source code web.
4) Injeksi setelah diberi pengaman
Injeksi yang dilakukan sama seperti kedua point di atas, hanya saja pada
proses ini aplikasi Simple-O sudah diberi pengaman. Sehingga injeksi ini
sebenernya hanya untuk menguji apakah pengaman yang dipasang sudah
aman.
3.4.2
Skenario 2: SQL Injection otomatis
SQL Injection otomatis ini menggunakan perangkat lunak Havij sebagai
SQL Injection tool. Havij adalah SQL Injection tool yang bekerja dengan melihat
perintah yang diinginkan pengguna dalam menginjeksi suatu web. Proses
menginjeksi
menggunakan
perangkat
lunak
ini
sangat
mudah
apabila
dibandingkan dengan cara manual, karena pada dasarnya yang dimasukkan
sebagai input adalah address dari alamat web yang menjadi target, yaitu dalam hal
ini adalah http://192.168.10.48/simple-o. Setelah alamat target dimasukkan ke
dalam perangkat lunak Havij, barulah memilih menu-menu yang tersedia di dalam
perangkat lunak tersebut. Menu-menu inilah yang menjadi metode yang dilakukan
penyerang dalam menginjeksi suatu web. Lalu setelah itu barulah Havij dengan
secara otomatis akan mencari celah untuk menginjeksi web Simple-O sesuai
dengan metode/perintah yang diberikan.
Proses Injeksi menggunakan Havij ini tidak hanya untuk Simple-O, tetapi
juga untuk web dummy. Aplikasi berbasis web dummy ini adalah aplikasi berbasis
web yang sudah pasti dapat ditembus menggunakan Havij. Apabila nanti saat duji
web Simple-O memang tidak berhasil diinjeksi oleh Havij, maka untuk
menganalisisnya dapat dilihat dari perbandingan algoritma web Simple-O dengan
algoritma web dummy. Aplikasi web dummy ini akan di-install di web server
Apache yang sudah ada di komputer server. Alamat dari web dummy ini adalah
http://192.168.10.48/lukman01. Proses Injeksi lebih rinci dapat dilihat pada BAB
IV.
Universitas Indonesia
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
BAB IV
PENGUJIAN DAN ANALISIS SISTEM
Pada bab sebelumnya sudah dijelaskan perancangan sistem pengujian yang
akan dilakukan. Pada bab ini akan dijelaskan mengenai pengujian tersebut, hasil
uji coba dan analisisnya. Pengujian ini memiliki 2 skenario yang berbeda, yaitu
pengujian SQL Injection manual dan pengujian SQL Injection otomatis. Pengujian
SQL Injection manual dilakukan dengan memasukkan input berupa string-string
ke dalam tempat input yang tersedia dalam aplikasi Simple-O, seperti URL,
search bar, form username dan kata sandi, dan sebagainya. Sedangkan pengujian
SQL Injection otomatis dilakukan dengan menggunakan perangkat lunak Havij.
Pengujian ini hanya cukup memasukkan alamat URL Simple-O ke dalam form
address target Havij.
Pada pengujian ini tidak hanya Simple-O yang akan diuji, namun ada juga
web dummy yang sebenarnya sudah pasti dapat diinjeksi. Pengujian SQL Injection
pada web dummy ini dilakukan untuk membantu analisis apabila aplikasi web
Simple-O tidak dapat diinjeksi, sehingga nanti akan dibandingkan algoritma yang
digunakan Simple-O dengan algoritma yang digunakan web dummy. Tujuannya
adalah untuk mengetahui apakah Simple-O sudah aman atau belum dilihat dari
sisi basis datanya dan juga untuk melihat algoritma web seperti apakah yang
seharusnya diterapkan agar web tersebut basis data nya aman dari seranganserangan SQL Injection.
4.1
Skenario SQL Injection Manual
Pada skenario pengujian SQL Injection manual ini akan dilakukan 3 kali
pengujian, yaitu pengujian pertama web Simple-O akan diinjeksi di URL nya,
pengujian kedua web Simple-O akan diinjeksi pada login form, dan pengujian
ketiga adalah pengulangan pengujian pertama dan kedua namun Simple-O sudah
diberi pengaman.
38
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
39
4.1.1 Injeksi di URL
4.1.1.1 Pengujian
Sebelum melakukan SQL Injection di URL, perlu diketahui bahwa pada
umumnya alamat sebuah web yang kemungkinan memiliki vulnerability adalah
seperti ini sebagai contoh http://www.example.com/contoh.php?id=123 [19]. Pada
alamat tersebut halaman web memiliki variabel “id” dan memiliki nilai (value)
“123”. Variabel-varaibel inilah yang membuat web dapat dieksplorasi. Namun,
untuk mengatasi hal tersebut, biasanya administrator web akan menyembunyikan
variable-variabel tersebut dengan menggunakan metode POST. Sebagai contoh
adalah SQL Injection di URL pada aplikasi Simple-O. Sebelumnya aplikasi
Simple-O
dibuka
dahulu
dengan
mengunjungi
alamat
http://192.168.10.48/simple-o di browser Mozilla Firefox, maka akan terbuka
halaman seperti yang ditunjukkan pada Gambar 4.1 berikut.
Gambar 4.1 Loginform Simple-O
Setelah halaman loginform ini terbuka, alamat di URL berubah menjadi
http://192.168.10.48/simple-o/loginform.php.
Pada
umumnya
cara
yang
digunakan untuk menginjeksi di URL adalah menggunakan tanda petik satu (‘)
pada bagian paling belakang alamat di URL. Berdasarkan forum hacker Indonesia
[20] cara ini biasanya digunakan pertama kali untuk mengetahui apakah web yang
menjadi target memiliki vulnerability atau tidak dari sisi basis data nya. Sebagai
contoh adalah pada aplikasi Simple-O berikut.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
40
Halaman yang semula adalah seperti pada Gambar 4.2 ini.
http://192.168.10.48/simple-o/loginform.php
Gambar 4.2 Alamat web Simple-O yang belum dimodifikasi
Kemudian setelah dimodifikasi menjadi seperti pada Gambar 4.3 ini.
http://192.168.10.48/simple-o/loginform.php’
Gambar 4.3 Alamat web Simple-O yang sudah ditambah tanda petik satu (’)
Setelah itu akan muncul pesan seperti pada Gambar 4.4.
Gambar 4.4 Eror saat menggunakan tanda petik satu (‘)
Apabila eror, ini artinya web tersebut vulnerability, sehingga dugaan awal
adalah aplikasi Simple-O memiliki vulnerability pada URL nya [20]. Kemudian
langkah berikutnya adalah menghitung tabel basis data yang ada di Simple-O.
Cara yang digunakan berdasarkan forum hacker Indonesia [20] adalah dengan
memodifikasi alamat URL dengan perintah ORDER BY, seperti berikut.
Halaman yang semula adalah seperti pada Gambar 4.5 ini.
http://192.168.10.48/simple-o/loginform.php
Gambar 4.5 Alamat web Simple-O yang belum dimodifikasi
Kemudian setelah dimodifikasi menjadi seperti pada Gambar 4.6 ini.
http://192.168.10.48/simple-o/loginform.php+order+by+1
Gambar 4.6 Alamat web Simple-O yang sudah ditambah perintah ORDER BY
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
41
Setelah itu akan muncul pesan seperti pada Gambar 4.7.
Gambar.4.7 Eror saat menggunakan perintah ORDER BY
Hal ini menginfokan bahwa aplikasi Simple-O tidak memiliki tabel basis
data. Itu artinya pada alamat http://192.168.10.48/simple-o/loginform.php tidak
memiliki operasi basis data, sehingga dengan kata lain URL dari aplikasi SimpleO tidak dapat diinjeksi karena sudah aman. Untuk penjelasan lebih rincinya dapat
dilihat di analisis berikut.
4.1.1.2 Analisis
1) Analisis Method
Saat pertama kali membuka alamat http://192.168.10.48/simple-o di
Mozilla Firefox, tampilan yang terbuka adalah tampilan loginform aplikasi
Simple-O. Namun, saat alamat tersebut dibuka, alamat di URL di Mozilla Firefox
berubah menjadi http://192.168.10.48/simple-o/loginform.php. Ini artinya saat
pertama kali membuka alamat http://192.168.10.48/simple-o halaman yang
diakses berdasarkan source code web aplikasi Simple-O adalah loginform.php.
Setelah diketahui alamat di URL berubah menjadi http://192.168.10.48/simpleo/loginform.php dapat dilihat bahwa metode pengiriman
aplikasi Simple-O
menggunakan metodh POST. Hal ini juga dapat dilihat dari source code aplikasi
Simple-O seperti pada Gambar 4.8.
<form action="cekuser.php" method="post" onSubmit="return CheckAll(this);">
Gambar 4.8 Source code method POST web Simple-O
Metode atau method adalah suatu proses bagaimana suatu data dikirimkan
ke web server [21]. Pada pemrograman web dikenal 2 method yaitu method POST
dan method GET. Keduanya memiliki perbedaan, dimana perbedaan yang paling
mencolok adalah variabel yang dikirimkan. Di dalam method GET, variabel yang
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
42
dikirimkan terlihat di URL, sedangkan di dalam method POST variabel yang
dikirimkan tersembunyi. Seperti contohnya adalah sebagai berikut.
Contoh alamat di URL yang menggunakan method GET seperti pada Gambar 4.9.
http://www.example.com/contoh.php?id=123
Gambar 4.9 Alamat web yang menggunakan method GET
Contoh alamat di URL yang menggunakan method POST seperti pada Gambar
4.10
http://www.example.com/contoh.php
Gambar 4.10 Alamat web yang menggunakan method POST
Berdasarkan contoh di atas, dapat dilihat bahwa pada method GET di URL
nya terdapat variabel “id” dengan nilai/value bernilai “123”. Variabel ini lah yang
dapat dimodifikasi oleh client untuk menginjeksi web tersebut. Berbeda dengan
method POST, method ini menyembunyikan variabel data yang akan dikirimkan
ke web server. Contohnya adalah seperti web aplikasi Simple-O, pada saat web
tersebut
dibuka
alamat
URL
nya
adalah
http://192.168.10.48/simple-
o/loginform.php. Untuk mengetahui perbedaan method GET dan POST lebih rinci
dapat dilihat perbedaan berikut.
Method GET
ï‚·
Variabel telihat pada URL, data setiap variabel dipisahkan dengan &. Contoh
http://url/page.php?get1=nilai2&get2=nilai2 [21].
ï‚·
Dibatasi oleh panjang string sebanyak 2047 karakter [21].
ï‚·
Memungkinkan pengunjung langsung memasukkan nilai variabel pada form
proses [21].
ï‚·
Variabel diambil dengan $_REQUEST[“nama”] atau $_GET[“nama”] [21]
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
43
Method POST
ï‚·
Nilai variabel tersembunyi untuk pengunjung [21].
ï‚·
Lebih aman karena lebih susah untuk dimainkan pengunjung melalui
pergantian nama variabel [21].
ï‚·
Tidak dibatasi oleh panjang string [21].
ï‚·
Variabel diambil dengan $_REQUEST[“nama”] atau $_POST[“nama”] [21].
Dilihat dari perbedaan di atas, diketahui bahwa method POST lebih aman
dibandingkan dengan method GET. Hal inilah yang menjadi salah satu faktor
injeksi di URL alamat Simple-O tidak berhasil. Sehingga dapat dikatakan bahwa
Simple-O sudah cukup aman bila dilihat dari sisi alamat URL nya karena
menggunakan method POST.
2) Analisis Operasi Basis Data
Pada saat pengujian yang telah dijelaskan di atas tadi, terlihat bahwa saat
di bagian akhir alamat Simple-O diberi tanda petik satu (‘) muncul sebuah pesan
eror. Ini adalah cara untuk menguji apakah MySQL memiliki bug atau tidak.
Apabila saat string tanda petik satu (‘) tersebut dimasukkan muncul pesan eror, itu
artinya MySQL memiliki bug [20]. Apabila bug muncul, itu artinya ada
kemungkinan web tersebut dapat diinjeksi [20]. Sehingga itulah yang membuat
dugaan awal muncul bahwa alamat URL web Simple-O tidak aman.
Namun, dugaan tersebut hilang setelah dilakukan pengujian untuk
menghitung jumlah tabel basis data yang ada pada aplikasi Simple-O. Seperti
yang telah dijelaskan di pengujian di atas tadi, untuk menghitung jumlah tabel
basis data yang terdapat di suatu web dapat menggunakan perintah ORDER BY
[20]. Perintah ini diletakkan di bagian belakang URL sama seperti saat
pengecekan bug MySQL seperti yang telah dijelaskan juga. Berikut akan
dijelaskan contoh pemakaian perintah ORDER BY.
Misalkan alamat target URL nya adalah seperti pada Gambar 4.11 ini.
http://www.example.com/contoh.php?id=123
Gambar 4.11 Contoh alamat web sebelum diberi perintah ORDER BY
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
44
Maka perintah ORDER BY tersebut dapat dipakai seperti pada Gambar 4.12 ini.
http://www.example.com/contoh.php?id=123+order+by+1
Gambar 4.12 Contoh alamat web yang sudah diberi perintah ORDER BY
Dilihat dari contoh di atas ini, string tambah (+) digunakan seperti fungsi
spasi. Namun di dalam URL, spasi tersebut diganti dengan string tambah (+).
Sedangkan untuk angka 1 ini berfungsi untuk menguji banyaknya tabel yang akan
dicari. Misalnya web yang menjadi target memiliki 4 tabel basis data. Maka pada
saat pengujian dilakukan pengujian sebanyak 5 kali, seperti contoh Gambar 4.13.
http://www.example.com/contoh.php?id=123+order+by+1  tidak terjadi eror
http://www.example.com/contoh.php?id=123+order+by+2  tidak terjadi eror
http://www.example.com/contoh.php?id=123+order+by+3  tidak terjadi eror
http://www.example.com/contoh.php?id=123+order+by+4  tidak terjadi eror
http://www.example.com/contoh.php?id=123+order+by+5  terjadi eror
Gambar 4.13 Contoh pengujian mencari banyaknya tabel basis data
Dilihat dari contoh di atas ini, client yang menginjeksi menguji satu per satu
menggunakan perintah ORDER BY. Apabila terjadi eror itu artinya tabel pada
basis data tidak ada. Maksudnya jika dilihat dari contoh, angka 5 pada saat
menggunakan perintah ORDER BY adalah tabel basis data ke-5. Namun ternyata
setelah diuji muncul pesan eror, itu artinya tabel basis data ke-5 tidak ada.
Sehingga dapat disimpulkan bahwa web tersebut hanya memiliki 4 tabel basis
data.
Pada kasus Simple-O saat perintah ORDER BY dilakukan, pada
percobaan tabel basis data 1 sudah muncul eror seperti pada Gambar 4.14.
http://192.168.10.48/simple-o/loginform.php+order+by+1  terjadi eror
Gambar 4.14 Pengujian perintah ORDER BY pada web Simple-O
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
45
Ini artinya tabel basis data ke-1 (pertama) tidak ada. Jika tabel basis data pertama
saja sudah tidak ada artinya basis data yang dimiliki tidak memiliki tabel. Di
dalam basis data pastilah terdapat minimal 1 buah tabel.
Namun pada Simple-
O tidak terdeteksi satu pun tabel, ini artinya Simple-O tidak memiliki basis data.
Sebenarnya berdasarkan pengujian ini bukan berarti Simple-O tidak memiliki
basis data, hanya saja pada saat pengujian di URL http://192.168.10.48/simpleo/loginform.php, halaman web loginform.php memang tidak memiliki operasi
basis data. Sehingga inilah yang membuat SQL Injection di URL web aplikasi
Simple-O tidak berhasil.
Jadi dapat disimpulkan bahwa hal yang menyebabkan SQL Injection di
URL Simple-O gagal adalah karena web aplikasi Simple-O menggunakan method
POST dan juga karena halaman loginform.php yang diakses memang tidak
memiliki operasi basis data atau dapat dibilang tidak ada keterkaitan dengan basis
data.
4.1.2 Injeksi di loginform
Sebelum dilakukan pengujian, perlu diketahui bahwa Simple-O adalah
aplikasi berbasis web yang memiliki 2 macam pengguna, yaitu mahasiswa dan
dosen. Saat Simple-O digunakan dengan user sebagai mahasiswa, maka tampilan
yang akan terbuka adalah tampilan khusus untuk mahasiswa, yaitu soal-soal ujian
essay yang harus dikerjakan/diisi oleh mahasiswa. Sedangkan saat Simple-O
digunakan dengan user sebagai dosen, maka tampilan yang akan terbuka tampilan
adalah tampilan khusus dosen, yaitu tampilan untuk dosen menulis/mengedit soal
ujian dan jawaban, serta untuk melihat list nilai mahasiswa yang sudah
melaksanakan ujian. Sehingga untuk itulah web aplikasi Simple-O ini harus
memiliki 2 tipe user, yaitu mahasiswa dan dosen. Apabila ada client yang bukan
dosen namun dapat masuk sebagai dosen, hal ini akan menjadi berbahaya, untuk
itulah pengujian ini sangat penting.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
46
4.1.2.1 Pengujian
Web aplikasi Simple-O memiliki user id seperti Tabel 4.1 dan Tabel 4.2.
Tabel 4.1. User ID Mahasiswa pada web Simple-O
Nama
User ID
Gregorius Handoyo
iyuzh
Meirisal Dwi
mei
Tabel 4.2. User ID Dosen pada web Simple-O
Nama
User ID
Administrator
root
Anak Agung Putri Ratna
bu_ratna
Bagio Budiardjo
pak_bagio
N.R. Poespawati
bu_pupu
Endang Sriningsih
bu_endang
Sar Sardy
pak_sardy
Natalia Vivianti
natalia
F. Astha Ekadiyanto
Astha
M. Salman
salman
Adhe Widi Astato
Adhe
Natalia Evianti
vivi
Rudy Setiabudy
Rudy
Arief Udhiarto
Arief
Iwa Garniwa
Iwa
Dodi Sudiana
Dodi
Amien Rahardjo
Amien
AAP Ratna
ratna
Adri Gautama
Adri
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
47
1) Injeksi di form user id
Injeksi di loginform ini dilakukan saat halaman loginform sedang diakses,
yaitu dengan membuka alamat http://192.168.10.48/simple-o/loginform.php,
maka akan terbuka tampilan seperti yang ditunjukkan pada Gambar 4.15 berikut.
Gambar 4.15 Tampilan loginform Simple-O
Berdasarkan Gambar 4.15 di atas, dapat dilihat bahwa loginform Simple-O
memiliki input user id, kata sandi dan captcha. Tempat input tersebutlah yang
menjadi tempat untuk melakukan proses SQL Injection.
Pada saat tampilan loginform terbuka, tentu saja agar bisa masuk harus
memasukkan user id, kata sandi, dan captcha yang benar. Namun terkadang pada
beberapa web yang tidak aman, client dapat masuk tanpa memasukkan kata sandi,
seperti contoh pengujian yang akan dilakukan pada loginform Simple-O ini
dengan melakukan SQL Injection. Pada bab sebelumnya sudah dijelaskan sedikit
mengenai sintaks SQL Injection seperti ditunjukkan pada Gambar 4.16.
’ or ‘1’=‘1
” or “1”=“1
’) or (‘1’=‘1
”) or (“1”=“1
’#
’ or 0=0 --
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
48
” or 0=0 -or 0=0 -’ or 0=0 #
” or 0=0 #
Gambar 4.16 Sintaks SQL Injection yang digunakan web Simple-O
Sintaks inilah yang berdasarkan forum hacker Indonesia [20] yang pada umumnya
digunakan untuk menginjeksi aplikasi berbasis web. Sehingga sintak-sintaks ini
akan digunakan untuk menginjeksi aplikasi web Simple-O. Sintaks ini akan
dimasukkan pada form user id web Simple-O bersama dengan nama user id yang
sudah diketahui tadi, karena penggunaan sintaks ini agar berhasil minimal harus
mengetahui user id. Hal ini akan dijelaskan lebih rinci di bagian analisis.
Misalkan user id yang dipakai adalah “iyuzh”, yaitu user sebagai mahasiswa,
sehingga input yang akan dimasukkan ke form user id adalah seperti pada Gambar
4.17.
iyuzh’ or ‘1’=‘1
iyuzh” or “1”=“1
iyuzh’) or (‘1’=‘1
iyuzh”) or (“1”=“1
iyuzh’ #
iyuzh’ or 0=0 -iyuzh” or 0=0 -iyuzh or 0=0 -iyuzh’ or 0=0 #
iyuzh” or 0=0 #
Gambar 4.17 User id “iyuzh” dan sintaks SQL Injection
Dengan menggunakan sintaks seperti pada Gambar 4.17 di atas, client tidak perlu
memasukkan kata sandi lagi. Misal sintaks yang ingin diuji pertama kali adalah
sintaks iyuzh’ or ‘1’=‘1 seperti yang terlihat pada Gambar 4.18 berikut.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
49
Gambar 4.18 Proses SQL Injection menggunakan sintaks iyuzh’ or ‘1’=’1
Setelah sintaks iyuzh’ or ‘1’=‘1 dimasukkan ke dalam form user id, form
kata sandi dikosongkan, captcha atau code secure harus tetap dimasukkan. Hal ini
disebabkan apabila captcha atau secure code tidak dimasukkan, proses SQL
Injection tetap tidak akan berhasil. Sehingga apabila loginform sudah terisi seperti
kondisi di atas, pada saat di-submit akan terbuka halaman seperti pada Gambar
4.19.
Gambar 4.19 Simple-O berhasil ditembus menggunakan sintaks iyuzh’ or ‘1’= ‘1
Berdasarkan Gambar 4.19 di atas dapat dilihat bahwa web aplikasi dapat
ditembus dengan menggunakan sintaks iyuzh’ or ‘1’=‘1. Saat menggunakan
sintaks tersebut, web aplikasi Simple-O dapat terbuka dengan user yang
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
50
teridentifikasi adalah iyuzh’ or ‘1’=‘1 dan pengguna yang teridentifikasi adalah
sebagai dosen. Karena tampilan yang terbuka adalah sebagai dosen, maka pada
tampilan ini client akan bertindak sebagai dosen dimana client tersebut dapat
melihat nilai-nilai mahasiswa yang sudah melakukan ujian, membuat soal dan
jawaban ujian, dan mengganti kata sandi. Hal ini sangat berbahaya, karena client
yang memiliki motif yang tidak baik dapat memanipulasi web Simple-O, mencuri
soal dan jawaban ujian, melihat nilai-nilai mahasiswa, bahkan mengganti bobot
jawaban ujian.
Pada pengujian di atas, sintaks yang dipakai menggunakan user sebagai
mahasiswa, yaitu “iyuzh”. Namun tampilan yang terbuka adalah tampilan web
Simple-O untuk pengguna dosen. Hal ini akan dijelaskan di bagian analisis. Kini
akan dilakukan pengujian lagi namun user yang digunakan dalam sintaks SQL
Injection adalah user sebagai dosen. Misalkan user yang dipakai untuk pengujian
ini adalah “ratna”, sehingga sintaks yang akan dimasukkan ke dalam form user id
adalah seperti Gambar 4.20 berikut.
ratna’ or ‘1’=‘1
Gambar 4.20 User id “ratna” dan sintaks SQL Injection
Kemudian dengan cara yang sama, maka proses SQL Injection dilakukan seperti
pada Gambar 4.21 berikut.
Gambar 4.21 Proses SQL Injection menggunakan sintaks ratna’ or ‘1’=‘1
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
51
Setelah proses SQL Injection dilakukan seperti pada Gambar 4.21, maka hasilnya
seperti pada Gambar 4.22 ini.
Gambar 4.22 Simple-O berhasil ditembus menggunakan sintaks ratna’ or ‘1’=‘1
Berdasarkan Gambar 4.22 di atas, dapat dilihat ternyata aplikasi Simple-O
dapat diinjeksi menggunakan cara yang sama tetapi sintaks yang digunakan
adalah ratna’ or ‘1’=‘1. Pada tampilan di atas juga dapat dilihat bahwa tampilan
yang terbuka adalah tampilan untuk pengguna dosen dengan user yang
teridentifikasi adalah ratna’ or ‘1’=‘1. Hasil pengujian ini sama seperti pengujian
sebelumnya saat menggunakan sintaks iyuzh’ or ‘1’=‘1, yaitu kedua menampilkan
tampilan Simple-O dengan status pengguna adalah dosen. Namun pada kedua
pengujian ini juga terdapat perbedaan yaitu nama user id yang digunakan, dimana
“iyuzh” adalah user id mahasiswa, sedangkan “ratna” adalah user id dosen.
Apabila Simple-O terbuka dengan menggunakan cara yang sebenarnya
(tanpa SQL Injection) maka saat yang digunakan user id “iyuzh”, tampilan
Simple-O yang terbuka adalah tampilan Simple-O untuk mahasiswa, sedangkan
saat user id yang digunakan adalah “ratna”, tampilan Simple-O yang terbuka
adalah tampilan Simple-O untuk dosen. Tetapi pada saat Simple-O terbuka
dengan menggunakan SQL Injection, baik user id “iyuzh” maupun “ratna”,
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
52
tampilan yang terbuka adalah tampilan untuk dosen. Hal ini akan dibahas lebih
rinci di bagian analisis.
Kini yang akan diuji adalah semua user id yang terdaftar dalam basis data
web Simple-O seperti pada Tabel 4.1 dan Tabel 4.2 digabung dengan semua
sintaks seperti pada Gambar 4.16 dengan menggunakan cara dan metode yang
sama. Hal ini dilakukan untuk membuktikan apakah semua user yang terdaftar
dalam basis data web Simple-O dan semua sintaks SQL Injection dapat dipakai
untuk proses SQL Injection. Hasil pengujian tersebut dapat dilihat pada tabel-tabel
berikut.
Tabel 4.3. Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ’ or
‘1’=‘1 dalam proses SQL Injection di form user id web Simple-O
No.
User ID
Status
Sintaks
Hasil
Status
1
root
User ID
Dosen
root’ or ‘1’=‘1
Injeksi
berhasil
Web User
Dosen
2
bu_ratna
Dosen
berhasil
Dosen
3
pak_bagio
Dosen
berhasil
Dosen
4
bu_pupu
Dosen
berhasil
Dosen
5
bu_endang
Dosen
berhasil
Dosen
6
pak_sardy
Dosen
berhasil
Dosen
7
natalia
Dosen
bu_ratna’ or
‘1’=‘1
pak_bagio’ or
‘1’=‘1
bu_pupu’ or
‘1’=‘1
bu_endang’ or
‘1’=‘1
pak_sardy’ or
‘1’=‘1
natalia’ or ‘1’=‘1
berhasil
Dosen
8
Astha
Dosen
Astha’ or ‘1’=‘1
berhasil
Dosen
9
salman
Dosen
salman’ or ‘1’=‘1
berhasil
Dosen
10
Adhe
Dosen
Adhe’ or ‘1’=‘1
berhasil
Dosen
11
vivi
Dosen
vivi’ or ‘1’=‘1
berhasil
Dosen
12
Rudy
Dosen
Rudy’ or ‘1’=‘1
berhasil
Dosen
13
Arief
Dosen
Arief’ or ‘1’=‘1
berhasil
Dosen
14
Iwa
Dosen
Iwa’ or ‘1’=‘1
berhasil
Dosen
15
Dodi
Dosen
Dodi’ or ‘1’=‘1
berhasil
Dosen
16
Amien
Dosen
Amien’ or ‘1’=‘1
berhasil
Dosen
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
53
17
ratna
Dosen
ratna’ or ‘1’=‘1
berhasil
Dosen
18
Adri
Dosen
Adri’ or ‘1’=‘1
berhasil
Dosen
19
iyuzh
Mahasiswa
iyuzh’ or ‘1’=‘1
berhasil
Dosen
20
mei
Mahasiswa
mei’ or ‘1’=‘1
berhasil
Dosen
Tabel 4.4 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ” or
“1”=“1 dalam proses SQL Injection di form user id web Simple-O
No.
User ID
Status
Sintaks
Hasil Injeksi
User ID
Dosen
root” or “1”=“1
gagal
1
root
2
bu_ratna
Dosen
bu_ratna” or “1”=“1
gagal
3
pak_bagio
Dosen
pak_bagio” or “1”=“1
gagal
4
bu_pupu
Dosen
bu_pupu” or “1”=“1
gagal
5
bu_endang
Dosen
bu_endang” or “1”=“1
gagal
6
pak_sardy
Dosen
pak_sardy” or “1”=“1
gagal
7
natalia
Dosen
natalia” or “1”=“1
gagal
8
Astha
Dosen
Astha” or “1”=“1
gagal
9
salman
Dosen
salman” or “1”=“1
gagal
10
Adhe
Dosen
Adhe” or “1”=“1
gagal
11
vivi
Dosen
vivi” or “1”=“1
gagal
12
Rudy
Dosen
Rudy” or “1”=“1
gagal
13
Arief
Dosen
Arief” or “1”=“1
gagal
14
Iwa
Dosen
Iwa” or “1”=“1
gagal
15
Dodi
Dosen
Dodi” or “1”=“1
gagal
16
Amien
Dosen
Amien” or “1”=“1
gagal
17
ratna
Dosen
ratna” or “1”=“1
gagal
18
Adri
Dosen
Adri” or “1”=“1
gagal
19
iyuzh
Mahasiswa
iyuzh” or “1”=“1
gagal
20
mei
Mahasiswa
mei” or “1”=“1
gagal
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
54
Tabel 4.5 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ’) or
(‘1’=‘1 dalam proses SQL Injection di form user id web Simple-O
No.
User ID
Status
Sintaks
Hasil Injeksi
User ID
Dosen
root’) or (‘1’=‘1
gagal
1
root
2
bu_ratna
Dosen
bu_ratna’) or (‘1’=‘1
gagal
3
pak_bagio
Dosen
pak_bagio’) or (‘1’=‘1
gagal
4
bu_pupu
Dosen
bu_pupu’) or (‘1’=‘1
gagal
5
bu_endang
Dosen
bu_endang’) or (‘1’=‘1
gagal
6
pak_sardy
Dosen
pak_sardy’) or (‘1’=‘1
gagal
7
natalia
Dosen
natalia’) or (‘1’=‘1
gagal
8
Astha
Dosen
Astha’) or (‘1’=‘1
gagal
9
salman
Dosen
salman’) or (‘1’=‘1
gagal
10
Adhe
Dosen
Adhe’) or (‘1’=‘1
gagal
11
vivi
Dosen
vivi’) or (‘1’=‘1
gagal
12
Rudy
Dosen
Rudy’) or (‘1’=‘1
gagal
13
Arief
Dosen
Arief’) or (‘1’=‘1
gagal
14
Iwa
Dosen
Iwa’) or (‘1’=‘1
gagal
15
Dodi
Dosen
Dodi’) or (‘1’=‘1
gagal
16
Amien
Dosen
Amien’) or (‘1’=‘1
gagal
17
ratna
Dosen
ratna’) or (‘1’=‘1
gagal
18
Adri
Dosen
Adri’) or (‘1’=‘1
gagal
19
iyuzh
Mahasiswa
iyuzh’) or (‘1’=‘1
gagal
20
mei
Mahasiswa
mei’) or (‘1’=‘1
gagal
Tabel 4.6 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ”) or
(“1”=“1 dalam proses SQL Injection di form user id web Simple-O
No.
User ID
1
root
2
bu_ratna
Status
Sintaks
Hasil Injeksi
User ID
Dosen
root”) or (“1”=“1
gagal
Dosen
bu_ratna”) or (“1”=“1
gagal
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
55
3
pak_bagio
Dosen
pak_bagio”) or (“1”=“1
gagal
4
bu_pupu
Dosen
bu_pupu”) or (“1”=“1
gagal
5
bu_endang
Dosen
bu_endang”) or (“1”=“1
gagal
6
pak_sardy
Dosen
pak_sardy”) or (“1”=“1
gagal
7
natalia
Dosen
natalia”) or (“1”=“1
gagal
8
Astha
Dosen
Astha”) or (“1”=“1
gagal
9
salman
Dosen
salman”) or (“1”=“1
gagal
10
Adhe
Dosen
Adhe”) or (“1”=“1
gagal
11
vivi
Dosen
vivi”) or (“1”=“1
gagal
12
Rudy
Dosen
Rudy”) or (“1”=“1
gagal
13
Arief
Dosen
Arief”) or (“1”=“1
gagal
14
Iwa
Dosen
Iwa”) or (“1”=“1
gagal
15
Dodi
Dosen
Dodi”) or (“1”=“1
gagal
16
Amien
Dosen
Amien”) or (“1”=“1
gagal
17
ratna
Dosen
ratna”) or (“1”=“1
gagal
18
Adri
Dosen
Adri”) or (“1”=“1
gagal
19
iyuzh
Mahasiswa
iyuzh”) or (“1”=“1
gagal
20
mei
Mahasiswa
mei”) or (“1”=“1
gagal
Tabel 4.7 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ’ #
dalam proses SQL Injection di form user id web Simple-O
No.
User ID
Status
Sintaks
Hasil
Status
1
root
User ID
Dosen
root’ #
Injeksi
berhasil
Web User
Dosen
2
bu_ratna
Dosen
bu_ratna’ #
berhasil
Dosen
3
pak_bagio
Dosen
pak_bagio’ #
berhasil
Dosen
4
bu_pupu
Dosen
bu_pupu’ #
berhasil
Dosen
5
bu_endang
Dosen
bu_endang’ #
berhasil
Dosen
6
pak_sardy
Dosen
pak_sardy’ #
berhasil
Dosen
7
natalia
Dosen
natalia’ #
berhasil
Dosen
8
Astha
Dosen
Astha’ #
berhasil
Dosen
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
56
9
salman
Dosen
salman’ #
berhasil
Dosen
10
Adhe
Dosen
Adhe’ #
berhasil
Dosen
11
vivi
Dosen
vivi’ #
berhasil
Dosen
12
Rudy
Dosen
Rudy’ #
berhasil
Dosen
13
Arief
Dosen
Arief’ #
berhasil
Dosen
14
Iwa
Dosen
Iwa’ #
berhasil
Dosen
15
Dodi
Dosen
Dodi’ #
berhasil
Dosen
16
Amien
Dosen
Amien’ #
berhasil
Dosen
17
ratna
Dosen
ratna’ #
berhasil
Dosen
18
Adri
Dosen
Adri’ #
berhasil
Dosen
19
iyuzh
Mahasiswa
iyuzh’ #
berhasil
Dosen
20
mei
Mahasiswa
mei’ #
berhasil
Dosen
Tabel 4.8 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ’ or
0=0 -- dalam proses SQL Injection di form user id web Simple-O
No.
User ID
Status
Sintaks
Hasil Injeksi
User ID
Dosen
root’ or 0=0 --
gagal
1
root
2
bu_ratna
Dosen
bu_ratna’ or 0=0 --
gagal
3
pak_bagio
Dosen
pak_bagio’ or 0=0 --
gagal
4
bu_pupu
Dosen
bu_pupu’ or 0=0 --
gagal
5
bu_endang
Dosen
bu_endang’ or 0=0 --
gagal
6
pak_sardy
Dosen
pak_sardy’ or 0=0 --
gagal
7
natalia
Dosen
natalia’ or 0=0 --
gagal
8
Astha
Dosen
Astha’ or 0=0 --
gagal
9
salman
Dosen
salman’ or 0=0 --
gagal
10
Adhe
Dosen
Adhe’ or 0=0 --
gagal
11
vivi
Dosen
vivi’ or 0=0 --
gagal
12
Rudy
Dosen
Rudy’ or 0=0 --
gagal
13
Arief
Dosen
Arief’ or 0=0 --
gagal
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
57
14
Iwa
Dosen
Iwa’ or 0=0 --
gagal
15
Dodi
Dosen
Dodi’ or 0=0 --
gagal
16
Amien
Dosen
Amien’ or 0=0 --
gagal
17
ratna
Dosen
ratna’ or 0=0 --
gagal
18
Adri
Dosen
Adri’ or 0=0 --
gagal
19
iyuzh
Mahasiswa
iyuzh’ or 0=0 --
gagal
20
mei
Mahasiswa
mei’ or 0=0 --
gagal
Tabel 4.9 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ” or
0=0 -- dalam proses SQL Injection di form user id web Simple-O
No.
User ID
Status
Sintaks
Hasil Injeksi
User ID
Dosen
root” or 0=0 --
gagal
1
root
2
bu_ratna
Dosen
bu_ratna” or 0=0 --
gagal
3
pak_bagio
Dosen
pak_bagio” or 0=0 --
gagal
4
bu_pupu
Dosen
bu_pupu” or 0=0 --
gagal
5
bu_endang
Dosen
bu_endang” or 0=0 --
gagal
6
pak_sardy
Dosen
pak_sardy” or 0=0 --
gagal
7
natalia
Dosen
natalia” or 0=0 --
gagal
8
Astha
Dosen
Astha” or 0=0 --
gagal
9
salman
Dosen
salman” or 0=0 --
gagal
10
Adhe
Dosen
Adhe” or 0=0 --
gagal
11
vivi
Dosen
vivi” or 0=0 --
gagal
12
Rudy
Dosen
Rudy” or 0=0 --
gagal
13
Arief
Dosen
Arief” or 0=0 --
gagal
14
Iwa
Dosen
Iwa” or 0=0 --
gagal
15
Dodi
Dosen
Dodi” or 0=0 --
gagal
16
Amien
Dosen
Amien” or 0=0 --
gagal
17
ratna
Dosen
ratna” or 0=0 --
gagal
18
Adri
Dosen
Adri” or 0=0 --
gagal
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
58
19
iyuzh
Mahasiswa
iyuzh” or 0=0 --
gagal
20
mei
Mahasiswa
mei” or 0=0 --
gagal
Tabel 4.10 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks or
0=0 -- dalam proses SQL Injection di form user id web Simple-O
No.
User ID
Status
Sintaks
Hasil Injeksi
User ID
Dosen
root or 0=0 --
gagal
1
root
2
bu_ratna
Dosen
bu_ratna or 0=0 --
gagal
3
pak_bagio
Dosen
pak_bagio or 0=0 --
gagal
4
bu_pupu
Dosen
bu_pupu or 0=0 --
gagal
5
bu_endang
Dosen
bu_endang or 0=0 --
gagal
6
pak_sardy
Dosen
pak_sardy or 0=0 --
gagal
7
natalia
Dosen
natalia or 0=0 --
gagal
8
Astha
Dosen
Astha or 0=0 --
gagal
9
salman
Dosen
salman or 0=0 --
gagal
10
Adhe
Dosen
Adhe or 0=0 --
gagal
11
vivi
Dosen
vivi or 0=0 --
gagal
12
Rudy
Dosen
Rudy or 0=0 --
gagal
13
Arief
Dosen
Arief or 0=0 --
gagal
14
Iwa
Dosen
Iwa or 0=0 --
gagal
15
Dodi
Dosen
Dodi or 0=0 --
gagal
16
Amien
Dosen
Amien or 0=0 --
gagal
17
ratna
Dosen
ratna or 0=0 --
gagal
18
Adri
Dosen
Adri or 0=0 --
gagal
19
iyuzh
Mahasiswa
iyuzh or 0=0 --
gagal
20
mei
Mahasiswa
mei or 0=0 --
gagal
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
59
Tabel 4.11 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ’ or
0=0 # dalam proses SQL Injection di form user id web Simple-O
No.
User ID
Status
User ID
Dosen
Sintaks
Hasil
Status
root’ or 0=0 #
Injeksi
berhasil
Web User
Dosen
berhasil
Dosen
berhasil
Dosen
berhasil
Dosen
berhasil
Dosen
berhasil
Dosen
berhasil
Dosen
1
root
2
bu_ratna
Dosen
3
pak_bagio
Dosen
4
bu_pupu
Dosen
5
bu_endang
Dosen
6
pak_sardy
Dosen
7
natalia
Dosen
bu_ratna’ or 0=0
#
pak_bagio’ or
0=0 #
bu_pupu’ or 0=0
#
bu_endang’ or
0=0 #
pak_sardy’ or
0=0 #
natalia’ or 0=0 #
8
Astha
Dosen
Astha’ or 0=0 #
berhasil
Dosen
9
salman
Dosen
salman’ or 0=0 #
berhasil
Dosen
10
Adhe
Dosen
Adhe’ or 0=0 #
berhasil
Dosen
11
vivi
Dosen
vivi’ or 0=0 #
berhasil
Dosen
12
Rudy
Dosen
Rudy’ or 0=0 #
berhasil
Dosen
13
Arief
Dosen
Arief’ or 0=0 #
berhasil
Dosen
14
Iwa
Dosen
Iwa’ or 0=0 #
berhasil
Dosen
15
Dodi
Dosen
Dodi’ or 0=0 #
berhasil
Dosen
16
Amien
Dosen
Amien’ or 0=0 #
berhasil
Dosen
17
ratna
Dosen
ratna’ or 0=0 #
berhasil
Dosen
18
Adri
Dosen
Adri’ or 0=0 #
berhasil
Dosen
19
iyuzh
Mahasiswa
iyuzh’ or 0=0 #
berhasil
Dosen
20
mei
Mahasiswa
mei’ or 0=0 #
berhasil
Dosen
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
60
Tabel 4.12 Hasil pengujian semua user id web aplikasi Simple-O dan sintaks ” or
0=0 # dalam proses SQL Injection di form user id web Simple-O
No.
User ID
Status
Sintaks
Hasil Injeksi
User ID
Dosen
root” or 0=0 #
gagal
1
root
2
bu_ratna
Dosen
bu_ratna” or 0=0 #
gagal
3
pak_bagio
Dosen
pak_bagio” or 0=0 #
gagal
4
bu_pupu
Dosen
bu_pupu” or 0=0 #
gagal
5
bu_endang
Dosen
bu_endang” or 0=0 #
gagal
6
pak_sardy
Dosen
pak_sardy” or 0=0 #
gagal
7
natalia
Dosen
natalia” or 0=0 #
gagal
8
Astha
Dosen
Astha” or 0=0 #
gagal
9
salman
Dosen
salman” or 0=0 #
gagal
10
Adhe
Dosen
Adhe” or 0=0 #
gagal
11
vivi
Dosen
vivi” or 0=0 #
gagal
12
Rudy
Dosen
Rudy” or 0=0 #
gagal
13
Arief
Dosen
Arief” or 0=0 #
gagal
14
Iwa
Dosen
Iwa” or 0=0 #
gagal
15
Dodi
Dosen
Dodi” or 0=0 #
gagal
16
Amien
Dosen
Amien” or 0=0 #
gagal
17
ratna
Dosen
ratna” or 0=0 #
gagal
18
Adri
Dosen
Adri” or 0=0 #
gagal
19
iyuzh
Mahasiswa
iyuzh” or 0=0 #
gagal
20
mei
Mahasiswa
mei” or 0=0 #
gagal
Keterangan:
User ID
: User ID yang digunakan
Status User ID
: User ID yang digunakan milik dosen atau mahasiswa?
Sintaks
: Sintaks yang digunakan untuk menginjeksi di loginform
Hasil Injeksi
: Hasil pengujian, SQL Injection berhasil atau tidak?
Apabila berhasil artinya web Simple-O dapat ditembus.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
61
Status Web User
: Apabila berhasil diinjeksi, tampilan Simple-O yang
tampil apakah tampilan untuk dosen atau tampilan untuk
mahasiswa?
Berdasarkan tabel hasil pengujian di atas dapat dilihat bahwa dari 10
sintaks SQL Injection yang digunakan, hanya 3 sintaks yang berhasil yaitu sintaks
’ or ‘1’=‘1 ; ’ or 0=0 # ; dan ’ #. Dari 3 sintaks tersebut, semua user id yang
digunakan bersamaan dengan 3 sintaks tersebut berhasil digunakan untuk
menginjeksi web Simple-O.
2) Injeksi di form kata sandi
Injeksi yang dilakukan di form kata sandi sama seperti injeksi yang
dilakukan di form user id, yaitu menggunakan sintaks dan user id yang sama,
namun sintaks dan user id tersebut dimasukkan ke dalam form kata sandi dan
form user id dikosongkan. Sehingga seperti pada Gambar 4.23 berikut.
Gambar 4.23 SQL Injection pada form kata sandi web Simple-O
Kemudian hasil yang dihasilkan dari semua pengujian sintaks adalah seperti pada
Tabel 4.13 berikut.
Tabel 4.13 Hasil pengujian semua user id web aplikasi Simple-O dan semua
sintaks dalam proses SQL Injection di form kata sandi web Simple-O
No.
Sintaks
User ID
Hasil Injeksi
1
’ or ‘1’=‘1
semua user id
gagal
2
” or “1”=“1
semua user id
gagal
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
62
3
’) or (‘1’=‘1
semua user id
gagal
4
”) or (“1”=“1
semua user id
gagal
5
)’ or ‘(‘1’=‘1
semua user id
gagal
6
’ or 0=0 --
semua user id
gagal
7
” or 0=0 --
semua user id
gagal
8
or 0=0 --
semua user id
gagal
9
’ or 0=0 #
semua user id
gagal
10
” or 0=0 #
semua user id
gagal
3) Injeksi di form captcha
Injeksi yang dilakukan di form captcha berbeda dengan injeksi di form
user id ataupun kata sandi. Sintaks yang dipakai untuk menginjeksi form captcha
pun berbeda dengan dengan sintaks yang dipakai untuk menginjeksi form user id
dan form kata sandi. Pada umumnya jarang sekali proses SQL Injection dilakukan
di form captcha, karena walaupun berhasil menginjeksi, hasil injeksi tersebut tidak
menghasilkan suatu web dapat ditembus namun hanya menghasilkan suatu
captcha yang selalu benar. Sehingga pengujian ini di form captcha tidak dilakukan
dan untuk penjelasan lebih rincinya dapat dilihat di bagian analisis di bawah ini.
4.1.2.2 Analisis
1) Analisis Sintaks
Simple-O merupakan sebuah aplikasi berbasis web yang memiliki useruser yang sudah terdaftar di dalam basis data. Sehingga tidak semua client dapat
mengakses Simple-O, hanya client-client yang terdaftar sebagai user di basis data
yang dapat mengakses Simple-O. Sebagai bukti bahwa user tersebut sudah
terdaftar dalam basis data Simple-O, user tersebut memiliki user id dan kata sandi
yang sudah terdaftar dalam basis data juga. Setiap user memiliki user id dan kata
sandi yang berbeda-beda. Sehingga dapat dikatakan user id dan kata sandi adalah
kunci untuk bisa masuk ke dalam web Simple-O. Untuk dapat mengidentifikasi
kunci tersebut, Simple-O memiliki sebuah sistem untuk dapat mengecek
kevalidan kunci tersebut. Sistem ini menggunakan sebuah query, yaitu perintahperintah untuk mengakses data dalam basis data. Query ini berisi perintah untuk
mengakses/mengecek user id dan kata sandi yang ada dalam basis data. Pada
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
63
Simple-O, algoritma query yang digunakan untuk mengecek user id dan kata
sandi adalah seperti pada Gambar 4.24 berikut.
SELECT a.userid as userid,a.idgroup as idgroup, a.password as password,b.nama
as agroup from tbuser a , tb_group b where a.userid = ‘".$_POST['user']."’ and
a.password = ‘".$_POST['pass']."’ and a.idgroup=b.idgroup and sign=0"
Gambar 4.24 Algoritma query yang digunakan untuk menegecek user id dan kata
sandi web Simple-O
Query di atas maksudnya adalah meminta user id, kata sandi, dan id group
yang ada dalam basis data dimana keadaannya adalah user id dan kata sandi yang
dimasukkan harus bernilai TRUE dan id group a harus bernilai sama dengan id
group b. Id group adalah sebuah pengelompokan apakah user termasuk kelompok
mahasiswa atau kelompok dosen. Jadi fungsi query diatas adalah untuk mengecek
apakah user id dan kata sandi yang dimasukkan sudah benar atau belum. User id
dan kata sandi yang dimasukkan sudah benar adalah apabila user id dan kata sandi
keduanya bernilai TRUE. Apabila user id atau kata sandi ada yang bernilai
FALSE maka web Simple-O tidak akan terbuka, karena user id dan kata sandi
tersebut menggunakan fungsi AND, dimana TRUE AND FALSE = FALSE.
Pada query di atas terdapat suatu kelemahan yang sangat fatal sekali,
karena query di atas lah yang dapat membuat web Simple-O dapat diinjeksi.
Query di atas dapat dikatakan adalah suatu algoritma yang digunakan untuk
otentikasi user. Sehingga apabila query tersebut dapat dimanipulasi maka hasilnya
otentikasi user tidak akan berguna lagi. Hal ini sangat berbahaya apabila yang
dapat memanipulasi query tersebut adalah orang yang memiliki motif yang tidak
baik. Sebenarnya salah satu fungsi dari SQL Injection adalah untuk memanipulasi
query-query yang ada dalam suatu web. Pada bagian query di atas terdapat bagian
tempat user id dan kata sandi dicek seperti pada Gambar 4.25.
where a.userid = ‘".$_POST['user']."’ and a.password =
‘".$_POST['pass']."’
Gambar 4.25 Bagian query tempat user id dan kata sandi dicek
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
64
Dimana source code user id yang dimasukkan ke dalam form user id seperti pada
Gambar 4.26 berikut.
".$_POST['user']."
Gambar 4.26 Source code user id
Dan source code kata sandi yang dimasukkan ke dalam form kata sandi seperti
pada Gambar 4.27 berikut.
".$_POST['pass']."
Gambar 4.27 Source code kata sandi
Masing-masing dari user dan kata sandi seperti yang sudah dijelaskan
harus bernilai TRUE, karena menggunakan fungsi AND, dimana apabila salah
satu dari user atau kata sandi ada yang bernilai FALSE maka hasil query akan
bernilai FALSE. Apabila hasil query bernilai FALSE, sistem Simple-O akan
membaca bahwa user tidak terdaftar dalam basis data Simple-O dan tidak berhak
untuk mengakses Simple-O. Namun hal tersebut dapat diatasi menggunakan SQL
Injection yang dapat memanipulasi query tersebut. Pada pengujian SQL Injection
yang berhasil, sintaks yang digunakan seperti pada Gambar 4.28.
iyuzh’ or ‘1’=‘1
iyuzh’ or 0=0 #
iyuzh’ #
Gambar 4.28 User id “iyuzh” dan sintaks SQL Injection
dimana “iyuzh” adalah user id yang terdaftar dalam basis data Simple-O dan
sintaks ’ or ‘1’=‘1 ; ’ or 0=0 # ; ’ # inilah yang mengganggu fungsi AND. Apabila
sintaks seperti pada Gambar 4.28 ini dimasukkan ke dalam form user id, maka
query akan termanipulasi menjadi seperti pada Gambar 4.29, Gambar 4.31, dan
Gambar 4.33.
where a.userid = ‘iyuzh’ or ‘1’=‘1’ and a.password = ‘’
Gambar 4.29 Query yang termanipulasi oleh sintaks iyuzh’ or ‘1’=‘1
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
65
Apabila query sudah berubah menjadi seperti pada Gambar 4.29 di atas,
maka algoritma dari query yang semula menjadi berubah. Berdasarkan perubahan
query tersebut dapat dilihat bahwa query yang semula hanya menggunakan fungsi
AND, kini sudah terdapat fungsi OR. Berdasarkan query tersebut dapat dilihat
bahwa user id bernilai TRUE karena “iyuzh” memang user id yang ada dalam
basis data Simple-O, dan ‘1’=‘1’ juga bernilai TRUE karena nilai angka 1
memang sama dengan 1, namun hanya kata sandi yang bernilai FALSE karena
kata sandi tidak diisi atau di dalam basis data tidak ada kata sandi yang terdaftar
kosong. Sehingga nilai dari query-nya menjadi seperti pada Gambar 4.30.
TRUE or TRUE and FALSE = TRUE
Gambar 4.30 Nilai query yang sudah termanipulasi
where a.userid = ‘iyuzh’ or 0=0 #’ and a.password = ‘’
Gambar 4.31 Query yang termanipulasi oleh sintaks iyuzh’ or 0=0 #
Apabila query sudah berubah menjadi seperti pada Gambar 4.31 di atas,
maka algoritma dari query yang semula menjadi berubah. Berdasarkan perubahan
query tersebut dapat dilihat bahwa query yang semula hanya menggunakan fungsi
AND, kini sudah terdapat fungsi OR dan tanda pagar (#). Berdasarkan query
tersebut dapat dilihat bahwa user id bernilai TRUE karena “iyuzh” memang user
id yang ada dalam basis data Simple-O, dan 0=0 juga bernilai TRUE karena nilai
angka 0 memang sama dengan 0, namun hanya kata sandi yang bernilai FALSE
karena kata sandi tidak diisi atau di dalam basis data tidak ada kata sandi yang
terdaftar kosong. Tetapi karena ada tanda pagar (#) yang memiliki fungsi
membuat tulisan yang di sebelah kanannya menjadi sebuah komentar seperti
fungsi tanda (//) dan (/**/) pada bahasa pemrograman C/C++ [22], maka kata
sandi menjadi sebuah komentar dan tidak dianggap sebagai query. Sehingga nilai
dari query-nya menjadi seperti pada Gambar 4.32.
TRUE or TRUE = TRUE
Gambar 4.32 Nilai query yang sudah termanipulasi
where a.userid = ‘iyuzh’ #’ and a.password = ‘’
Gambar 4.33 Query yang termanipulasi oleh sintaks iyuzh’ #
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
66
Apabila query sudah berubah menjadi seperti pada Gambar 4.33 di atas,
maka algoritma dari query yang semula menjadi berubah. Berdasarkan perubahan
query tersebut dapat dilihat bahwa query yang semula hanya menggunakan fungsi
AND, kini sudah terdapat tanda pagar (#). Berdasarkan query tersebut dapat
dilihat bahwa user id bernilai TRUE karena “iyuzh” memang user id yang ada
dalam basis data Simple-O, namun kata sandi bernilai FALSE karena kata sandi
tidak diisi atau di dalam basis data tidak ada kata sandi yang terdaftar kosong.
Tetapi karena ada tanda pagar (#) yang memiliki fungsi membuat tulisan yang di
sebelah kanannya menjadi sebuah komentar seperti fungsi tanda (//) dan (/**/)
pada bahasa pemrograman C/C++ [22], maka kata sandi menjadi sebuah komentar
dan tidak dianggap sebagai query. Sehingga nilai dari query-nya menjadi seperti
pada Gambar 4.34
TRUE = TRUE
Gambar 4.34 Nilai query yang sudah termanipulasi
Apabila hasil dari query bernilai TRUE itu artinya sistem otentikasi user web
Simple-O akan membaca bahwa user tersebut valid. Sehingga hal yang berikutnya
terjadi adalah web Simple-O dapat terbuka seperti hal nya login dengan
menggunakan user dan kata sandi yang sesungguhnya.
2) Analisis Form Kata Sandi
Pada saat halaman loginform tampil, terdapat form user id, kata sandi, dan
captcha. Namun proses SQL Injection yang berhasil hanya di form user id. Proses
SQL Injection tidak selalu dapat berhasil di semua form atau tempat input, semua
tergantung dari source code web yang diserang. Seperti pada kasus Simple-O,
SQL Injection tidak dapat berhasil di form kata sandi dan form captcha karena
keadaan source code dari kata sandi dan captcha itu sendiri yang tidak
memungkinkan untuk diinjeksi.
Pada bab 2 sudah dijelaskan bahwa source code kata sandi yang digunakan
pada web Simple-O menggunakan metode hash MD5 (Message Digest 5).
Metode ini membuat kata sandi yang tersimpan dalam basis data mengalami
proses hash sehingga kata sandi yang tersimpan dalam basis data bukanlah kata
sandi yang sebenarnya. Proses hash MD5 ini sendiri berlangsung saat sebelum
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
67
masuk query. Sehingga yang masuk ke dalam query adalah kata sandi yang sudah
berubah menjadi sebuah kata yang sudah diacak menggunakan hash MD5.
Sehingga apabila SQL Injection dijalankan di form kata sandi, maka sintaks SQL
Injecton yang dituliskan akan berubah menjadi suatu kata yang sudah diacak oleh
hash MD5 dan bentuknya tidak menjadi sintaks yang seharusnya dapat
menginjeksi Simple-O. Misalkan sintaks SQL Injection yang dituliskan di form
kata sandi seperti pada Gambar 4.35.
iyuzh’ or ‘1’=‘1
Gambar 4.35 Sintaks yang akan dimasukkan ke dalam form kata sandi
Maka pada saat masuk ke query, sintaks tersebut akan berubah menjadi seperti
pada Gambar 4.36.
68504935b7e2946d82d073d61c4ef39e
Gambar 4.36 Sintaks yang sudah berubah akibat hash MD5
Sehingga query yang seharusnya seperti pada Gambar 4.37.
where a.userid = ‘’ and a.password = ‘iyuzh’ or ‘1’=‘1’
Gambar 4.37 Query dimana kata sandi tidak memakai hash MD5
Dimana hasil query nya adalah seperti Gambar 4.38 berikut.
FALSE and FALSE or TRUE = TRUE
Gambar 4.38 Hasil query dimana kata sandi tidak memakai MD5
Namun menjadi query yang seperti pada Gambar 4.39 karena hash MD5.
where a.userid = ‘’ and a.password = ‘68504935b7e2946d82d073d61c4ef39e’
Gambar 4.39 Query dimana kata sandi memakai hash MD5
Dan hasil query nya adalah seperti pada Gambar 4.40.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
68
FALSE and FALSE = FALSE
Gambar 4.40 Hasil query dimana kata sandi memakai hash MD5
Inilah yang membuat SQL Injection tidak berhasil dijalankan di form kata sandi
pada loginform.
3) Analisis Form Captcha
Pada form captcha di halaman loginform Simple-O, proses SQL Injection
sebenarnya bukan tidak bisa dilakukan atau tidak akan berhasil, namun SQL
Injection yang dilakukan hasilnya tidak sama seperti hasil SQL Injection yang
dilakukan di form user id dan form kata sandi. Proses SQL Injection yang
dilakukan di form user id dan kata sandi adalah untuk dapat memanipulasi
algoritma query sehingga client yang dapat memanipulasi query dapat masuk
sebagai user di Simple-O. Hal ini disebabkan proses SQL Injection yang terjadi
berada di dalam algoritma query tersebut. Namun berbeda bila proses SQL
Injection dilakukan di form captcha karena hasil dari SQL Injection di form
captcha adalah bukan untuk memanipulasi query melainkan hanya untuk
memanipulasi algoritma captcha itu sendiri. Hal ini disebabkan proses SQL
Injection yang dilakukan bukan berada di dalam query melainkan di dalam
algoritma captcha itu sendiri dan algoritma tersebut terletak di luar dan sebelum
query. Algoritma captcha tersebut seperti pada Gambar 4.41 berikut.
$img = [tampilan captcha];
$valid = $img->check($_POST[kode yang dimasukkan user]);
if
($valid == true) {
proses login terjadi, query dijalankan
}
Else
{
echo “Login Failed. Input the right code”
{
Gambar 4.41 Algoritma captcha
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
69
Berdasarkan algortima di atas dapat dilihat bahwa cara kerjanya adalah
apabila kode captcha yang dimasukkan valid atau benar, maka barulah algoritma
query berjalan dimana fungsinya adalah untuk proses login yaitu mengecek user
id dan kata sandi. Namun apabila kode captcha yang dimasukkan salah, maka
langkah yang selanjutnya terjadi adalah query tidak dapat berjalan dan langsung
muncul pesan login failed dan harus memasukkan kode captcha yang benar.
Sehingga apabila SQL Injection dilakukan di form captcha dan berhasil, maka
hasilnya adalah berfungsi untuk membuat kode captcha selalu terbaca valid oleh
sistem, namun bukan untuk memanipulasi query.
4) Analisis Status Web User Setelah Berhasil Menginjeksi
Berdasarkan Tabel 4.3, Tabel 4.7, dan Tabel 4.11 dapat dilihat bahwa
semua hasil pengujian SQL Injection menghasilkan semua web user adalah dosen.
Maksudnya adalah saat Simple-O terbuka, tampilannya adalah tampilan untuk
kelompok dosen. Walaupun user id yang digunakan dalam sintaks SQL Injection
adalah user id mahasiswa namun tetap saja output-nya adalah dosen. Hal ini
disebabkan karena algoritma pengecekan kelompok dosen atau mahasiswa
menggunakan fungsi perkalian silang. Misalkan ada 2 buah tabel, yaitu tabel a dan
tabel b seperti pada Tabel 4.14 dan Tabel 4.15.
Tabel 4.14 Tabel a
User id
Id Group
ratna
1
iyuzh
2
Tabel 4.15 Tabel b
Id Group
Nama
1
dosen
2
mahasiswa
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
70
Pada web Simple-O, algoritma pengecekan kelompok mahasiswa dan dosen
menggunakan fungsi perkalian silang, sehingga apabila kedua tabel tersebut
dilakukan perkalian silang maka hasilnya akan menjadi seperti pada Tabel 4.16.
Tabel 4.16 Persilangan tabel a dan tabel b
User id
Id group a
Id group b
Nama
ratna
1
1
dosen
ratna
1
2
mahasiswa
iyuzh
2
1
dosen
iyuzh
2
2
mahsiswa
Kembali lagi pada query yang digunakan untuk mengecek user id dan kata sandi
seperti pada Gambar 4.42.
SELECT a.userid as userid,a.idgroup as idgroup, a.password as password,b.nama
as agroup from tbuser a , tb_group b where a.userid = ‘".$_POST['user']."’ and
a.password = ‘".$_POST['pass']."’ and a.idgroup=b.idgroup and sign=0"
Gambar 4.42 Algoritma query yang digunakan untuk menegecek user id dan kata
sandi web Simple-O
Berdasarkan query trsebut dapat dilihat bahwa user id dan id group diambil dari
tabel a, sedangkan nama grup diambil dari tabel b. Kemudian keadaannya adalah
id group a = id group b. Sehingga pada saat login web Simple-O dilakukan secara
normal (tanpa SQL Injection), maka id group a dan id group b tidak boleh ada
yang berbeda. Misalkan pada saat login menggunakan user id “iyuzh”, maka
algoritma pengecekan kelompok adalah seperti pada tabel 4.17.
Tabel 4.17. Hasil pengecekan login secara normal
User id
Id group a
Id group b
Nama
ratna
1
1
dosen
ratna
1
2
mahasiswa
iyuzh
2
1
dosen
iyuzh
2
2
mahasiswa
Id group a ≠ id group b
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
71
Hasil dari pengecekan adalah user id adalah “iyuzh” dan nama adalah
“mahasiswa”, sehingga pada saat user id “iyuzh” login ke Simple-O maka
tampilan web yang akan tampil adalah tampilan untuk mahasiswa. Namun
berbeda apabila login menggunakan SQL Injection. Pada saat menggunakan SQL
Injection, fungsi OR dan tanda pagar (#) yang dimasukkan menyebabkan keadaan
id group a = id group b terabaikan. Apabila keadaan ini terabaikan maka pada saat
login menggunakan user id “iyuzh” dalam sintaks SQL Injection maka hasil yang
didapat adalah seperti Tabel 4.18.
Tabel 4.18. Hasil pengecekan login SQL Injection
User id
Id group a
Id group b
Nama
ratna
1
1
dosen
ratna
1
2
mahasiswa
iyuzh
2
1
dosen
iyuzh
2
2
mahasiswa
Id group a ≠ id group b
terabaikan
Algoritma pengecekan akan mengecek tabel selalu mulai dari atas dan satu per
satu mengecek baris yang ada di dalam tabel. Pada saat pengecekan berada di
baris user id “iyuzh”, pengecekan akan berhenti karena yang dicari sudah didapat.
Karena dalam tabel tersebut baris user id “iyuzh” dan nama “dosen” berada di
atas baris user id “iyuzh” dan nama “mahasiswa”, maka pengecekan akan berhenti
pada baris user id “iyuzh” dan nama “dosen”. Sehingga berdasarkan query dimana
user id dan id group diambil dari tabel a dan nama diambil dari tabel b, maka hasil
yang didapat dari query adalah seperti pada Gambar 4.43.
user id
= iyuzh
id group
=2
nama
= dosen
Gambar 4.43 Hasil dari query menggunakan SQL Injection
Jadi saat Simple-O terbuka, walupun user id yang dipakai adalah “iyuzh”, yaitu
mahasiswa, namun tampilan yang akan terbuka adalah tampilan untuk dosen.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
72
4.1.3
Memberi Pengaman Anti SQL Injection
4.1.3.1 Pengujian
Pengujian yang sudah dilakukan adalah pengujian SQL Injection di URL
dan loginform. Pada pengujian tersebut dihasilkan bahwa web Simple-O saat
diinjeksi di URL ternyata sudah aman, sedangkan saat diinjeksi di loginform web
Simple-O ternyata tidak aman. Sehingga web Simple-O perlu pengaman di bagian
loginform agar tidak dapat diinjeksi. Pada bagian URL tidak perlu diberi
pengaman lagi karena bagian tersebut memang sudah aman.
Pada bagian pengujian SQL Injection di loginform, sintaks yang digunakan
adalah ’ or ‘1’=‘1 ; ’ or 0=0 # ; ’ #. Pada sintaks ini sudah dianalisis bahwa tanda
petik satu (‘) memiliki fungsi yang sangat penting untuk memanipulasi query
pengecekan user id dan kata sandi. Oleh karena itu perlu adanya suatu algoritma
Anti SQL Injection yang membuat tanda petik satu (‘) tidak boleh digunakan
dalam form user id. Sehingga apabila algoritma tersebut diterapkan pada
loginform web Simple-O, maka loginform Simple-O tidak dapat diinjeksi, seperti
pada pengujian di bawah ini. Algoritma Anti SQL Injection yang dipakai adalah
seperti Gambar 4.48.
Saat halaman http://192.168.10.48/simple-o/loginform.php terbuka, maka
SQL Injection dilakukan sama seperti pengujian yang sudah dijelaskan di atas.
Sintaks yang digunakan adalah iyuzh’ or ‘1’=‘1 sehingga saat SQL Injection
dilakukan seperti pada Gambar 4.44.
Gambar 4.44 Proses SQL Injection menggunakan sintaks iyuzh’ or ‘1’=’1
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
73
Kemudian hasil yang dihasilkan adalah seperti pada Gambar 4.45.
Gambar 4.45 Proses SQL Injection iyuzh’ or ‘1’=‘1 tidak berhasil
Berdasarkan pengujian di atas, ternyata sintaks SQL Injection iyuzh’ or ‘1’=‘1
gagal untuk menginjeksi web Simple-O. Untuk membuktikan web Simple-O
sudah benar-benar aman dan pengaman anti SQL Injection dapat menghentikan
proses SQL Injection, maka pengujian akan dilakukan menggunakan user id milik
dosen, yaitu “ratna” sehingga sintaks yang digunakan adalah ratna’ or ‘1’=‘1
seperti pada Gambar 4.46.
Gambar 4.46 Proses SQL Injection menggunakan sintaks ratna’ or ‘1’=’1
Kemudian hasil yang dihasilkan adalah seperti Gambar 4.47 berikut.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
74
Gambar 4.47 Proses SQL Injection ratna’ or ‘1’=‘1 tidak berhasil
Ternyata proses SQL Injection tetap tidak berhasil, baik yang digunakan adalah
user id milik mahasiswa maupun user id milik dosen. Berikut adalah hasil
pengujian SQL Injection setelah web Simple-O diberi pengaman Anti SQL
Injection menggunakan semua user id web Simple-O dan semua sintaks yang
tadinya berhasil menginjeksi web Simple-O seperti pada Tabel 4.19, Tabel 4.20,
dan Tabel 4.21.
Tabel 4.19 Hasil pengujian semua user id Simple-O dan sintaks ’ or ‘1’=‘1 dalam
proses SQL Injection setelah web Simple-O diberi pengaman Anti SQL Injection
No.
User ID
Status User ID
Sintaks
Hasil Injeksi
1
root
Dosen
root’ or ‘1’=‘1
gagal
2
bu_ratna
Dosen
bu_ratna’ or ‘1’=‘1
gagal
3
pak_bagio
Dosen
pak_bagio’ or ‘1’=‘1
gagal
4
bu_pupu
Dosen
bu_pupu’ or ‘1’=‘1
gagal
5
bu_endang
Dosen
bu_endang’ or ‘1’=‘1
gagal
6
pak_sardy
Dosen
pak_sardy’ or ‘1’=‘1
gagal
7
natalia
Dosen
natalia’ or ‘1’=‘1
gagal
8
Astha
Dosen
Astha’ or ‘1’=‘1
gagal
9
salman
Dosen
salman’ or ‘1’=‘1
gagal
10
Adhe
Dosen
Adhe’ or ‘1’=‘1
gagal
11
vivi
Dosen
vivi’ or ‘1’=‘1
gagal
12
Rudy
Dosen
Rudy’ or ‘1’=‘1
gagal
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
75
13
Arief
Dosen
Arief’ or ‘1’=‘1
gagal
14
Iwa
Dosen
Iwa’ or ‘1’=‘1
gagal
15
Dodi
Dosen
Dodi’ or ‘1’=‘1
gagal
16
Amien
Dosen
Amien’ or ‘1’=‘1
gagal
17
ratna
Dosen
ratna’ or ‘1’=‘1
gagal
18
Adri
Dosen
Adri’ or ‘1’=‘1
gagal
19
iyuzh
Mahasiswa
iyuzh’ or ‘1’=‘1
gagal
20
mei
Mahasiswa
mei’ or ‘1’=‘1
gagal
Tabel 4.20 Hasil pengujian semua user id Simple-O dan sintaks ’ or 0=0 # dalam
proses SQL Injection setelah web Simple-O diberi pengaman Anti SQL Injection
No.
User ID
Status User ID
Sintaks
Hasil Injeksi
1
root
Dosen
root’ or 0=0 #
gagal
2
bu_ratna
Dosen
bu_ratna’ or 0=0 #
gagal
3
pak_bagio
Dosen
pak_bagio’ or 0=0 #
gagal
4
bu_pupu
Dosen
bu_pupu’ or 0=0 #
gagal
5
bu_endang
Dosen
bu_endang’ or 0=0 #
gagal
6
pak_sardy
Dosen
pak_sardy’ or 0=0 #
gagal
7
natalia
Dosen
natalia’ or 0=0 #
gagal
8
Astha
Dosen
Astha’ or 0=0 #
gagal
9
salman
Dosen
salman’ or 0=0 #
gagal
10
Adhe
Dosen
Adhe’ or 0=0 #
gagal
11
vivi
Dosen
vivi’ or 0=0 #
gagal
12
Rudy
Dosen
Rudy’ or 0=0 #
gagal
13
Arief
Dosen
Arief’ or 0=0 #
gagal
14
Iwa
Dosen
Iwa’ or 0=0 #
gagal
15
Dodi
Dosen
Dodi’ or 0=0 #
gagal
16
Amien
Dosen
Amien’ or 0=0 #
gagal
17
ratna
Dosen
ratna’ or 0=0 #
gagal
18
Adri
Dosen
Adri’ or 0=0 #
gagal
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
76
19
iyuzh
Mahasiswa
iyuzh’ or 0=0 #
gagal
20
mei
Mahasiswa
mei’ or 0=0 #
gagal
Tabel 4.21 Hasil pengujian semua user id Simple-O dan sintaks ’ # dalam proses
SQL Injection setelah web Simple-O diberi pengaman Anti SQL Injection
No.
User ID
Status User ID
Sintaks
Hasil Injeksi
1
root
Dosen
root’ #
gagal
2
bu_ratna
Dosen
bu_ratna’ #
gagal
3
pak_bagio
Dosen
pak_bagio’ #
gagal
4
bu_pupu
Dosen
bu_pupu’ #
gagal
5
bu_endang
Dosen
bu_endang’ #
gagal
6
pak_sardy
Dosen
pak_sardy’ #
gagal
7
natalia
Dosen
natalia’ #
gagal
8
Astha
Dosen
Astha’ #
gagal
9
salman
Dosen
salman’ #
gagal
10
Adhe
Dosen
Adhe’ #
gagal
11
vivi
Dosen
vivi’ #
gagal
12
Rudy
Dosen
Rudy’ #
gagal
13
Arief
Dosen
Arief’ #
gagal
14
Iwa
Dosen
Iwa’ #
gagal
15
Dodi
Dosen
Dodi’ #
gagal
16
Amien
Dosen
Amien’ #
gagal
17
ratna
Dosen
ratna’ #
gagal
18
Adri
Dosen
Adri’ #
gagal
19
iyuzh
Mahasiswa
iyuzh’ #
gagal
20
mei
Mahasiswa
mei’ #
gagal
Berdasarkan Tabel 4.19, Tabel 4.20, dan Tabel 4.21 di atas, dapat dilihat bahwa
semua user id dan sintaks yang tadinya berhasil untuk menginjeksi web Simple-O,
sekarang gagal dalam menginjeksi web Simple-O. Sehingga dapat disimpulkan
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
77
bahwa pengaman Anti SQL Injection yang dipasang di bagian loginform berhasil
mencegah terjadinya SQL Injection saat proses login terjadi.
4.1.3.2 Analisis
Web Simple-O setelah diberi pengaman Anti SQL Injection di bagian
loginform ternyata berhasil mencegah terjadinya proses SQL Injection saat proses
login terjadi. Hal ini disebabkan oleh algoritma Anti SQL Injection yang melarang
tanda petik satu (‘) digunakan dalam form user id. Telah dijelaskan sebelumnya
bahwa proses SQL Injection menggunakan sintaks yang memiliki karakter atau
string tanda petik satu (‘) karena tanda petik satu inilah yang dapat memanipulasi
query yang mengecek user id dan kata sandi web Simple-O. Sehingga diperlukan
sebuah algoritma yang melarang atau mencegah string tanda petik satu (‘)
digunakan dalam form user id saat proses login berlangsung. Untuk lebih jelasnya
dapat dilihat pada algoritma seperti pada Gambar 4.48.
$userinject = $_POST['user'];
// anti injection code
for ($i = 0; $i < strlen($userinject); $i++) { /*cek satu per satu elemen
string*/
if ($userinject{$i} == "'") { /*apakah karakter ke-i merupakan
sebuah string tanda petik satu*/
$error = "Maaf, username yang Anda masukkan salah.
Username tidak boleh memiliki karakter tanda petik satu
(')";
header("Location:loginform.php?logmsg=".urlencode($erro
r)); /*redirect ke halaman loginform dengan pesan error*/
exit(0);
}
} // end anti injection code
Gambar 4.48 Source code algoritma Anti SQL Injection
Berdasarkan algoritma di atas dapat dilihat bahwa Anti SQL Injection ini
digunakan untuk mengecek karakter yang dimasukkan di form user id. Saat
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
78
karakter user id dimasukkan ke dalam form user id, algoritma tersebut akan
mengecek satu per satu karakter yang dimasukkan. Apabila saat pengecekan
didapatkan bahwa ada karakter tanda petik satu (‘), maka operasi login tidak akan
berjalan dan akan kembali lagi ke halaman loginform dengan keadaan awal dan
terdapat pesan eror yaitu "Maaf, username yang Anda masukkan salah. Username
tidak boleh memiliki karakter tanda petik satu (')".
4.2
Skenario SQL Injection Otomatis
Pada skenario SQL Injection otomatis, proses SQL Injection menggunakan
perangkat lunak Havij sebagai SQL Injection tool. Berbeda sekali dengan proses
SQL Injection manual, karena SQL Injection otomatis ini bekerja dengan bantuan
perangkat lunak Havij, dimana nantinya saat client akan melakukan SQL
Injection, cukup memasukkan alamat web yang menjadi target ke dalam
perangkat lunak tersebut.
4.2.1
Pengujian
4.2.1.1 Web Simple-O
Proses SQL Injection dilakukan dengan pertama kali membuka perangkat
lunak Havij seperti tampak pada Gambar 4.49 berikut.
Gambar 4.49 Perangkat Lunak Havij
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
79
Kemudian selanjutnya memasukkan alamat web yang menjadi target SQL
Injection. Alamat web Simple-O adalah http://192.168.10.48/simple-o dimana
halaman tersebut akan ter-direct ke halaman http://192.168.20.48/simpleo/loginform.php.
Sehingga
halaman
http://192.168.20.48/simple-
o/loginform.php lah yang akan dimasukkan ke dalam form target perangkat
lunak Havij, seperti pada Gambar 4.50.
Gambar 4.50 Alamat web Simple-O dimasukkan ke dalam Havij
Kemudian setelah itu melihat analisis yang dihasilkan oleh Havij dalam
menginjeksi web Simple-O seperti pada Gambar 4.51.
Gambar 4.51 Eror tidak ada input parameter
Ternyata terdapat eror saat web Simple-O ingin diinjeksi, yaitu berdasarkan
alamat web yang dimasukkan ke dalam target, alamat tersebut tidak memiliki
variabel atau parameter input yang menyebabkan Havij tidak bisa menginjeksi
web Simple-O. Namun hal ini bisa diatasi dengan menuliskan “%Inject_Here%”
di bagian belakang alamat web target, sehingga alamat yang dimasukkan ke dalam
Havij
adalah
http://192.168.20.48/simple-o/loginform.php%Inject_Here%.
Kemudian baru dapat dilihat hasil dari Havij dalam menginjeksi web Simple-O,
dimana hasilnya adalah seperti pada Gambar 4.52 berikut.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
80
Web Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e
PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
Finding Keyword...
Http Error: 404 Not Found
Can not find keyword but let me do a try!
Finding Injection type...
Http Error: 404 Not Found
Http Error: 403 Forbidden
Injection type is Integer
Keyword corrected: found!
Http Error: 404 Not Found
Finding data base type
Http Error: 404 Not Found
Can't find db server type! But maybe there be some chances! [-o<
Finding columns count(MySQL,MsSQL 2005): 1
Http Error: 404 Not Found
Cannot find column count!
Testing for MySQL error based injection method
Http Error: 404 Not Found
Bypassing illegal union failed! Turning off this feature
Http Error: 404 Not Found
MySQL time based injection method can't be used
It seems that input parameter is not effective! Check the following:
Are you sure input parameter really exist?!
Are you sure the input value '1' is valid?
Are you sure the 'GET' method is correct?
Gambar 4.52 Eror Havij tidak berhasil menginjeksi web Simple-O
Berdasarkan hasil pengujian di atas dapat dilihat bahwa proses SQL Injection
gagal. Pada hasil tersebut Havij mempertanyakan adanya parameter input yang
digunakan dan juga method yang digunakan. Hal ini akan dibahas di bagian
analisis.
4.2.1.2 Web Dummy
Pada pengujian kali ini yang akan diuji adalah web dummy, dimana web
dummy memiliki homepage seperti pada Gambar 4.53.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
81
Gambar 4.53 Homepage web dummy
Pada pengujian sebelumnya Havij tidak berhasil menginjeksi web Simple-O.
Sehingga perlu sebuah analisis untuk membahas mengapa web Simple-O tidak
bisa diinjeksi oleh Havij. Namun untuk membantu analisis tersebut digunakan
sebuah web dummy yang sudah pasti dapat diinjeksi oleh Havij, sehingga nanti
akan dibandingkan algoritma yang digunakan web dummy yang dapat diinjeksi
dengan algoritma web Simple-O yang tidak dapat diinjeksi supaya dapat diketahui
alasan web Simple-O tidak dapat diinjeksi.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
82
Pengujian pada web dummy ini menggunakan cara yang sama seperti yang
dilakukan
pada
web
Simple-O.
Alamat
web
dummy
tersebut
adalah
http://192.168.10.48/lukman01 dimana alamat tersebut akan men-direct ke
halaman
http://192.168.10.48/lukman01/media.php?module=home.
Sehingga
halaman http://192.168.10.48/lukman01/media.php?module=home inilah yang
akan dimasukkan ke target Havij. Setelah alamat tersebut dimasukkan, maka hasil
dari SQL Injection tersebut adalah seperti pada Gambar 4.54 berikut.
Analyzing http://192.168.10.48/lukman01/media.php?module=home
Web Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8
mod_perl/2.0.4 Perl/v5.10.1
Powered-by: PHP/5.3.8
Keyword Found: »
I guess injection type is Integer?! If injection failed, retry with a manual keyword.
Can't find db server type! But maybe there be some chances! [-o<
Trying another method using keyword for finding columns count
Findig columns count for MySQL failed! It seems that DB server is not MySQL
Cannot find column count!
Testing for MySQL error based injection method
MySQL error based injection method cant be used!
MsSQL time based injection method can't be used
MySQL time based injection method can't be used
It seems that input parameter is not effective! Check the following:
Are you sure input parameter really exist?!
Are you sure the input value 'home' is valid?
Are you sure the 'GET' method is correct?
Gambar 4.54 Eror yang terjadi saat Havij gagal menginjeksi web dummy
Berdasarkan hasil di atas dapat dilihat bahwa proses SQL Injection juga gagal.
Havij juga menanyakan kevalidan value “home”, hal ini akan dibahas pada bagian
analisis. Pada halaman web dummy di atas, di bagian kiri terdapat beberapa menu
dan link yang dapat dibuka. Salah satu dari link yang dibuka tersebut memiliki
alamat
http://192.168.10.48/lukman01/media.php?module=detailberita&id=22.
Alamat tersebut dimasukkan ke dalam target Havij, kemudian dilakukan SQL
Injection dan hasilnya adalah seperti pada Gambar 4.55.
Analyzing http://192.168.10.48/lukman01/media.php?module=detailberita&id=22
Web Server: Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8
mod_perl/2.0.4 Perl/v5.10.1
Powered-by: PHP/5.3.8
Keyword Found: Februari
Injection type is String (')
DB Server: MySQL >=5
Selected Column Count is 15
Valid String Column is 4
Current DB: dbmedia
Gambar 4.55 Havij berhasil menginjeksi web dummy
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
83
Berdasarkan hasil di atas dapat dilihat bahwa proses SQL Injection berhasil
dilakukan, dimana basis data yang didapat bernama “dbmedia”. Apabila basis data
sudah didapatkan, maka kini data-datanya pun tentu saja dapat dilihat. Perangkat
lunak Havij memiliki kemampuan untuk melihat data-data yang ada dalam basis
data yang berhasil didapatkan. Seperti contohnya pada Gambar 4.56 basis data
web dummy yang bernama “dbmedia” ini memiliki tabel berjumlah 8 buah, yaitu
tabel
“agenda”,
“banner”,
“berita”,
“hubungi”,
“kategori”,
“modul”,
“pengumuman”, dan “user”.
Gambar 4.56 Tabel basis data dbmedia
Dari tabel tersebut, tabel yang paling penting adalah tabel “user” yang memiliki
data-data user dari web dummy. Apabila tabel tersebut dibuka maka hasilnya
terdapat kolom-kolom seperti pada Gambar 4.57.
Gambar 4.57 Kolom pada tabel “user”
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
84
Berdasarkan kolom “user” di atas, terdapat data yang paling penting, yaitu
“id_user” dan “password”. Apabila data tersebut dibuka maka hasilnya seperti
pada Gambar 4.58
Gambar 4.58 Data “id_user” dan “password”
Berdasarkan data di atas, user id yang terdaftar dalam web dummy adalah
“admin”, “damar”, “joko”, “gadjah”, “tingkir”, dan “hayam”. Namun kata
sandinya ternyata telah diubah oleh hash MD5 sehingga kata sandi yang
sebenarnya tidak dapat dilihat. Tetapi perangkat lunak Havij juga memiliki
kemampuan untuk mengubah kata sandi yang telah diubah oleh hash MD5
menjadi kata sandi yang sebenernya seperti sebelum di hash MD5. Misalkan kata
sandi yang ingin dilihat adalah kata sandi user id “admin”, dimana kata sandi
yang telah diubah hash MD5 adalah “21232f297a57a5a743894a0e4a801fc3”.
Maka kata sandi ini akan dapat terlihat menjadi seperti Gambar 4.59 berikut.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
85
Gambar 4.59 Kata sandi dari user id “admin”
Berdasarkan hasil di atas dapat dilihat bahwa perangkat lunak Havij mencari kata
sandi yang sudah diubah hash MD5 dengan bantuan beberapa web yang berfungsi
untuk membalikkan suatu data yang sudah diubah oleh hash MD5. Walaupun
terdapat beberapa web yang gagal, namun ada juga beberapa web yang berhasil
mengembalikan bentuk kata sandi yang sudah diubah oleh hash MD5, dimana
hasilnya adalah “admin”. Sehingga berdasarkan pengujian yang sudah dilakukan
dapat disimpulkan bahwa web dummy ini terbukti dapat diinjeksi menggunakan
SQL Injection melalui perangkat lunak Havij.
4.2.2
Analisis
Proses SQL Injection yang dilakukan menggunakan perangkat lunak Havij
memiliki syarat tertentu, yaitu alamat web yang menjadi target. Alamat yang
menjadi
target
haruslah
memiliki
format
seperti
ini
http://www.target.com/index.asp?id=123 [19]. Alasannya adalah halaman yang
memiliki kelemahan untuk diinjeksi harus memiliki suatu input yang dapat
diinjeksi oleh Havij [19]. Input disini maksudnya adalah variabel dan value dari
alamat tersebut, contohnya adalah id=123 dimana id adalah variabel dan 123
adalah value dari variabel id.
Web Simple-O tidak dapat diinjeksi karena bentuk alamat Simple-O yang
menjadi target berbeda dengan bentuk alamat yang dapat diinjeksi oleh Havij.
Alamat web Simple-O yang menjadi target tidak memiliki variabel dan value-nya.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
86
Hal inilah yang menyebabkan pada saat alamat target dimasukkan, Havij meminta
untuk menuliskan “%Inject_Here% dibelakang alamat web Simple-O sebagai
pengganti variabel dan value-nya. Namun, tetap saja web Simple-O gagal
diinjeksi karena kata “%Inject_Here%” disini saat diproses oleh Havij akan
berubah menjadi integer 1. Sehingga alamat web Simple-O yang menjadi target
adalah http://192.168.10.48/simple-o/loginform.php1. Integer 1 tersebut berbeda
dengan variabel dan value milik alamat Simple-O, sehingga Havij gagal
menginjeksi Simple-O.
Variabel dan value dari alamat web Simple-O sebenarnya bukan tidak ada,
namun disembunyikan oleh web Simple-O sendiri, karena Simple-O sendiri
menggunakan method POST. Seperti yang telah dijelaskan di bagian analisis SQL
Injection manual, Simple-O menggunakan method POST yang berbeda dengan
method GET. Method POST menyembunyikan variabel yang akan dikirimkan ke
web server, sedangkan method GET tidak menyembunyikan variabel tersebut dan
terlihat di bagian URL alamat web tersebut. Format yang menjadi target pada
Havij secara default adalah alamat yang menggunakan method GET, sehingga
alamat
tersebut
harus
memiliki
variabel
dan
value
nya
seperti
http://www.target.com/index.asp?id=123.
Secara default alamat yang dimasukkan ke dalam target Havij memang
harus berasal dari web yang menggunakan method GET, namun Havij juga dapat
menginjeksi alamat web yang menggunakan method POST. Tetapi apabila
menggunakan method POST, attacker harus mengisikan post data yang berisikan
variabel dan value dari alamat web secara manual seperti pada Gambar 4.60.
Gambar 4.60 SQL Injection menggunakan method POST pada Havij
Masalahnya adalah attacker tidak mengetahui variabel dan value yang harus
diisikan di dalam field post data, kecuali attacker memiliki cara untuk melihat
source code asli milik web yang ada di web server atau juga dengan cara
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
87
menebak-menebak variabel dan value tersebut. Ini adalah alasan pertama yang
menjelaskan web Simple-O tidak dapat diinjeksi menggunkan Havij.
Pada
pengujian
web
dummy,
saat
alamat
http://192.168.10.48/lukman01/media.php?module=home diinjeksi, ternyata tidak
perlu dimasukkan kata “%Inject_Here%” lagi seperti pada web Simple-O, karena
web tersebut menggunakan method GET, sehingga bentuk alamat yang
dimasukkan ke dalam target sudah mengikuti syarat perangkat lunak Havij,
dimana variabelnya adalah “module” dan value dari variabel tersebut adalah
“home”. Namun, walaupun begitu ternyata proses SQL Injection tetap gagal. Hal
ini disebabkan pada alamat tersebut memang tidak memiliki keterkaitan dengan
basis data. Alamat ini memiliki halaman web yang bersifat statis, maksudnya
apabila halaman tersebut ingin diubah maka harus diubah dari source code nya
langsung. Berbeda dengan halaman yang bersifat dinamis, dimana proses
perubahan bukan terjadi di source code nya, namun di basis datanya. Sehingga
yang ditampilkan di halaman yang bersifat dinamis adalah tampilan yang berasal
dari basis data. Inilah yang membuat keterkaitan antara basis data dengan halaman
tersebut. Seperti pada analisis SQL Injection manual, web Simple-O juga tidak
dapat diinjeksi karena pada halaman loginform.php memang tidak ada
operasi/keterkaitan basis data. Inilah alasan kedua yang menjelaskan web SimpleO tidak dapat diinjeksi menggunakan Havij.
Pada
pengujian
web
dummy,
saat
alamat
http://192.168.10.48/lukman01/media.php?module=detailberita&id=22 diinjeksi,
hasilnya berhasil diinjeksi, sehingga semua basis data dari web dummy berhasil
didapatkan. Berbeda dengan alamat sebelumnya dimana proses SQL Injection
gagal dilakukan. Pada alamat ini di bagian belakangnya terdapat id=22, variabel
dan value inilah yang berhasil diinjeksi oleh Havij. Alamat ini menampilkan
halaman yang dinamis, dimana halaman yang ditampilkan diambil dari variabel id
yang bernilai 22. Variabel id yang bernilai 22 ini diambil dari basis data. Untuk
lebih jelasnya perhatikan contoh berikut. Misalkan basis data web dummy ini
memiliki banyak artikel yang masing-masing memiliki id. Pada saat web dummy
ingin menampilkan suatu artikel, web tersebut tinggal memanggil id artikel
tersebut dari basis data. Pada kasus ini web dummy menampilkan artikel yang
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
88
memiliki id=22 yang dapat dilihat pada alamat yang menjadi target. Apabila web
dummy ingin menampilkan artikel yang lain, maka web tersebut tinggal
memanggil id dari artikel tersebut dari basis data. Misal id dari artikel tersebut
adalah
19,
maka
halamannya
adalah
http://192.168.10.48/lukman01/media.php?module=detailberita&id=19. Pada web
Simple-O, halaman loginform yang diinjeksi bersifat statis. Inilah alasan ketiga
yang menjelaskan web Simple-O tidak dapat diinjeksi.
Sehingga berdasarkan analisis SQL Injection otomatis ini, disimpulkan
bahwa web Simple-O tidak dapat diinjeksi menggunakan Havij karena web
Simple-O menggunakan method POST yang berfungsi menyembunyikan variabel
dan value, halaman loginform Simple-O yang diinjeksi tidak memiliki keterkaitan
dengan basis data, dan halaman loginform tersebut juga bersifat statis.
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
BAB V
KESIMPULAN
1. Web Simple-O tidak dapat diinjeksi pada bagian URL karena web Simple-O
menggunakan method POST dan pada halaman loginform web Simple-O tidak
ada operasi basis data.
2. Web Simple-O (sebelum diberi Anti SQL Injection) dapat diinjeksi pada
bagian form user id pada halaman loginform menggunakan sintaks ’ or ‘1’=‘1;
‘’ or 0=0 # ; dan ‘ #
3. Web Simple-O tidak dapat diinjeksi pada bagian form kata sandi karena web
Simple-O menggunakan algoritma hash MD5 yang berfungsi untuk mengacak
kata sandi saat sebelum masuk ke query basis data.
4. Web Simple-O tidak dapat diinjeksi pada bagian form captcha karena
algoritma captcha yang digunakan web Simple-O berada di luar query basis
data.
5. Web Simple-O tidak dapat diinjeksi menggunakan perangkat lunak Automated
SQL Injection tool (Havij) karena web Simple-O menggunakan method POST
yang berfungsi menyembunyikan variabel dan value, halaman loginform
Simple-O yang diinjeksi tidak memiliki keterkaitan dengan basis data, dan
halaman loginform tersebut juga bersifat statis.
6. Web Simple-O setelah diberi pengaman Anti SQL Injection tidak dapat
diinjeksi lagi pada bagian form user id karena algoritma Anti SQL Injection
melarang dan mencegah penggunaan string tanda petik satu (‘) yang
digunakan untuk menginjeksi web Simple-O pada bagian form user id.
7. Web Simple-O (sebelum diberi Anti SQL Injection) sangat tidak aman karena
client yang tidak terdaftar dalam web Simple-O bisa masuk ke dalam web
Simple-O sebagai dosen menggunakan teknik SQL Injection pada form user
id.
8. Web Simple-O setelah diberi pengaman Anti SQL Injection sudah aman dari
serangan SQL Injection, baik dari serangan manual lewat URL, form user id,
form kata sandi, dan form captcha, maupun lewat automated SQL Injection
tool Havij.
89
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
90
DAFTAR REFERENSI
[1] Aswandi, “Aplikasi Berbasis Web”, 20 Januari 2006
http://aswandi.or.id/2006/01/20/aplikasi-berbasis-web/ (diakses 30 Maret
2012, 20:22)
[2] Herman Suyanto, Asep, “Mengenal E-Learning”. Universitas Gajah Mada.
2005.
[3] Handoyo, Gregorius and Agung Putri Ratna, Anak, “Pengembangan Sistem
Keamanan Simple-O”. Universitas Indonesia, Departemen Teknik ElektroFTUI.
[4] Liyantanto, “Keamanan Web”, 13 Maret 2009.
http://liyantanto.wordpress.com/2009/03/13/keamanan-web/ (diakses 2
April 2012, 22:47)
[5] R. Weippl, Edgar, “Security in E-learning”. Springer. 2005. (diakses 2 April
2012, 20.26)
[6] Protes, Cyber, “Macam-macam Motivasi Hacker”, 19 Desember 2011.
http://www.cyberprotes.com/2011/03/macam-macam-motivasihacker.html (diakses 2 April 2012 , 21:39)
[7] Hadizafa, “Waspadai Tujuh Macam Tipe Hacker”, 21 Februari 2011.
http://peluangusaha-oke.com/waspadai-tujuh-macam-tipe-hacker/ (2 April
2012, 21:15)
[8] “Keamanan Web”, 11 Maret 2011.
http://www.situstarget.web.id/2011/03/keamanan-web.html (diaskes 3
April 2012, 20:10)
[9] 86, Berita, “7 Tools yang biasa digunakan hacker”.
http://www.berita86.com/2011/01/7-tools-yang-biasa-di-gunakanhacker.html (3 April 2012, 21:48)
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
92
[19] r3dm0v3, “Havij 1.15 Advanced SQL Injection Tool User Manual”
http://itsecteam.com/files/havij/havij_help-english.pdf (diakses 1 Mei
2012, 22.00)
[20] Wijaya, Andi, “SQL Injection Tutorial”, 14 Agustus 2011
http://andiwijaya.wordpress.com/2011/08/14/sql-injection-tutorial/
(diakses 1 Mei 2012, 20.30)
[21] Bahrul, “Perbedaan Method Get dan Method Post”, 28 Desember 2010
http://bprogs.blogspot.com/2010/12/perbedaan-method-get-dan-post.html
(diakses 10 Mei 2012, 19.30)
[22] markus_petrux, “Syntax Reference for the SQL Parser”, 26 September 2005
http://area51.phpbb.com/phpBB/viewtopic.php?t=20911 (diakses 9 Juni
2012, 17.30)
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
91
[10] Cyber4rt, “Apa Itu Penetration Testing?”, 11 Desember 2011
http://blog.cyber4rt.com/index.php?post=apa-itu-penetrationtesting&category=general (diakses 4 April 2012, 20:32)
[11] Bocahwates, “Langkah-Langkah Penetration Testing Concept”, 20 Agustus
2011.
http://bocahwates.wordpress.com/2011/08/20/langkah-langkahpenetration-testing-concept/ (diakses 4 April, 22:05)
[12] [cielo]Snutz , “Pengertian SQL Injection dan cara
menegimplementasikannya” 17 Mei 2011.
http://cielo.n-stars.org/t44-pengertian-sql-injection-caramengimplementasikannya (diakses 20 April 2012, 21.10)
[13] Sunyoto, Andi, “Metode Penyerangan Website Menggunakan SQL Injection”
http://p3m.amikom.ac.id/p3m/dasi/sept04/01%20%20STMIK%20AMIKOM%20Yogyakarta%20Makalah%20ANDI%20_
metode%20penyerangan_%2010.pdf (diakses 20 April 2012, 21.30)
[14] “Sistem Operasi”, 14 September 2010
http://opensource.telkomspeedy.com/wiki/index.php/Sistem_operasi
(diakses 4 April 2012, 22.30)
[15] “Web Server”, 13 November 2010
http://www.stmikpontianak.ac.id/admin/upload/web-server.pdf (diakses 20
April 2012, 21.35)
[16] Kristanto, Andri, “Kupas Tuntas PHP & MySQL”. Cable Book. 2010
[17] “Pengertian Web Browser”, 18 Oktober 2008
http://www.anneahira.com/pengertian-web-browser.htm (diakses 4 April
2012, 20.14)
[18] Tata, “Havij 1.15 Pro”, 19 Maret 20112
http://unindrakelasb.web.id/forum/showthread.php?tid=159 (diakses 1 Mei
2012, 21.13)
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
93
DAFTAR PUSTAKA
J.E.N.I, “Web Programming – Bab 11 Keamanan Web”.
Adriansyah, Arya, Arifandi, Wahyuadi, and Wicaksono, Narenda, “Keamanan
Web Service”. Departemen Teknik Informatika Institut Teknologi
Bandung.
I Rusiawan, Dwi, “Tinjauan Aspek Keamanan Sistem Web Service”. Departemen
Teknik Elektro Institut Teknologi Bandung. 2003.
Hadiana, Ana and Djaelani, Elan, “Sistem Pendukung E-learning di Web”.
Januar, Fery, “Keamanan Data Pada Learning Management System”. Institut
Teknologi Bandung. 2007.
Ethical Hacker, Certified, “Ethical Hacking and Countermeasures version 6 –
Module XVII Web Application Vulnerabilities”.
Ethical Hacker, Certified, “Ethical Hacking and Countermeasures version 6 –
Module XXVI Penetration Testing”.
Ethical Hacker, Certified, “Ethical Hacking and Countermeasures version 6 –
Module XV Session Hijacking”.
Ethical Hacker, Certified, “Ethical Hacking and Countermeasures version 6 –
Module XVIII Web-based Password Cracking Techniques”.
Ethical Hacker, Certified, “Ethical Hacking and Countermeasures version 6 –
Module XIX SQL Injection”.
Kristanto, Andri, “Kupas Tuntas PHP & MySQL”. Cable Book. 2010
Analisis keamanan..., Alifandi Yudistira, FT UI, 2012
Universitas Indonesia
Download