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.