rancang bangun aplikasi web vulnerability scanner

advertisement
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
Download