PEMBUATAN APLIKASI WEB VULNERABILITY SCANNER
TERHADAP KELEMAHAN XSS (Cross Site Scripting)
MENGGUNAKAN JAVA.
TUGAS AKHIR
Oleh :
M. TRI JOKO
0534010093
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN”
JAWA TIMUR
MENGGUNAKAN JAVA.
TUGAS AKHIR
Diajukan Untuk Memenuhi Sebagian Persyaratan Dalam Memperoleh Gelar Sarjana Komputer
Jurusan Teknik Informatika
Oleh :
M. TRI JOKO
0534010093
JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN”
JAWA TIMUR
KATA PENGANTAR
Alhamdulillah, dengan mengucapkan puji dan syukur kehadirat Allah SWT
atas rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan tugas akhir ini
dengan judul “PEMBUATAN APLIKASI WEB VULNERABILITY SCANNER
TERHADAP KELEMAHAN XSS (Cross Site Scripting) MENGGUNAKAN JAVA
“yang merupakan persyaratan dalam memperoleh gelar Sarjana Komputer di
Universitas Pembangunan Nasional “VETERAN” Jatim.
Penulis mengucapkan terima kasih yang sebesar-besarnya kepada
pihak-pihak yang telah membantu baik materiil maupun dorongan spirituil untuk
menyelesaikan penulisan kerja praktek ini, terutama kepada:
1. Orang Tua dan keluarga tercinta serta sayangku nenni sutomo atas motivasi dan
doanya sehingga semua yang dikerjakan dapat berjalan lancar.
2. Bapak Prof. Dr. Ir. Teguh Soedarto, MP, selaku Rektor UPN “Veteran” Jatim.
3. Bapak Ir. Bambang Wahyudi, MS, selaku DEKAN FTI UPN “VETERAN” Jatim.
4. Bapak Nur Cahyo Wibowo, S.Kom, M.Kom selaku Kepala Jur. Sistem Informasi,
FTI UPN “VETERAN” Jatim.
5. Bapak Basuki Rachmat, S.Si, MT, selaku Kepala Jurusan Teknik Informatika
sekaligus Tim Penguji Tugas Akhir Penulis.
6. Bapak Achmad Junaidi, S.Kom, selaku Dosen Pembimbing yang telah
meluangkan waktu untuk memberikan bimbingan selama proses pelaksanaan
Tugas Akhir penulis.
penulis.
8. Special to: Arbi Septiawan (pakde) dan my laptop yang selalu setia menemaniku
untuk mengerjakan ini semua..
9. Dosen-dosen Teknik Informatika dan Sistem Informasi, staff dan segenap civitas
akademika UPN “VETERAN” Jatim.
10. My best Friends: Diah, Indri, Rina, Ve, Amey, MIO Gangster (Bang Budi
abangku tercinta, Broden, Jo2, Faisal, Ringgo, Mr. Craps, Pak Cahyo, Max, and
buat semuanya teman-teman UPN ).
11. MITRA IT (BGJUNCTION L2-B23), Pak Wahyudi makasih untuk tempatnya,
Frangky, Ito yang slalu setia menemani, semua crew Yogyafree.net.
12. Teman-teman Perum Marinir Gunung Sari makasih untuk suport dan doanya dan
Mas Mukhson makasih slalu kasih info.
13. Tidak lupa penulis ucapkan terima kasih kepada teman-teman yang tidak dapat
disebutkan satu persatu atas segala bantuannya dalam menyelesaikan Tugas Akhir
ini.
Penulis menyadari sepenuhnya masih banyak terdapat kekurangan dalam
penulisan Tugas Akhir ini. Oleh sebab itu kritik serta saran yang membangun dari
pembaca sangat membantu guna perbaikan dan pengembangan di masa yang akan
datang.
Akhirnya dengan ridho Allah penulis berharap semoga Tugas Akhir ini
dapat memberikan manfaat bagi pembaca sekalian terutama mahasiswa di bidang
komputer.
Surabaya, 10 Agustus 2010
Penulis
Halaman
HALAMAN JUDUL
LEMBAR PENGESAHAN
LEMBAR PENGESAHAN DAN PERSETUJUAN
2.2.2 Web Site Dengan Cross Site Scripting ... 14
2.2.3 Informasi Yang Diterbitkan Penyedia Layanan ... 18
2.2.4 Link Dalam Cross Site Scripting ... 19
2.2.5 Pencurian Data ... 20
2.2.6 Apa Yang Cross Site Scripting Dapat Lakukan ... 21
2.3 Java ………... 23
3.5.1 Blok Arsitektur Sistem WVS Online ……… 49
3.5.2 Blok Arsitektur sistem WVS berbasis Offline ... 50
BAB IV IMPLEMENTASI ………..………. 52
4.1 Implementasi Sistem ………. 52
5.2 Uji Coba ………..……….. 57
5.2.1 Aplikasi Web Vulnerability Scanner …….…..….. 57
5.2.2 Proses Scanning Secara Online ………. 59
5.2.3 Proses Scanning Secara Offline ….……… 78
5.3 ANALISA ……… 81
5.3.1 Analisa Scan XSS ……….…… 81
BAB VI PENUTUP……… ………...………. 84
6.1 Kesimpulan……… ………. 84
6.2 Saran……..……… ………. 84
DAFTAR TABEL
Halaman
Tabel 2.1 Perbandingan Antara Static Dengan Dynamic Web Page... 9
Tabel 2.2 HTML Escape Encoding...……….…...… 15
Tabel 2.3 Tipe Data Dalam My SQL.. ……….…...… 30
Halaman
Gambar 1.1 Data Statistik Serangan Terhadap Aplikasi Web ………... 2
Gambar 2.1 Alur Data Tipikal Untuk Halaman Web Yang Statis...……. 8
Gambar 2.2 Contoh Alur Data Pada Halaman Web Yang Dinamis.…… 10
Gambar 2.3 Contoh Kasus Cross Site Scripting.………….………. 12
Gambar 2.4 Contoh Kasus Cross Site Scripting ……….. 14
Gambar 2.5 Contoh Kasus Cross Site Scripting …..…….……… 14
Gambar 2.6 Contoh Kasus Cross Site Scripting ………... 18
Gambar 2.7 Contoh Kasus Cross Site Scripting …..………. 19
Gambar 2.8 Cara Kerja Web Server ………..… 33
Gambar 3.1 Perancangan Sistem Secara Global ……….….. 36
Gambar 3.2 Diagram Alur Scan XSS ... 38
Gambar 3.3 Proses Injeksi XSS Tidak Valid ...…... 40
Gambar 3.4 Proses Injeksi XSS Valid ...………...… 41
Gambar 3.5 Blok Arsitektur Sistem WVS berbasis online ... 42
Gambar 3.6 Blok Arsitektur Sistem WVS berbasis offline ...….…….. 43
Gambar 4.1 Tampilan Menu Utama ……….. 44
Gambar 4.2 Halaman WVS Scan XSS ... 45
Gambar 4.3 Potongan Script Scan XSS ……… 45
Gambar 4.4 Tampilan Laporan Scan XSS ... 46
Gambar 4.5 Laporan Scanning Terakhir ... 46
Gambar 4.6 Potongan script laporan scanning terakhir ...…... 47
Gambar 4.7 Fitur Help ……… 48
Gambar 5.6 Tampilan Awal Website Yang Sudah Terinjeksi XSS ... 54
Gambar 5.7 Tampilan Awal Website Target ...………...…... 55
Gambar 5.8 Form Scanning XSS ...…... 55
Gambar 5.9 Proses Scan XSS Telah Selesai ...……... 56
Gambar 5.10 Laporan Scan XSS ...……... 57
Gambar 5.11 Tampilan Awal Website Yang Sudah Terinjeksi XSS`... 57
Gambar 5.12 Tampilan Awal Website Target ……… ………..…... 58
Gambar 5.13 Form Scanning XSS ……… …….………..……….. …... 59
Gambar 5.14 Proses Scan XSS telah selesai ……… …….………..….... 60
Gambar 5.15 Laporan Scan XSS ...……... 60
Gambar 5.16 Tampilan Awal Website Yang Sudah Terinjeksi XSS`... 61
Gambar 5.17 Tampilan Awal Website Target ……… ………..…... 62
Gambar 5.18 Form Scanning XSS ……… …….………..……… 63
Gambar 5.19 Proses Scan XSS telah selesai ……… …….………..…….. 63
Gambar 5.20 Laporan Scan XSS ...……... 64
xviii
Gambar 5.23 Form Scanning XSS ……… ………….………..…………. 66
Gambar 5.24 Proses Scan XSS telah selesai ……… …….………..…... 67
Gambar 5.25 Laporan Scan XSS ...……... 67
Gambar 5.26 Tampilan Awal Website Yang Sudah Terinjeksi XSS`... 68
Gambar 5.27 Tampilan Website Tiruan ……..……… ………..…… 69
Gambar 5.28 Tampilan Awal Website Target ……… ………..…… 70
Gambar 5.29 Form Scanning XSS ……… ………….………..…………. 71
Gambar 5.30 Proses Scan XSS telah selesai ……… …….………..…….. 72
Gambar 5.31 Laporan Scan XSS ...……... 72
Gambar 5.32 Tampilan Awal Website Yang Sudah Terinjeksi XSS`... 73
ABSTRAKSI
Hingga saat ini tindakan penyerangan pada suatu web semakin tinggi. Sering
terlihat di media cetak,dan media elektronik begitu banyak berita yang memuat
aksi-aksi penyerangan terhadap suatu situs web. Salah satu contoh faktor timbulnya
tindakan hacking adalah kesalahan dalam scripting pembuatan web adalah hal
terbanyak yang dimanfaatkan oleh para attacker, sehingga rata-rata web yang
berhasil diserang melalui lubang ini. Kelemahan-kelemahan scripting yang
ditemukan pada proses vulnerabilities scanning misalnya, XSS.
Untuk mencegah tindakan tersebut dapat menggunakan jasa perusahaan audit
keamanan web. Dan tentunya akan menghabiskan banyak biaya, untuk menghindari
hal tersebut, dalam proyek akhir ini akan dibangun aplikasi web vulnerability
scanner yang berfungsi untuk mendeteksi suatu kelemahan web terhadap kelemahan
XSS.
Maka dengan menggunakan aplikasi web vulnerability scanner dapat
dideteksi suatu kelemahan web terhadap kelemahan XSS dengan lebih dini sehingga
dapat dicegah. Untuk kedepannya aplikasi web vulnerability scanner dapat
digabungkan dengan browser.
1.1 LATAR BELAKANG
Perkembangan dalam dunia maya terjadi sangat pesat. Teknologi baru
dirancang dan diimplementasikan untuk memenuhi kebutuhan pengguna yang
semakin beragam. Teknologi halaman web termasuk didalamnya. Teknologi yang
ada kini telah ber-revolusi menuju ke tingkatan yang berbeda. Halaman web kini
tidak lagi statis namun juga dinamis. Kini halaman web yang dinamis merupakan
pemandangan yang biasa kita lihat ketika melakukan surfing menggunakan
internet.
Halaman web yang dinamis merupakan teknologi yang memberi perubahan
penyediaan informasi, layanan, dan tampilan secara signifikan. Halaman web
yang dinamis memungkinkan interaksi yang lebih baik antara penyedia layanan
dengan penggunanya. Dengan menggunakan teknologi ini, halaman web akan
terlihat lebih manusiawi. Penyedia layanan dapat menambahkan content-content
yang sebelumnya masih merupakan impian belaka.
Dalam system security computer, istilah Vulnerability merupakan suatu
kelemahan yang memungkinkan seseorang untuk masuk dan mendapatkan hak
akses ke dalam komputer yang dituju(target). Biasanya vulnerability adalah
kelemahan yang dikarenakan kesalahan setting ataupun ataupun ketidaktahuan
administrator.(http://ahmad-prayitno.com)
Dan hingga saat ini angka kejahatan di dunia maya tetap tinggi dan terus
meningkat. Sebuah penelitian yang dilakukan oleh Corsaire menunjukkan bahwa
sekitar 25% aplikasi berbasis web memiliki celah yang membuatnya jadi rentan
terhadap serangan yang dilakukan oleh para cracker. Corsaire mendasarkan hasil
temuan ini pada penelitian selama enam tahun terakhir.
(http://berita.kapanlagi.com)
Dalam menganalisa, Corsaire menggunakan sampel dari
perusahaan-perusahaan besar di beberapa tempat termasuk Inggris, Australia, Eropa, Asia dan
tentu saja Amerika Serikat. Hasil analisa menunjukkan bahwa meski ada usaha
2
untuk memperbaiki aplikasi berbasis web ini, namun setidaknya masih ada sekitar
25% yang memiliki resiko tinggi.
Berikut merupakan data dari http://www.webappsec.org/projects/statistics
tentang statistic serangan terhadap Aplikasi Web:
Gambar 1. 1 Data Statistik Serangan terhadap Aplikasi Web
Dari statistik diatas diketahui bahwa serangan XSS menempati urutan Pertama.
Para hacker berkonsentrasi melakukan eksploitasi pada web-web di internet. Web
yang tidak aman memberikan kemudahan akses kepada hacker untuk
memanipulasi informasi dan melakukan aktivitas ilegal dengan menggunakan
situs yang telah diserang. Situs yang menjadi korban dapat disalahgunakan untuk
melakukan aktivitas kriminal. Misalnya saja melakukan phishing, pencurian
informasi sensitif milik pengguna, memanen email pengguna untuk keperluan
spamming, dll. Dalam kondisi ini, Attacker dapat membuat agar pemilik sah-nya
yang bertanggung jawab atas tindak kejahatan tersebut
Dilatarbelakangi permasalahan di atas, dalam proyek akhir ini dibangun
sebuah aplikasi yang berfungsi sebagai pendeteksi terhadap kelemahan XSS pada
suatu aplikasi web, sehingga dengan bantuan aplikasi tersebut suatu aplikasi web
dapat dideteksi lebih dini terhadap kelemahan XSS.
Selain itu, aplikasi ini juga memberikan info letak kelemahan suatu web
terhadap serangan XSS. Dengan aplikasi ini, pengguna bisa mendeteksi apakah
1.2 RUMUSAN MASALAH
Dari latar belakang masalah yang telah penulis paparkan, maka penulis
mencoba untuk membangun aplikasi Web Vulnerability Scanner. Adapun
beberapa rumusan permasalahan yang ada dalam membangun aplikasi Web
Vulnerability Scanner ini yaitu :
a) Bagaimana membangun Web Vulnerability Scanner berdasarkan data
masukan dari pengguna berupa URL untuk Web Vulnerability Scanner
berbasis Online.
b) Bagaimana membangun Web Vulnerability Scanner berbasis Offline
dengan ketentuan file web sudah harus tersimpan di htdocs Xampp.
c) Bagaimana Mengolah informasi dan menampilkan hasil scan yang
dibutuhkan oleh pengguna.
1.3 BATASAN MASALAH
Sedangkan batasan masalah pada proyek akhir ini, antara lain :
a) Bahasa yang digunakan adalah Java dan software developmentnya
adalah Netbeans
b) Aplikasi web yang dapat di scan adalah aplikasi web yang dibangun
dengan menggunakan bahasa pemrograman PHP dengan MYSQL
sebagai DBMS.
c) Kelemahan yang dibahas adalah XSS
1.4 TUJUAN
Tujuan proyek akhir ini adalah untuk membangun aplikasi Web Vulnerability
Scanner Menggunakan Java. Adapun manfaat dengan dibangunnya aplikasi ini
adalah untuk mendeteksi kelemahan web terhadap serangan XSS (Cross Site
Scripting).
1.5 MANFAAT
Berdasarkan dari latar belakang diatas maka dapat dirumuskan masalah
sebagai berikut :
4
Membuat website dengan tingkat kemanan yang tinggi sehingga tidak
mudah untuk dirusak atau dimasuki oleh pihak – pihak tertentu.
b.Terhindar dari defacer website.
Adalah bebas dari para perusak tampilan pada website yang telah
dibangun, bahkan menghapus seluruh data yang ada di dalam database.
c.Mendeteksi kelemahan web terhadap serangan XSS (Cross Site Scripting).
Yaitu mendeteksi salah satu jenis serangan web yang dilakukan dengan
memanfaatkan kelemahan pada suatu aplikasi web sehingga
memungkinkan aplikasi untuk menginjeksikan suatu tag HTML ataupun
Client Side Script pada aplikasi web tersebut dikarenakan adanya variabel
yang tidak disanitasi dengan baik.
1.6 METODOLOGI PENELITIAN
Dalam pengerjaan proyek akhir ini meliputi langkah-langkah sebagai
berikut :
1. Studi Literatur
Pada tahap ini dilakukan studi literatur dari beberapa referensi baik itu
dari buku atau internet.
2. Perancangan Sistem
Pada tahap ini dilakukan perancangan sistem yang akan dibangun,
meliputi perancangan database, perancangan sistem dan pembuatan user
interface.
3. Persiapan Data
Data-data penunjang yang didapatkan berupa suatu kesimpulan,
fakta-fakta dan aturan yang mengatur proses pencarian data yang saling
berhubungan satu sama lain disimpan ke dalam basis data RMS (Record
Management System) sebagai media penyimpanan.
4. Pengujian dan Analisa
Pengujian dan analisa dimaksudkan untuk mengetahui sejauh mana
sistem yang dibuat pada proyek akhir ini dapat berfungsi sesuai dengan
proses sistem yang diharapkan.
Dibuat kesimpulan dari pengujian sistem proyek akhir dengan
membandingkan apakah hasilnya seperti yang diharapkan pada tujuan
proyek akhir sebelumnya.
6. Pembuatan Laporan
Membuat dokumentasi dari semua tahapan proses diatas berupa laporan
yang berisi tentang dasar teori, hasil proyek akhir dan hasil analisa.
1.7 SISTEMATIKA PENELITIAN
Sistematika pembahasan yang akan diuraikan dalam buku laporan proyek
akhir ini terbagi dalam beberapa bab yang akan dibahas sebagai berikut :
BAB I PENDAHULUAN
Bab ini berisi tentang pendahuluan yang terdiri dari latar belakang,
perumusan masalah, batasan masalah, tujuan dan sasaran,
metodologi, serta sistematika pembahasan dari Proyek Akhir ini.
BAB II TEORI PENUNJANG
Bab ini membahas mengenai teori-teori yang berkaitan dengan
penyelesaian Proyek Akhir, yang didapatkan dari berbagai macam
buku serta sumber-sumber terkait lainnya yang berhubungan
dengan pembuatan Proyek Akhir ini.
BAB III PERANCANGAN SISTEM
Bab ini membahas mengenai perancangan sistem, meliputi
perancangan hirarki, perancangan proses, dan perancangan user
interface.
BAB IV IMPLEMENTASI
Bab ini membahas mengenai implementasi system BAB V UJI COBA DAN ANALISA
Bab ini menyajikan dan menjelaskan seluruh hasil dan analisa
dalam pembuatan Proyek Akhir ini dan bagaimana penyelesaian
dari setiap permasalahan error yang terjadi pada sistem operasi
6
BAB VI PENUTUP
Bab ini berisi kesimpulan dari uji coba perangkat lunak, dan saran
untuk pengembangan, perbaikan serta penyempurnaan terhadap
2.1 Web
Penemu website adalah Sir Timothy John ¨Tim¨ Berners-Lee, sedangkan
website yang tersambung dengan jaringan, pertamakali muncul pada tahun
1991. Maksud dari Tim ketika membuat website adalah untuk mempermudah
tukar menukar dan memperbarui informasi kepada sesama peneliti di tempat
dia bekerja. Pada tanggal 30 April 1993, CERN (tempat dimana Tim bekerja)
menginformasikan bahwa WWW dapat digunakan secara gratis oleh semua
orang. Sebuah website bisa berupa hasil kerja dari perorangan atau individu,
atau menunjukkan kepemilikan dari sebuah organisasi, perusahaan, dan
biasanya website itu menujukkan beberapa topik khusus, atau kepentingan
tertentu. Sebuah website bisa berisi hyperlink (pranala) yang menghubungkan
ke website lain, jadi, kadangkala perbedaan antara website yang dibuat oleh
individu perseorangan dengan website yang dibuat oleh organisasi bisnis bisa
saja tidak kentara. Website ditulis, atau secara dinamik di konversi menjadi
HTML dan diakses melalui sebuah program software yang biasa disebut
dengan web browser, yang dikenal juga dengan HTTP Client. Halaman web
dapat dilihat atau diakses melalui jaringan komputer dan internet,
perangkatnya bisa saja berupa komputer pribadi, laptop, PDA ataupun telepon
selular. Sebuah website dibuat didalam sebuah sistem komputer yang dikenal
dengan server web, juga disebut HTTP Server, dan pengertian ini juga bisa
menunjuk pada software yang dipakai untuk menjalankan sistem ini, yang
kemudian menerima lalu mengirimkan halaman-halaman yang diperlukan
untuk merespon permintaan dari pengguna. Apache adalah piranti lunak yang
biasa digunakan dalam sebuah webserver, kemudian setelah itu adalah
Microsoft Internet Information Services (IIS). (http://id.wikipedia.org/
wiki/Situs_web).
Web mempunyai 2 kategori yaitu :
a. Web statis
Tampilan web yang kita lihat ketika melakukan surfing melalui internet
8
sebenarnya hanyalah file teks biasa. File tersebut terletak pada sebuah
server yang dimiliki oleh penyedia layanan tersebut. File ini dapat
diperoleh oleh pengguna dengan sebuah request. File dengan ekstensi
tertentu tersebut kemudian ditampilkan dengan menggunakan sebuah
program interpreter. Ektensi file yang biasa ditemukan antara lain html,
htm, php, asp, cgi dan lain lain. Untuk lebih jelasnya dapat dilihat
Gambar 2.1 Alur data tipikal untuk halaman web yang statis
oleh pengguna. Software penerjemah melakukan proses visualisasi
berdasarkan perintah yang terdapat pada file teks yang diperoleh.
Kesalahan bahasa pada file teks yang diterima akan menyebabkan
kesalahan pada proses penerjemahan. Software penerjemah ini lebih
dikenal dengan sebutan browser web. Browser web populer saat ini adalah
internet explorer dan keluarga netscape.( http://id.wikipedia.org)
b. Web Dinamis
Perbedaan mendasar antara proses penyediaan halaman web statis dengan
proses penyediaan halaman web yang dinamis terletak pada request dan
program penyediaan halaman web pada server yang digunakan. Tabel 1
Tabel 2.1 Perbandingan antara static web page dengan
dynamic web Page
Dari tabel 2.1, kita dapat menyimpukan bahwa teknologi dynamic web
page memungkinkan halaman web yang mampu beradaptasi masukan
pengguna. Untuk mendukung kemampuan tersebut, server yang
menggunakan tekonologi dynamic web page didukung kemampuan bahasa
pemrograman. Isi halaman web yang dinamis, terdapat pada server,
biasanya berisi script pemrograman dalam bahasa yang biasa terdapat
dalam teknologi web seperti JavaScript dan VB. Script pemrograman ini
menerima dan memproses variabel – variabel yang dilalukan pengguna
ketika request dilakukan. Halaman yang dikirimkan oleh server akan
berisi informasi yang sangat tergantung algoritma pemrosesan dari
halaman yang terdapat pada server. Gambar 2.2 menunjukkan contoh alur
data halaman web yang dinamis. Halaman web yang dinamis ditunjukkan
oleh file helo.asp. Terlihat bahwa file sumber (yang terdapat pada server)
berbeda dengan file yang dikirimkan ke pengguna.
10
Gambar 2.2 Contoh alur data pada halaman web yang dinamis
2.2 XSS (Cross Site Scripting)
Cross site scripting adalah kelemahan keamanan yang terjadi pada
penggunaan teknologi dynamic page. Cross site scripting dapat diartikan
sebagai kelemahan yang terjadi akibat ketidakmampuan server dalam
memvalidasi input yang diberikan oleh pengguna. Algoritma, yang digunakan
untuk pembuatan halaman yang diinginkan, tidak mampu melakukan
penyaringan terhadap masukkan tersebut. Hal ini memungkinkan halaman
yang dihasilkan menyertakan perintah yang sebenarnya tidak diperbolehkan.
Cross site scripting merupakan kelemahan yang populer untuk dieksploitasi.
Namun sayangnya, banyak penyedia layanan yang tidak mengakui kelemahan
tersebut dan melakukan perubahan pada sistem yang mereka gunakan. Citra
penyedia layanan merupakan harga yang dipertaruhkan ketika mereka
mengakui kelemahan tersebut. Sayangnya dengan tindakan ini konsumen atau
pengguna menjadi pihak yang dirugikan.
2.2.1 Cara Kerja Cross Site Scripting
Cross site scripting bekerja bak penipu dengan kedok yang mampu
mengelabui orang yang tidak waspada. Elemen penting dari keberhasilan
Social engineering merupakan elemen terpenting yang menentukan
keberhasilan penipuan yang akan dilakukan. Cross site scripting
memampukan seseorang yang tidak bertanggungjawab melakukan
penyalahgunaan informasi penting. Sebelum sampai pada proses
penyalahgunaan tersebut, penyerang mengambil langkah-langkah dengan
mengikuti pola tertentu. Langkah pertama, penyerang melakukakan
pengamatan untuk mencari web-web yang memiliki kelemahan cross site
scripting. Langkah kedua, sang penyerang mencari tahu apakah web tersebut
menerbitkan informasi yang dapat digunakan untuk melakukan pencurian
infomasi lebih lanjut. Informasi tersebut biasanya berupa cookie. Langkah
kedua ini tidak selalu dijalankan. Langkah ketiga, sang penyerang
membujuk korban untuk mengikuti sebuah link yang mengandung kode,
ditujukan untuk mendapatkan informasi yang telah disebutkan sebelumnya.
Kemampuan social engineering dari sang penyerang diuji disini. Setelah
mendapatkan informasi tersebut, sang penyerang melakukan langkah
terakhir, pencurian maupun pengubahan informasi vital. Berikut merupakan
contoh kasus dari cross site scripting. Anggap sebuah penyedia layanan
message board, A, memiliki kelemahan cross site scripting. Web tersebut
juga menghasilkan cookie. Cookie tersebut bertujuan agar pengguna dapat
membuka jendela browser baru tanpa memasukkan user name dan password
lagi. B, mencoba untuk mengeksploitasi kelemahan ini, meletakkan sebuah
link yang mengandung kode yang “jahat” pada message board tersebut. C,
seorang pengguna, tertarik pada link tersebut menekan link tersebut. Tanpa
disadari C, cookie yang terdapat pada komputernya telah dikirimkan ke
komputer B. Kini B dapat mengakses message board sebagai C hanya
dengan menggantikan cookienya dengan cookie yang ia dapatkan dari C.
12
Gambar 2.3 Contoh kasus cross site scripting
Bagian berikut akan menjelaskan secara lebih mendalam setiap langkah
sampai penyalahguanan informasi dapat terjadi.( http://msdn.microsoft.com/
workshop/author/dhtml/httponly_cookies.asp)
2.2.2 Web Site Dengan Cross Site Scripting
Pencarian web site dengan kelemahan cross site scripting sebenarnya
tidaklah terlalu sulit. Web site yang menghasilkan halaman web yang
dinamis merupakan syarat utama yang diperlukan untuk mengeksploitasi
kelemahan ini. Web dengan form input merupakan web potensial untuk
dieksplotasi cross site scripting. Web yang membutuhkan user name dan
password serta search engine termasuk didalamnnya. Syarat berikutnya
adalah web tersebut menggunakan metoda get ketika melakukan
komunikasi. Methoda get mencantumkan informasi pada field link (juga
disebut querystring) yang dikirimkan (Ollman & Gunter). Contoh dari link
dengan menggunakan methoda get, http://www.jospyro.com/ halaman1.asp?
username = me. Ini menunjukkan bahwa web tersebut dapat diinjeksi
dengan script. Langkah terakhir adalah memastikan bahwa script yang kita
berikut akan menampilkan halaman1.asp dengan pop-up box ketika di klik
(pop up box tersebut akan bertuliskan “ jospyro ”),
http://www.jospyro.com/halaman1.asp?username=<script language =
“JavaScript”>alert (‘jospyro) </script>. Contoh berikut merupakan
merupakan halaman web yang menggunakan form. Data yang dikirimkan
berupa nama pengguna. Data dikirimkan dengan menggunakan metoda get.
Isi halaman web tersebut adalah sebagai berikut.
<HTML>
<HEAD>
<TITLE>
Contoh halaman menggunakan form :
</TITLE>
</HEAD> <BODY>
<form name="input" method="get"
action="helo.asp">
Nama user :
<input type=text name="username">
<br> <input type=submit value="Send">
</form>
</BODY> </HTML>
Script file yang bertugas menghasilkan halaman web berdasarkan input dari
login.html adalah hello.asp . Isi dari hello.asp adalah sebagai berikut.
<HTML> <BODY>
<%
response.write "Selamat datang "
response.write
request.querystring("username")
%>
14
Gambar 2.4 Contoh kasus cross site scripting
Halaman web dinamis yang dihasilkan oleh server
(http://et1/helo.asp?username=%3Cscript%3Ealert%28%27jospyro%27%2
9% 3C%2Fscript%3E) berisi script sebagai berikut.
<HTML>
<BODY>
Selamat datang <script>alert(' jospyro
')</script>
</BODY></HTML>
ekuivalen yang dikodekan. Pengkodean yang biasa digunakan adalah HTML
escape encoding. Tabel 2 menunjukkan karakter tersebut dengan ekuivalen
karakter yang telah dikodekan.
Tabel 2.2 HTML Escape Encoding
untuk menghindari rutin tersebut dan penggunaan karakter alternatif “\x3c”
(<) dan “\x3e” (>), maka penyerang tetap dapat melakukan injeksi kode.
Teknik lain adalah dengan membuat aplikasi yang memfilter kode yang
diinjeksikan dengan comment. Jika pada input terdapat
<script>code</code> maka halaman yang dihasilkan adalah seperti berikut.
<COMMENT>
<script>code</script>
</COMMENT>
Penyerang dapat menghindari dengan menambahkan kode <COMMENT>
dan </COMMENT> diantara kode yang ia injeksikan sehingga filter dapat
dilewati. Jika input <script></COMMENT><script><code></script><
16
Kode tetap dapat diinjeksikan!
2.2.3 Informasi Yang Diterbitkan Penyedia Layanan
Pengecekan ini dilakukan ketika penyerang bertujuan untuk melakukan
penyalahguanaan informasi pengguna. Seperti telah disebutkan sebelumnya,
informasi yang sering diperiksa adalah cookie. Penyerang dapat melakukan
ini dengan terlebih dahulu mendaftar sebagai salah satu pengguna.
Penyerang akan memeriksa informasi apa yang terdapat pada cookie
tersebut. Apakah cookie tersebut dapat digunakan untuk mengelabuhi
server.`Tidak semua proses eksploitasi ditujukan pada penyalahgunaan
informasi pengguna. Terdapat juga tipe eksploitasi yang ditujukan untuk
“mengubah” isi dari informasi atau iklan yang ditampilkan. Tipe eksploitasi
seperti ini tidak membutuhkan penyediaan informasi, seperti cookie.
2.2.4 Link Dalam Cross Site Scripting
Bagian ini sangat menarik karena mencakup aspek social engineering. Cross
site scripting merupakan lubang yang timbul akibat ketidakmampuan server
untuk mengecek input yang diberikan pengguna. Jadi titik berat keberhasilan
eksploitasi kelemahan ini terletak pada pengguna. Bagaimana membujuk
pengguna untuk mengklik link yang disediakan oleh penyerang. Link ini
biasa diletakkan pada e-mail, message board, dan lain lainnya. Untuk
menghindari pemfilteran, penyerang perlu untuk mengkodekan link yang ia
buat ke bentuk yang akan terlihat aneh bagi pengguna. Pengkodean biasanya
menggunakan HTML Escape encoding yang menggunakan karakter yang
disertakan dalam link cukup panjang, pengguna akan curiga dan
mengurungkan niatnya (walau sebaik apapun social engineering yang
dilakukan). Untuk mengkamuflasekan link ini, penyerang menggunakan
nama lain yang lebih menarik daripada langsung meletakkan link tersebut.
Alih-alih meletakkan link http://trustedsite.org/page1?name=%3cscript%
3esomecode%3c /script %3e, akan lebih baik membuat link dengan nama
click me yang merujuk pada link yang sama. Walaupan link yang
sebenarnya akan terlihat pada bagian bawah kiri dari browser, pengguna
pada umumnya kurang memperhatikan kejanggalan yang ada dan langsung
mengklik link tersebut. Cara lain untuk memastikan bahwa link tersebut
akan dijalankan adalah dengan menggunakan perintah onmouseover.
Dengan menggunakan perintah ini, link beserta kode yang terdapat
didalamnya dapat dijalankan ketika cursor bersada diatas link tersebut.
Dengan cara ini, persentase keberhasilan cross site scripting terjadi semakin
besar.
2.2.5 Pencurian Data
Pencurian data dengan menggunakan informasi yang diperoleh seperti
cookie ditujukan pada penyalahgunaan informasi pengguna. Cookie yang
dihasilkan penyedia layanan berisi informasi yang bermacam – macam. Jika
informasi ini berhasil didapakan maka penyalahgunaan dapat terjadi.
Cookie, tipe berbeda, digunakan sebagai alat identifikasi selama session
berlangsung (session berlangsung ketika pengguna log-in sampai pengguna
log-out). Jika penyerang berhasil mendapatkan cookie seorang pengguna
selama session berlangsung, penyerang bisa mendapatkan akses sebagai
pengguna hanya dengan mengubah cookie yang ia gunakan dengan cookie
yang ia dapatkan dari korban. Hal lain yang terpenting ketika pencurian
dilakukan adalah kesan yang diberikan pada korban. Sering kali halaman
web menampilkan broken link ketika eksploitasi dilakukan. Untuk
menghindari kecurigaan korban, biasanya penyerang membuat script yang
18
2.2.6 Apa Yang Cross Site Scripting Dapat Lakukan?
Kerentanan aplikasi web terhadap celah ini mampu membuat resiko seperti
pencurian account pengguna. Hal ini cukup berbahaya karena privasi
seseorang dapat terganggu. Contoh potongan kode dari suatu aplikasi web
yang tidak tersanitasi dengan baik dapat digambarkan seperti berikut ini :
http://www.target.com/search.php?q=%3Ciframe%20src=%22http://jospyro. blogspot.com%22%20width=800%20height=800%3E%3C/iframe%3E
maka serangan tersebut akan dieksekusi dan hasilnya adalah sebagai berikut
:
Gambar 2.6 Contoh kasus cross site scripting
Link yang digunakan oleh penyerang berisi kode yang menampilkan
halaman dengan kerangka yang berasal dari site asli namun dengan isi sesuai
dengan yang diinginkan penyerang. Dalam melakukan XSS, dapat
menginjeksikan tag HTML, Java Script atau Script Client Side lainnya.
Hasil injeksi yang dilakukan memiliki 2 sifat tergantung dimana injeksi
serangan XSS tersebut dilakukan. Jika injeksi XSS dilakukan pada suatu
variabel yang hanya melewatkan parameter tanpa menyimpannya di
database, maka hasilnya hanya bersifat temporary (sementara). Akan tetapi
Blog dan yang sejenisnya dan dilakukan serangan XSS, maka hasil serangan
tersebut akan bersifat permanen karena script yang di injeksikan tersimpan
didalam database. Kode Java Script yang diinjeksikan tidak harus berupa
message box. Misalnya saja ingin membuat suatu halaman baru menuju
target.com ketika halaman yang diinjeksi di laod oleh user, maka bisa
menginjeksikan script berikut:
<script>window.open("http://www.target.com/")</script>
Seperti yang sudah dicontohkan di awal pembahasan artikel ini, Anda juga
bisa menginjeksikan tag-tag HTML. Misalnya saja:
<H1> HACK BY JO_SPYRO </H1>
20
Jadi juga bisa menginjeksikan script yang akan menampilkan animasi
Flash, me-load file-file musik, dan lain sebagainya, sesuai dengan
kreatifitas.( http://www.spyrozone.net)
2.3 JAVA
Java diciptakan pada tahun 1991 oleh James Gosling et al. dari Sun
Microsystems, pada awalnya disebut dengan Oak, diambil dari nama pohon
diluar jendela Gosling. Namanya berubah menjadi Java karena sudah ada
bahasa lain yang bernama Oak. Java merupakan sebuah bahasa pemrograman
komputer berbasiskan kepada Object Oriented Programming. Java diciptakan
setelah C++ dan didesain sedemikian sehingga ukurannya kecil, sederhana,
dan portable (dapat dipindah-pindahkan di antara bermacam platform dan
sistem operasi). Java pertama kali diluncurkan pada tahun 1995 sebagai
bahasa pemrograman umum dengan kelebihan bisa dijalankan di web
browser sebagai applet. Langkah pertama yang diambil oleh Sun
Microsystem adalah dengan membuat JVM(Java Virtual Machine) yang
kemudian diimplementasikan dalam bentuk JRE(Java Runtime Environment).
JVM adalah lingkungan tempat eksekusi program java berlangsung dimana
para objek saling berinteraksi satu dengan lainnya. Virtual machine inilah
yang menyebabkan Java mempunyai kemampuan penanganan memori yang
lebih baik, keamanan yang lebih tinggi serta portabilitas yang besar. Untuk
lebih meningkatkan produktivitas pengembang perangkat lunak maka
diluncurkan SDK(Standard Development Kit) yang berisi kakas dan API
untuk membuat aplikasi berbasis Java. Java memiliki beberapa kelebihan
yaitu :
a. Multiplatform. Kelebihan utama dari Java ialah dapat dijalankan di beberapa platform / sistem operasi komputer, sesuai dengan prinsip
tulis sekali, jalankan di mana saja. Dengan kelebihan ini pemrogram
cukup menulis sebuah program Java dan dikompilasi (diubah, dari
bahasa yang dimengerti manusia menjadi bahasa mesin / bytecode)
sekali lalu hasilnya dapat dijalankan di atas beberapa platform tanpa
java dikerjakan diatas operating system Linux tetapi dijalankan
dengan baik di atas Microsoft Windows. Platform yang didukung
sampai saat ini adalah Microsoft Windows, Linux, Mac OS dan Sun
Solaris. Penyebabnya adalah setiap sistem operasi menggunakan
programnya sendiri-sendiri (yang dapat diunduh dari situs Java) untuk
meninterpretasikan bytecode tersebut.
b. OOP (Object Oriented Programming - Pemrogram Berorientasi Objek) yang artinya semua aspek yang terdapat di Java adalah Objek.
Java merupakan salah satu bahasa pemrograman berbasis objek secara
murni. Semua tipe data diturunkan dari kelas dasar yang disebut
Object. Hal ini sangat memudahkan pemrogram untuk mendesain,
membuat, mengembangkan dan mengalokasi kesalahan sebuah
program dengan basis Java secara cepat, tepat, mudah dan
terorganisir. Kelebihan ini menjadikan Java sebagai salah satu bahasa
pemograman termudah, bahkan untuk fungsi - fungsi yang advance
seperti komunikasi antara komputer sekalipun.
c. Perpustakaan Kelas Yang Lengkap, Java terkenal dengan kelengkapan library/perpustakaan (kumpulan program program yang
disertakan dalam pemrograman java) yang sangat memudahkan dalam
penggunaan oleh para pemrogram untuk membangun aplikasinya.
Kelengkapan perpustakaan ini ditambah dengan keberadaan
komunitas Java yang besar yang terus menerus membuat
perpustakaan-perpustakaan baru untuk melingkupi seluruh kebutuhan
pembangunan aplikasi.
d. Bergaya C++, memiliki sintaks seperti bahasa pemrograman C++ sehingga menarik banyak pemrogram C++ untuk pindah ke Java.
Saat ini pengguna Java sangat banyak, sebagian besar adalah
pemrogram C++ yang pindah ke Java. Universitas-universitas di
Amerika Serikat juga mulai berpindah dengan mengajarkan Java
kepada murid-murid yang baru karena lebih mudah dipahami oleh
murid dan dapat berguna juga bagi mereka yang bukan mengambil
22
e. Pengumpulan sampah otomatis, memiliki fasilitas pengaturan penggunaan memori sehingga para pemrogram tidak perlu melakukan
pengaturan memori secara langsung (seperti halnya dalam bahasa
C++ yang dipakai secara luas).
f. Secure. Sebagai bahasa pemrograman untuk aplikasi internet dan terdistribusi, Java memiliki beberapa mekanisme keamanan untuk
menjaga aplikasi tidak digunakan untuk merusak sistem komputer
yang menjalankan aplikasi tersebut.
g. Portable. Source code maupun program Java dapat dengan mudah dibawa ke platform yang berbeda-beda tanpa harus dikompilasi ulang.
Hal ini menyebabkan source code Java yang telah dikompilasi
menjadi Java bytecodes dapat dijalankan pada platform yang
berbeda-beda.
h. Multithreaded. Java mempunyai kemampuan untuk membuat suatu program yang dapat melakukan beberapa pekerjaan secara sekaligus
dan simultan.
i. Dynamic. Java didesain untuk dapat dijalankan pada lingkungan yang dinamis. Perubahan pada suatu class dengan menambahkan
properties ataupun method dapat
dilakukan tanpa menggangu program yang menggunakan class
tersebut.
Dan Java juga mempunyai beberapa fitur - fitur yang dimiliki diantaranya :
a. Java Virtual Machine (JVM) . JVM adalah sebuah mesin imajiner (maya) yang bekerja dengan menyerupai aplikasi pada sebuah mesin
nyata. JVM menyediakan spesifikasi hardware dan platform dimana
kompilasi kode Java terjadi. Spesifikasi inilah yang membuat aplikasi
berbasis Java menjadi bebas dari platform manapun karena proses
kompilasi diselesaikan oleh JVM. Aplikasi program Java diciptakan
dengan file teks berekstensi .java. Program ini dikompilasi
menghasilkan satu berkas bytecode berekstensi .class atau lebih.
Perbedaannya adalah kode mesin harus dijalankan pada sistem
komputer dimana kompilasi ditujukan, sementara bytecode berjalan
pada java interpreter yang tersedia di semua platform sistem
komputer dan sistem operasi.
b. Garbage Collection. Banyak bahasa pemrogaman lain yang mengijinkan seorang pemrogram mengalokasikan memori pada saat
dijalankan. Namun, setelah menggunakan alokasi memori tersebut,
harus terdapat cara untuk menempatkan kembali blok memori tersebut
supaya program lain dapat menggunakannya. Dalam C, C++ dan
bahasa lainnya, adalah pemrogram yang mutlak bertanggung jawab
akan hal ini. Hal ini dapat menyulitkan bilamana pemrogram tersebut
alpa untuk mengembalikan blok memori sehingga menyebabkan
situasi yang dikenal dengan nama memory leaks. Program Java
melakukan garbage collection yang berarti program tidak perlu
menghapus sendiri objek – objek yang tidak digunakan lagi. Fasilitas
ini mengurangi beban pengelolaan memori oleh pemrogram dan
mengurangi atau mengeliminasi sumber kesalahan terbesar yang
terdapat pada bahasa yang memungkinkan alokasi dinamis.
c. Code Security. Code Security terimplementasi pada Java melalui penggunaan Java Runtime Environment (JRE). Java menggunakan
model pengamanan 3 lapis untuk melindungi sistem dari untrusted
Java Code :
1. Pertama, class-loader menangani pemuatan kelas Java ke runtime
interpreter. Proses ini menyediakan pengamanan dengan
memisahkan kelas – kelas yang berasal dari local disk dengan
kelas – kelas yang diambil dari jaringan. Hal ini membatasi
aplikasi Trojan karena kelas – kelas yang berasal dari local disk
yang dimuat terlebih dahulu.
2. Kedua, bytecode verifier membaca bytecode sebelum dijalankan dan menjamin bytecode memenuhi aturan – aturan dasar bahasa
24
3. Ketiga, manajemen keamanan menangani keamanan tingkat aplikasi dengan mengendalikan apakah program berhak mengakses
sumber daya seperti sistem file, port jaringan, proses eksternal dan
sistem windowing. Setelah seluruh proses tersebut selesai
dijalankan, barulah kode program di eksekusi.
Java juga menyediakan beragam teknik pengamanan lain :
a. Bahasa dirancang untuk mempersulit eksekusi kode perusak. Peniadaan pointer merupakan langkah besar pengamanan. Java tidak
mengenal operasi pointer. Di tangan pemrogram handal, operasi
pointer merupakan hal yang luar biasa untuk optimasi dan pembuatan
program yang efisien serta mengagumkan. Namun mode ini dapat
menjadi petaka di hadapan pemrogram jahat. Pointer merupakan
sarana luar biasa untuk pengaksesan tak diotorisasi. Dengan peniadaan
operasi pointer, Java dapat menjadi bahasa yang lebih aman.
b. Java memiliki beberapa pengaman terhadap applet. Untuk mencegah
program bertindak mengganggu media penyimpanan, maka applet
tidak diperbolehkan melakukan open, read ataupun write terhadap
berkas secara sembarangan. Karena Java applet dapat membuka
jendela browser yang baru, maka jendela mempunyai logo Java dan
teks identifikasi terhadap jendela yang dibuka. Hal ini mencegah
jendela pop-up menipu sebagai permintaan keterangan username dan
password.
(http://id.wikipedia.org/wiki/Java)
2.4PHP
PHP adalah bahasa pemrograman script yang paling banyak dipakai saat ini.
PHP banyak dipakai untuk memrogram situs web dinamis, walaupun tidak
tertutup kemungkinan digunakan untuk pemakaian lain. Contoh terkenal dari
aplikasi PHP adalah phpBB dan MediaWiki (software di belakang Wikipedia).
PHP juga dapat dilihat sebagai pilihan lain dari ASP.NET/C#/VB.NET
CGI/Perl. Contoh aplikasi lain yang lebih kompleks berupa CMS yang
dibangun menggunakan PHP adalah Mambo, Joomla!, Postnuke, Xaraya, dan
lain-lain. Pada awalnya PHP merupakan kependekan dari Personal Home
Page (Situs Personal). PHP pertama kali dibuat oleh Rasmus Lerdorf pada
tahun 1995. Pada waktu itu PHP masih bernama FI (Form Interpreted), yang
wujudnya berupa sekumpulan script yang digunakan untuk mengolah data
form dari web. Selanjutnya Rasmus merilis kode sumber tersebut untuk umum
dan menamakannya PHP/FI. Dengan perilisan kode sumber ini menjadi open
source, maka banyak programmer yang tertarik untuk ikut mengembangkan
PHP. Pada November 1997, dirilis PHP/FI 2.0. Pada rilis ini interpreter PHP
sudah diimplementasikan dalam program C. Dalam rilis ini disertakan juga
modul-modul ekstensi yang meningkatkan kemampuan PHP/FI secara
signifikan. Pada tahun 1997, sebuah perusahaan bernama Zend menulis ulang
interpreter PHP menjadi lebih bersih, lebih baik, dan lebih cepat. Kemudian
pada Juni 1998, perusahaan tersebut merilis interpreter baru untuk PHP dan
meresmikan rilis tersebut sebagai PHP 3.0 dan singkatan PHP dirubah
menjadi akronim berulang PHP: Hypertext Preprocessing. Pada pertengahan
tahun 1999, Zend merilis interpreter PHP baru dan rilis tersebut dikenal
dengan PHP 4.0. PHP 4.0 adalah versi PHP yang paling banyak dipakai pada
awal abad ke-21. Versi ini banyak dipakai disebabkan kemampuannya untuk
membangun aplikasi web kompleks tetapi tetap memiliki kecepatan dan
stabilitas yang tinggi.
Pada Juni 2004, Zend merilis PHP 5.0. Dalam versi ini, inti dari interpreter
PHP mengalami perubahan besar. Versi ini juga memasukkan model
pemrograman berorientasi objek ke dalam PHP untuk menjawab
perkembangan bahasa pemrograman ke arah paradigma berorientasi objek.
kelebihan PHP dari bahasa pemrograman lain :
a. Bahasa pemrograman PHP adalah sebuah bahasa script yang tidak
26
b. Web Server yang mendukung PHP dapat ditemukan dimana - mana dari
mulai apache, IIS, Lighttpd, nginx, hingga Xitami dengan konfigurasi yang
relatif mudah.
c. Dalam sisi pengembangan lebih mudah, karena banyaknya milis - milis
dan developer yang siap membantu dalam pengembangan.
d. Dalam sisi pemahamanan, PHP adalah bahasa scripting yang paling
mudah karena memiliki referensi yang banyak.
e. PHP adalah bahasa open source yang dapat digunakan di berbagai mesin
(Linux, Unix, Macintosh, Windows) dan dapat dijalankan secara runtime
melalui console serta juga dapat menjalankan perintah-perintah system.
PHP memiliki 7 tipe data yaitu :
1. Integer
Nilai sebuah data dari sebuah tipe data integer adalah nilai bilangan bulat
tersebut dalam matematika. Representasi data ini merupakan cara
bagaimana nilainya disimpan di dalam memori komputer. Tipe data
integral terbagi menjadi dua buah kategori, baik itu bertanda (signed)
ataupun tidak bertanda (unsigned). Bilangan bulat bertanda mampu
merepresentasikan nilai bilangan bulat negatif, sementara bilangan bulat
tak bertanda hanya mampu merepresentasikan bilangan bulat positif.
Representasi integer positif di dalam komputer sebenarnya adalah untaian
bit, dengan menggunakan sistem bilangan biner. Urutan dari bit-bit
tersebut pun bervariasi, bisa berupa Little Endian ataupun Big Endian.
Selain ukuran, lebar atau ketelitian (presisi) bilangan bulat juga bervariasi,
tergantung jumlah bit yang direpresentasikanya. Bilangan bulat yang
memiliki n bit dapat mengodekan 2n. Jika tipe bilangan bulat tersebut
adalah bilangan bulat tak bertanda, maka jangkauannya adalah dari 0
2. Double
Double adalah deklarasi untuk tipe data numerik bilangan pecahan secara
default menggunakan
3. Boolean
Boolean adalah suatu tipe data yang hanya mempunyai dua nilai. Yaitu
true atau false (benar atau salah). Pada beberapa bahasa pemograman nilai
true bisa digantikan 1 dan nilai false digantikan 0.
4. String
String dalam pemrograman komputer adalah sebuah deret simbol. Tipe
data string adalah tipe data yang digunakan untuk menyimpan barisan
karakter.
5. Object
Object merupakan tipe data yang bisa berupa bilangan, variabel atau
fungsi. Data ini dapat dimasukkan ke dalam skrip program sehingga
meringkas beberapa fungsi dan memperkecil ukuran file.
6. Array
Array adalah suatu tipe data terstruktur yang dapat menyimpan banyak
data dengan suatu nama yang sama dan menempati tempat di memori yang
berurutan (kontigu) serta bertipe data sama pula. Array dapat diakses
berdasarkan indeksnya. Indeks array umumnya dimulai dari 0 dan ada
pula yang dimulai dari angka bukan 0. Pengaksesan larik biasanya dibuat
dengan menggunakan perulangan (looping).
7. Null
Null itu artinya kosong, Tapi artian kosong tidak sama dengan string ""
28
Kode program PHP menyatu dengan tag-tag HTML dalam satu file. Kode
PHP diawali dengan tag <? atau <?php dan ditutup dengan tag ?>. File yang
berisi tag HTML dan kode PHP ini diberiekstensi .php atau ekstensi lainnya
yang ditetapkan pada Apache atau web server. Berdasarkan ekstensi ini, pada
saat file diakses, server akan tahu bahwa file ini mengandung kode PHP.
Server akan menerjemahkan kode ini dan menghasilkan keluaran dalam
bentuk tag HTML yang akan dikirim ke browser client yang mengakses file
tersebut. Sebagai contoh:
Echo “Selamat menggunakan PHP”;
?>
</CENTER>
</BODY>
</HTML>
Pada contoh program diatas terdapat satu baris perintah PHP, yaitu
<?
Echo “Selamat menggunakan PHP”;
?>
Perintah ini dibuka dengan tag <? dan ditutup dengan tag ?>. Perintah PHP
dapat disisipkan disembarang tempat dari file diatas. Setiap baris perintah
PHP diakhiri dengan tanda titik koma (;), tag penutup ?> juga dapat berfungsi
sebagai pengganti titik koma (;), jadi baris perintah diatas dapat juga
2.5My SQL
MySQL adalah database yang paling banyak dipakai. Menurut perusahaan
pengembangnya, MySQL telah terpasang di sekitar 3 juta komputer. Puluhan
hingga ratusan ribu situs mengandalkan MySQL bekerja siang malam
memompa data bagi para pengunjungnya. Penyebab utama MySQL begitu
popular di kalangan Web maupun Desktop adalah karena ia memang cocok
bekerja di lingkungan tersebut. Pertama, MySQL tersedia di berbagai platform
Linux dan berbagai varian Unix. Sesuatu yang tidak dimiliki MS Access,
misalnya—padahal MS Access amat popular di platform Windows. Banyak
server Desktop berbasiskan Unix, ini menjadikan MS Access otomatis tidak
dapat dipakai karena ia pun tidak memiliki kemampuan
client-server/networking.(Bimo, 2003). Kedua, fitur-fitur yang dimiliki MySQL
memang yang biasanya banyak dibutuhkan dalam aplikasi Desktop. Misalnya,
klausa Limit SQL-nya, praktis untuk melakukan paging. Atau jenis indeks
field Fultext, untuk full text searching. Atau sebutlah kekayaaan fungsi-fungsi
builtinnya, mulai dari memformat dan memanipulasi tanggal, mengolah
string, regex, enkripsi dan hashing. Yang terakhir misalnya, praktis untuk
melakukan penyimpanan password anggota situs. Sementara fitur-fitur yang
lebih jarang digunakan belum atau baru muncul saja di versi-versi terakhir.
Subselek misalnya, sampai saat ini tidak ada di MySQL. Atau view, atau
stored procedure, atau trigger. Ini membuat MySQL tetap langsing dan cepat,
tapi pengembang aplikasi bisnis mungkin jadi berkerut muka mengetahui ini,
karena fitur-fitur yang hilang ini seringkali mereka pakai untuk
menyederhanakan logika aplikasi mereka. Sebelum versi 3.23.15 sekitar dua
tahun yang lalu MySQL tidak bisa melakukan transaksi sama sekali. dengan
produk yang satu ini. MySQL adalah database yang paling banyak dipakai.
Menurut perusahaan pengembangnya, MySQL telah terpasang di sekitar 3 juta
komputer. Puluhan hingga ratusan ribu situs mengandalkan MySQL bekerja
30
Tabel 2.3 Tipe Data Dalam My SQL
Ketiga, MySQL memiliki overhead koneksi yang rendah. Soal kecepatan
melakukan transaksi atau kinerja di kondisi load tinggi mungkin bisa
diperdebatkan dengan berbagai benchmark berbeda, tapi kalau soal yang satu
ini MySQL-lah juaranya. Karakteristik ini membuat MySQL cocok bekerja
dengan aplikasi CGI, di mana di setiap request skrip akan melakukan koneksi,
mengirimkan satu atau lebih perintah SQL, lalu memutuskan koneksi lagi.
Cobalah melakukan hal ini dengan Interbase atau bahkan Oracle. Maka
dengan load beberapa request per detik saja server Desktop/database mungkin
akan segera menyerah karena tidak bisa mengimbangi beban ini.
Dalam bahasa SQL pada umumnya informasi tersimpan dalam tabel-tabel
yang secara logik merupakan struktur dua dimensi terdiri dari baris (row atau
record) dan kolom(column atau field). Sedangkan dalam sebuah database
dapat terdiri dari beberapa table. Beberapa tipe data dalam MySQL yang
sering dipakai.
2.6HTML (Hyper Text Markup Language)
Di dalam desain web, tidak akan bisa lepas dengan yang namanya HTML
(Hypertext Markup Language). HTML adalah bahasa standar yang
digunakan untuk menyusun/membangun suatu halaman web. Meskipun telah
muncul software-software yang dapat digunakan untuk membangun suatu
halaman web tanpa susah-susah memperhatikan struktur HTML-nya, tidak ada
salahnya kalau HTML itu sendiri dipelajari. Manfaat yang diperoleh
dapat dikembangkan untuk pemrograman web. Pemrograman web akan selalu
terkait dengan HTML tersebut. Pemrograman web biasanya dikembangkan
untuk membangun web yang dinamis.Setiap homepage yang dikunjungi, pasti
bisa dijumpai HTML-nya yang selanjutnya disebut SOURCE.
2.6.1 Struktur HTML
Bahasa HTML (tag) dapat ditulis/dibuat melalui berbagai macam word
editor, misalnya Notepad, Wordpad, PHP Designer 2005, dll. Tag-tag
tersebut dapat dituliskan dengan huruf besar ataupun huruf kecil.
Setelah tag HTML ditulis dengan menggunakan Notepad atau word
editor yang lain, simpanlah file tersebut dengan format file
nama_file.htm atau nama_file.html. Sebagai contoh, file HTML tersebut
disimpan dengan nama index.htm atau index.html. Adapun struktur HTML
adalah sbb:
a. Tag HTML secara default dimulai dari <HTML> dan diakhiri dengan
</HTML>.
b. Tag <HEAD> … </HEAD> merupakan tag kepala sebelum badan.
Tag kepala ini akan terlebih dulu dieksekusi sebelum tag
badan. Di dalam tag ini berisi tag <META> dan <TITLE>.
Tag <META> merupakan informasi atau header suatu dokumen
32
c. HTTP_EQUIV, atribut ini berfungsi untuk menampilkan
dokumen HTML secara otomatis dalam jangka waktu tertentu.
d. CONTENT, atribut ini berisi informasi tentang isi document
HTML yang akan dipanggil.
e. NAME, atribut ini merupakan identifikasi dari meta itu sendiri. Tag
<META> dalam suatu document HTML boleh ada maupun tidak.
Sedangkan tag <TITLE> … </TITLE> adalah tag judul. Sebaiknya
setiap halaman web memiliki judul, dan judul tersebut dituliskan
di dalam <TITLE> … </TITLE>. Judul ini akan muncul dalam
titlebar dari browser.
f. Sedangkan tag <BODY> … </BODY> adalah tag berisi content dari
suatu halaman web.
Setelah tag tersebut di atas ditulis, simpan dalam format .htm
atau .html (misal index.htm) akan tetapi terlebih dahulu ubah Save
as type ke dalam All Files. Kemudian tentukan letak direktori mana
file tersebut akan disimpan, selanjutnya klik Save. Selanjutnya document
HTML tersebut dipanggil dengan browser untuk melihat hasilnya.
Dari tampilan pada browser di atas, dapat terlihat bahwa apa yang ditulis
pada
“ <TITLE> … </TITLE> akan muncul pada titlebar browser dan apa
yang ditulis pada <BODY> … </BODY> akan muncul pada halaman
web.Untuk selanjutnya, kita hanya akan memperhatikan tag-tag yang
ada di dalam <BODY> … </BODY> karena bentuk tampilan/desain web
tergantung pada tag yang ditulis di dalam <BODY> … </BODY> ”.
2.7WEB SERVER
Web Server atau Server Web merupakan sebuah perangkat lunak server yang
berfungsi menerima permintaan HTTP atau HTTPS dari klien yang dikenal
dengan broser web dan mengirimkan kembali hasilnya dalam bentuk
dasarnya web server hanyalah sebuah perangkat lunak yang bisa saja berada di
computer apapun dengan spesifikasi apapun. PC biasa pun dapat berfungsi
sebagai web server. Karena web server hanyalah suatu perangkat lunak, saat
ini banyak pilihan yang dapat kita pilih. Mulai dari yang gratis (free) sampai
yang berbayar, mulai dari yang kompleks sampai yang bias berjalan di CD.
Beberapa diantaranya yang cukup banyak digunakan adalah apache web
server, internet information services (IIS), xitami, PWS, dsb.
2.7.1 Cara Kerja Web Server
prinsip atau cara kerja web server itu sendiri? Cukup sederhana untuk
dipahami, karena pada dasarnya tugas web server hanya ada 2 (dua), yaitu:
a. Menerima permintaan (request) dari client.
b. Mengirim apa yang diminta oleh client (response).
Gambar 2.8 Cara kerja web server
Penjelasan gambar 2.8 :
1. Client disini dapat berupa computer desktop dengan minimal memiliki
browser dan ter hubung ke web server melalui jaringan (intranet atau
internet).
2. Komputer yang berfungsi sebagai server, dimana didalamnya terdapat
perangkat lunak web server. Agar computer ini dapat diakses oleh
client maka computer harus terhubung ke jaringan (intranet atau
internet). Dalam jaringan internet, computer ini biasa saja bernama
www.google.com. www.bl.ac.id atau memiliki kode computer (disebut
34
3. Pertama-tama, client (user) akan meminta suatu halaman ke (web)
server untuk ditampilkan di computer client. Misalnya client
mengetikan suatu alamat (biasa disebut URL) di browser
http://www.google.com. Client menekan tombol enter atau klik tombol
Go pada browser. Lalu apa yang terjadi? Melalui media jaringan (bisa
internet, bisa intranet) dan melalui protocol http,akan dicarilah
computer bernama www.google.com. Jika ditemukan, maka
seolah-olah terjadi permintaan, “hai google, ada client yang minta halaman
utama nih, ada dimana halamanya?”. Inilah yang disebut request.
4. Sekarang dari sisi server (web server). Mendapat permintaan halaman
utama google dari client, si server akan mencari-cari di komputernya
halaman sesuai permintaan. Jika ditemukan, maka halaman yang
diminta akan dikirimkan ke client (si peminta), namun jika tidak
3.1DESAIN SISTEM
Prosedur perancangan sistem secara umum untuk pembangunan Aplikasi Web
Vulnearbility Scanner terhadap kelemahan XSS dan SQL Injection
menggunakan Java ini terdiri atas beberapa tahap, antara lain meliputi
perancangan :
a. Data
Perancangan data yang dimaksudkan adalah perancangan data-data yang
berkaitan dengan pembuatan perangkat lunak, meliputi :
1. Data input
Termasuk di dalamnya data-data penunjang sebagai inputan
pembuatan sistem.
2. Data output
Dari data input di atas, sistem akan menggunakannya hingga
didapatkan kesimpulan sebagai output sistem.
b. Proses
Perancangan proses yang dimaksudkan adalah bagaimana sistem akan
bekerja, proses-proses yang digunakan, mulai dari masuknya data input
yang kemudian diproses oleh sistem hingga menjadi data output.
c. Antarmuka
Perancangan antarmuka mengandung penjelasan tentang desain dan
implementasi sistem yang digunakan dalam sistem yang kita dibuat.
Secara keseluruhan perancangan sistem atau desain sistem yang akan
dibangun :
36
Aplikasi
Server
Hasil Injeksi
Gambar 3. 1 Perancangan Sistem secara global
Dari gambar 3.1 dapat diketahui :
1. Aplikasi yang dibangun melakukan request ke server berupa URL yang
diinputkan
2. Server memberikan respon berupa HTML
3. Aplikasi mencari respon HTML tersebut, kemudian mendapatkan struktur
URL dari hasil pencarian dan menginjeksi struktur URL tersebut dengan
script clientside yang diambil dari Datatext
4. Aplikasi mengirim request ke server berupa struktur hasil pencarian yang
telah di injeksi
5. Server mengirim respon hasil injeksi ke aplikasi
6. Aplikasi memberikan report hasil keseluruhan
3.2PERANCANGAN SISTEM
Perancangan sistem ini terdiri atas 2 basis yang akan diuraikan pada sub bab
di bawah ini :
1. Web Vulnerability Scanner Berbasis Online
Pada Web Vulnerability Scanner berbasis online ini berjalan dengan
menggunakan koneksi internet. Begitu juga dengan web yang akan di scan
adalah web yang berada di internet. Input dari web vulnerability scanner
2. Web Vulnerability Scanner Berbasis Offline
Web Vulnerability Scanner berbasis offline ini berjalan secara offline atau
tanpa terkoneksi pada internet. Web yang akan di scan oleh web
vulnerability scanner berbasis offline ini adalah web yang berada pada
computer local yang dijalankan dengan menggunakan aplikasi webserver.
Dengan syarat ketentuan web yang akan discan secara offline harus sudah
tersimpan di htdocs Xampp dan file sql data base juga tersimpan di
MySQL DBMS.
3.3 PERANCANGAN DATA INPUT
Dalam perancangan data input, akan dijelaskan mengenai data-data yang
terdapat dalam sistem sesuai dengan fungsinya sebagai data input sistem.
1. DATA INPUT WEB VULNERABILITY BERBASIS ONLINE
Untuk menjalankan web vulnerability scanner berbasis online ini
menggunakan input berupa :
a. URL
Pada aplikasi ini dibutuhkan input URL yang digunakan untuk
mengakses suatu web. URL tersebut kemudian digunakan untuk
melakukan request kepada server sehingga server tersebut
memberikan respon berupa HTML kepada client. Dan respon berupa
HTML tersebut itulah yang akan di scan. Contoh suatu URL :
http://www.target.com
2. DATA INPUT WEB VULNERABILITY BERBASIS OFFLINE
Untuk menjalankan web vulnerability scanner berbasis offline ini
diperlukan input berupa :
a. URL
Pada aplikasi ini dibutuhkan input URL yang digunakan untuk
mengakses suatu web. URL tersebut kemudian digunakan untuk
38
memberikan respon berupa HTML kepada client. Dan respon berupa
HTML tersebut itulah yang akan di scan. Contoh suatu URL :
http://www.target.com
3.4 PERANCANGAN PROSES
Perancangan proses pada bagian ini akan menjelaskan tentang bagaimana
sebuah input dari user akan diproses menjadi sebuah output yang diharapkan.
3.4.1 Proses Scanning
Pada perancangan sistem aplikasi ini, disediakan form untuk scanning yang
berfungsi untuk men-scan suatu web untuk mendeteksi terhadap kelemahan
XSS. Berikut diagram alur dari proses Scan XSS :