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: &#187; 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