rancang bangun aplikasi web vulnerability scanner terhadap kelemahan sql injection dan xss menggunakan java BAB II TINJAUAN PUSTAKA 2.1 JAVA 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) [3]. 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 : • 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 perubahan. Kelebihan ini memungkinkan sebuah program berbasis 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. 7 rancang bangun aplikasi web vulnerability scanner terhadap kelemahan sql injection dan xss menggunakan java • • 2.2 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. 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 [4]. SQL Injection SQL Injection adalah salah satu jenis penyerangan yang mengijinkan pengguna tidak sah(penyerang) untuk mengakses database server atau tindakan menyisipkan perintah SQL melalui URL atau isian form yang digunakan untuk menyusun perintah SQL seperti login form. Yang menggunakan teknik, penyerang mencoba memasukkan query (melalui field atau URL) yang akan menyebabkan database server men-generate query SQL yang tidak valid. Pada kenyataan nya,SQL injection terbukti merupakan salah satu teknik terbaik yang sering melumpuhkan sasarannya. Begitu penyerang berhasil menguasai kendali database server,ia bisa melakukan apa saja,seperti memodifikasi atau bahkan menghapus semua data yang ada. bagaimana pun juga ,ini bisa dicegah jika kode program anda melakukan validasi yang baik. Sebenarnya apa bila di teliti,teknik SQL injection sangat sederhana sekali. Akan tetapi justru yang sering diabaikan oleh para programer,entah itu tidak tahu atau lupa [5]. 8 rancang bangun aplikasi web vulnerability scanner terhadap kelemahan sql injection dan xss menggunakan java Biasanya, serangan SQL injection yang dilancarkan ke sebuah situs korban melalui URL berparameter, misalkan seperti ini: http://situskorban/artikel.php?id=10 URL di atas memiliki parameter id dan biasanya diikuti dengan angka tertentu. Angka ini menunjukkan nomor id dari artikel yang sedang tampil. dengan menambahkan beberapa query SQL di belakang parameter tersebut, seorang hacker mampu mengakses database yang digunakan oleh situs tersebut. Berikut ini salah satu contoh query yang diinjectkan melalui URL berparameter : http://situskorban/artikel.php?id=10 union all select 1,concat(user,0x3a,pass,0x3a,email) from users -- Seorang hacker dalam melancarkan aksinya, biasanya butuh beberapa kali submit URL dan query sebelum akhirnya mendapatkan targetnya.[6] Berikut adalah pengecekan apakah suatu web bisa di Attack apa tidak dengan teknik sql injection. Semisal web target sebagai berikut : http://www.site.com/news.php?id=5 Kemudian pada site tersebut ditambahkan tanda ‘ (petik satu) di akhir url atau nilai parameternya, maka hasilnya sebagai berikut : http://www.site.com/news.php?id=5′ Jika terlihat error seperti “You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right bla..bla..” atau error yang sejenis, ini menunjukkan web tersebut bisa diserang menggunakan teknik SQL injection. 9 rancang bangun aplikasi web vulnerability scanner terhadap kelemahan sql injection dan xss menggunakan java untuk menemukan banyak kolom dapat menggunakan perintah ORDER BY. Dengan cara menambah angka setelah BY sampai didapatkan pesan error. Misal : http://www.site.com/news.php?id=5 ada error http://www.site.com/news.php?id=5 ada error http://www.site.com/news.php?id=5 ada error http://www.site.com/news.php?id=5 error order by 1/* <– tidak order by 2/* <– tidak order by 3/* <– tidak order by 4/* <– maka akan ada pesan error “Unknwon column ‘4′ in ‘order clause’ ” atau pesan error yang mirip seperti itu. Hal itu dapat diartikan database memiliki 3 kolom karena sewaktu kita mencoba menebak kolom ke 4 ternyata hasilnya error itu tandanya kolom ke 4 tidak ada. Dengan UNION kita menggabungkan perintah yang lainnya dalam satu perintah (seringnya perintah SELECT. Misal Code: http://www.site.com/news.php?id=5 union select 1,2,3 (kenapa digunakan 1,2,3 itu karena sebelumnya sudah mendapatkan ada 3 kolom hasil dari perintah ORDER BY jika semisal terdapat 4 kolom sehingga jadi 1,2,3,4) jika kita melihat salah satu angka dari tiga angka tadi maka itu tandannya perintah UNION bekerja. Semisal di layar muncul angka 2, maka kita ganti angka dua tersebut dengan perintah @@version atau version() http://www.site.com/news.php?id=5 union all select 1,convert(@@version using latin1),3 jika tidak error maka akan muncul versi dari mysql seperti 4.1.33-log or 5.0.45 atau semacam nya. [7] Dari percobaan-percaobaan tersebut dapat diketahui suatu web memiliki kelemahan SQL Injection atau tidak. 10 rancang bangun aplikasi web vulnerability scanner terhadap kelemahan sql injection dan xss menggunakan java 2.3 XSS (Cross Site Scripting) XSS menjadi salah satu isu keamanan aplikasi web yang sedang berkembang. XSS atau yang sering di sebut sebagai Cross-Site Scripting merupakan salah satu jenis serangan web yang dilakukan dengan memanfaatkan kelemahan pada suatu aplikasi web sehingga memungkinkan hacker untuk menginjeksikan suatu tag HTML ataupun Client Side Script pada URL web tersebut dikarenakan adanya variabel yang tidak disanitasi dengan baik. serangan web sederhana ini banyak diremehkan oleh pengguna. Banyak orang menganggapnya sebagai serangan yang tidak berbahaya. Padahal para hacker dapat memanfaatkannya untuk mencuri informasi-informasi sensitif dari pengguna[8]. Semenjak ditemukan dan dipublikasikan ke mailing list Bugtraq (securityfocus.com) pada pertengahan tahun 2002, ratusan situs telah menjadi korban seperti hotmail,yahoo,ebay serta software seperti IIS dan apache. XSS merupakan kelemahan aplikasi web yang memanfaatkan input form seperti SQL Injection. Jika pada SQL Injection, target penyerangan adalah database server maka target XSS adalah client atau browser client [9]. 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 : $page = $_GET['id']; echo "Anda berada di halaman " . $page . " Artikel dan Trik"; misalnya nama halaman yang mengandung script diatas ialah spyro.php, maka halaman tersebut dapat diinjeksi dengan serangan sederhana : http://korban.net/spyro.php?id=<H1>HELLO ZONERS</H1> 11 rancang bangun aplikasi web vulnerability scanner terhadap kelemahan sql injection dan xss menggunakan java maka serangan tersebut akan dieksekusi dan hasilnya adalah sebagai berikut : “Anda berada di halaman HELLO ZONERS Artikel dan Trik” 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 apabila ditemukan kelemahan ini pada Guest Book, Shout Book, Forum, Blog dan yang sejenisnya dan dilakukan serangan XSS, maka hasil serangan tersebut akan bersifat permanen karena script yang di injeksikan tersimpan didalam database. 12