Melacak masalah

advertisement
Tugas Akhir Kuliah Keamanan Sistem Lanjut EC 7010
Dosen
Dr. Ir. Budi Rahardjo
Pencurian di Internet (E-shoplifting)
Oleh :
YEFRIADI
NIM: 23203078
PROGRAM MAGISTER TEKNIK ELEKTRO
BIDANG KHUSUS TEKNOLOGI INFORMASI
PROGRAM PASCA SARJANA
INSTITUT TEKNOLOGI BANDUNG
2005
Abstraksi
Ketika ketersediaan dan kegunaan internet semakin meningkat, penyebaran
informasi melalui Web pun menjadi sangat populer. Melalui Internet, segala bentuk usaha
kelas kecil dan menengah bisa membawa informasi mengenai perusahaan dan produkproduk yang dihasilkannya ke seluruh dunia, dengan demikian berkembanglah suatu
bisnis yang disebut dengan nama e-bussines atau bisnis secara elektronik.
Akan tetapi, bertepatan dengan dibukanya pintu bisnis secara elektronik tersebut ,
maka terbuka juga pintu bagi para pelaku kejahatan, yakni dengan cara membobol sistem
dan mengambil banyak keuntungan dari usaha orang lain. Jalan tol informasi kini
menjadi jalan tol perampokan.
Di mana letak lubang sistem e-business yang ditemukan oleh para hacker? Bila
bisnis ingin diterapkan atau diupgrade ke bentuk elektronis, pelaksanaannya tidak sekali
jadi. Satu demi satu, tiap teknologi yang berbeda diintegrasikan ke dalam sistem yang ada
melalui beragam percobaan. Bisnislah yang menumbuhkan evolusi, bukan software.
Namun usaha-usaha untuk mencampur dan mencocokkan beragam teknologi satu sama
lain selama jangka waktu tertentu ternyata meninggalkan beragam kelemahan.
Penyebab dasar dari kelemahan yang menjadi gangguan bagi toko-toko elektronis
adalah, antara lain : Validasi input yang lemah, Penggunaan cookie yang tidak tepat, state
tracking yang keliru, dan lain sebagainya.
i
Daftar Isi
1 Pendahuluan
1
2 Teknik-teknik Hacking pada Web Application
2
3 Perampokan Acme Fashion, Inc.
3
3.1 Melacak Masalah
……………………………………………………. 3
3.2 Bahaya Tersembunyi pada Field-field Tersembunyi
3.3 Mem-bypass Validasi Client Side
……………………. 3
……………………………………. 9
3.4 Menghadapi Masalah Baru pada Sistem yang Telah Diteliti
3.5 Eksekusi Perintah Jarak Jauh
……………. 12
……………………………………………. 13
3.6 Posmortem dan Pencegahan Lebih Lanjut
……………………………. 18
4 Menangkis Serangan pada Web Application
19
5 Kesimpulan
20
ii
I. Pendahuluan
Revolusi teknologi pada dekade terakhir ini memberi dampak yang sangat
signifikan dalam cara melakukan bisnis. Berbagai istilah seperti e-commerce, e-business,
B2B (Business-to-Business) dan B2C (Business to Consumer) mulai sering muncul di
media bisnis dan pada literatus-literatur produk. Tren dan praktek bisnis mulai berubah
secara drastis. Daya kekuatan yang mendorongnya adalah pergeseran teknologi, termasuk
internet. Internet bertindak sebagai daya kekuatan yang mempersatukan semua entitas
logika bisnis hosting dengan para pelanggan. Internet mampu memperluas jangkauan
bisnis dan dengan demikian perusahaan mulai mengubah strategi bisnisnya serta tetap
kompetitif.
Vendor-vendor seperti IBM, BEA, Netscape, Sun dan Microsoft, mulai
memunculkan beragam teknologi infrastruktur yang mendukung strategi bisnis.
Akhirnya, para praktisi bisnis dan manajer mulai memperluas penggunaan teknologi
tersebut dan mulai menjalankan bisnis melalui internet. Akan tetapi, bertepatan dengan
dibukanya pintu bisnis secara elektronik tersebut , maka terbuka juga pintu bagi para
pelaku kejahatan, yakni dengan cara membobol sistem dan mengambil banyak
keuntungan dari usaha orang lain. Jalan tol informasi kini menjadi jalan tol perampokan.
Pada tulisan ini nantinya akan dibahas tentang trik-trik yang digunakan para perampok di
internet dalam melakukan pencurian pada sebuah e-store, dimana hal ini dinamakan
dengan e-shoplifting.
Gambar 1.1 Elemen-elemen dari bisnis secara elektronik
1
II. Teknik-teknik Hacking pada Web aplikasi
Ada beberapa teknik hacking pada web aplikasi diantaranya adalah sebagai
berikut:
1. Hidden Manipulation
Field-field tersembunyi sering digunakan untuk menyimpan informasi tentang
sesi klien, untuk menjaga kompleksitas database pada server side. Seorang klien biasanya
tidak melihat field tersembunyi dan juga tidak berusaha untuk mengubahnya.
Bagaimanapun juga memodifikasi form field sangatlah sederhana. Sebagai contoh ,
marilah kita anggap bahwa harga sebuah produk disimpan dalam field tersembunyi.
Seorang hacker dapat mengubah harganya, seperti berikut ini :
 Membuka sebuah halaman html dengan HTML editor.
 Menempatkan sebuah field tersembunyi (contoh., "<type=hidden
name=price
value=99.95>")
 Memodifikasi nilainya dengan nilai yang berbeda (contoh. "<type=hidden
name=price
value=1.00>")
 Menyimpan file html ditempat itu dan mem-browse-nya.
 Mengklik tombol "buy" untuk menampilkan e-shoplifting melalui hidden
manipulation.
2. Parameter Tampering (Perusakan Parameter)
Kegagalan untuk mengkonfirmasi kebenaran dari parameter-parameter Common
Gateway Interface (CGI) yang tersimpan dalam hyperlink., dapat dengan mudah
digunakan untuk mematahkan keamanan situs. Seperti di bawah ini :
Search.exe?template=result.html&q=security
Dengan mengganti parameter template, seorang hacker dapat memperoleh akses menuju
file yang diinginkannya,
seperti /etc/passwd atau private key situs contoh :
Search.exe?template=/etc/passwd&q=security
3. Cookie Poisoning
Umumnya Web aplikasi menggunakan cookie dengan tujuan untuk menyimpan
informasi (user id, time stamp, dan lain-lain.) pada sisi klien. Sebagai contoh, ketika
seorang user log ke beberapa situs, sebuah login CGI memvalidasi user name-nya dan
password-nya dan mengeset sebuah cookie dengan identifier numerik-nya. Ketika user
mengecek preference-nya kemudian, CGI yang lain (sebut saja, preferences.asp) meretrive cookie dan menampilkan catatan-catatan user information sesuai dengan user-nya.
Data-data yang tersimpan dalam cookie tidaklah aman, seorang hacker dapat
memodifikasi-nya, jadi informasi yang terdapat pada cookie tersebut dapat dicuri dan
dimanfaatkan oleh hacker.
2
III. Perampokan Acme Fashion, Inc.
Pada pertengahan th 1990an, ketika popularitas Web sedang menanjak, wakil
manajer pemasarannya memutuskan untuk membuat situs www.acme-fashions.com bagi
perusahaannya dan meletakkan dan meletakkan semua katalog di sana. Tim marketing
kemudian sibuk membuat halaman HTML dan mengkonversi katalog-katalognya dalam
bentuk elektronis.
Tetapi, begitu ada penjualan melalui situs Web tersebut, muncul juga keluhankeluhan pelanggan. Kebanyakan keluhan ditujukan kepada departemen keuangan dan
gudang. Departemen keuangan sering menerima keluhan mengenai produk yang dijual
berharga lebih rendah daripada harga yang ditetapkan, padahal tidak ada diskon atau
promosi yang ditawarkan. Karyawan di bagian pengiriman sering bingung sewaktu
mereka mendapat order pengiriman dengan jumlah barang tertulis dalam angka negatif.
Ketika kerugian hampir mencapai 100.000 dolar, akhirnya pihak direksi memanggil tim
ahli sekuriti.
3.1. Melacak Masalah
Toko Web Acme – www.acme-fashions.com – telah menerapkan beberapa
teknologi berikut ini:
Sistem Operasi
Web Server
Katalog Online
Database back-end
Shopping
Microsoft Windows NT 4.0
Microsoft Internet Information Server (IIS) 4.0
Template dan Active Server Page (ASP)
Microsoft Access 2.0
Troli Shopcart.exe
Katalog HTML dibuat dengan menggunakan template dan Active Server Pages.
Tim pemasaran pernah menggunakan FoxPro untuk database-nya dan menghasilkan
halaman katalog HTML secara otomatis. Kemudian database Fox-Pro itu dikonversi ke
dalam database Microsoft Access dan antarmukanya memakai ASP. Aplikasi trolli
belanjanya, Shocart.exe, di setup pada server, serta template ASP didesain untuk
menghasilkan HTML yang terhubung dengan aplikasi troli belanja. Troli belanja
mengambil informasi produk dari HTML tersebut. Saat itu, kelihatannya semua cara itu
sangat mempermudah dan mempercepat kesiapan toko elektronis dan bisa online sebelum
deadline.
Shopcart.exe mempunyai sistem session management-nya sendiri, untuk
menjalankan sesi troli belanja, yang bergantung pada cookie dan server-side session
identifier. Karena tidak dimungkinkan untuk memodifikasi Shopcart.exe, tugas-tugas
untuk memvalidasi input diserahkan ke JavaScript yang bekerja pada browser pelanggan.
3.2. Bahaya Tersembunyi pada Field-Field Tersembunyi
Setelah dipelajari ternyata ditemukan sebuah lubang pada cara penerapan sistem
troli belanja. Dimana satu-satunya cara untuk menghubungkan harga dengan produknya
3
melalui tag-tag tersembunyi pada halaman HTML. Gambar 3.1. menunjukkan halaman
yang menampilkan baju-baju dan katalog di http://www.sceme-fashions.com.
Setiap baju memiliki hubungan dengan form penerimaan kuantitas baju yang
dibeli dan terhubung juga dengan troli belanja. Pada kode HTML seperti yang
diperlihatkan pada gambar 3.2. juga dapat ditemukan kelemahannya, yakni pada
beberapa baris terakhir.
Gambar 3.1 Halaman katalog dari www.acme-fashions.com
Source code berikut ini digunakan untuk memanggil Shopchart.Exe:
<form method=post action="/cgi-bin/shopcart.exe/MYSTORE-AddItem">
<input type=hidden name="PartNo" value="OS0015">
<input type=hidden name="Item" value="Acme Shirts">
<input type+hidden name="price" value="89.99">
Quantity:<input type=text name=qty value="1" size=3
onChange="validate(this);">
<input type=image src='buy00000.gif' name='buy' border='0' alt='Add To
Cart' width="61" height="17">
</form>
Sewaktu user mengklik tombol Buy, browser men-submit semua field input ke
server, menggunakan request POST. Ada tiga field tersembunyi pada baris 2, 3, dan 4
dari kode tersebut. Nilai-nilainya juga terkirim bersama dengan request POST. Dengan
demikian, sistem membuka suatu kelemahan pada tingkat aplikasi, karena user bisa saja
memanipulir nilai dari field tersembunyi sebelum men-submit-nya ke form.
4
Gambar 3.2 Source code HTML pada halaman katalog
Untuk memahami situasi ini secara lebih baik, maka dapat kita perhatikan secara
seksama request HTTP yang berasal dari browser ke server:
POST /cgi-bin/shopcart.exe/MYSTORE-AddItem HTTP/1.0
Referer: http://www.acme-fashions.com/shirtcatalog/shirts2.asp
Connection: Keep-Alive
User-Agent: Mozilla/4.76 [en] (Windows NT 5.0; U)
Host: www.acme-fashions.com
Accept: image /gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding:gzip Accept-Language: en
Accept-Charset : iso-8859-1,*,utf-8
Cookie: ASPSESSIONIDQQGQQKIG=ONEHLGJCCDFHBDHCPKGANANH; shopcartstore=3009912
Content-type: application/x-www-form-urlencoded
Content-lengt: 65
PartNo=OS0015&Item=Acme+Shirts&Price=89.99&qty=1&buy.x=16&buy.y=5
Nilai dari field tersembunyi PartNo, Item dan Price di-submit dalam request
POST ke /cgi-bin/shopcart.exe. Itulah cara satu-satunya Shopcart.exe mengambil harga,
5
misalnya baju nomor OS0015. Browser menampilkan respon yang ditunjukkan pada
Gambar 3.3.
Gambar 3.3 Isi troli belanja
Oleh karena request POST dikirim bersama dengan nilai yang bisa dimodifikasi
pada field price, user pun bisa mengontrol harga baju tersebut. Request Post berikut ini
menunjukkan bahwa harga baju yang semula 89.99 dolar diubah menjadi 0,99 dolar.
POST /cgi-bin/shopcart.exe/MYSTORE-AddItem HTTP/1.0
Referer: http://www.acme-fashions.com /shirtcatalog/shirts2.asp
Connection: Keep-Alive
User-Agent: Mozilla/4.76 [en] (Windows NT 5.0; U)
Host: www.acme-fashions.com
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding:gzip Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: ASPSESSIONIDQQGQQKIG=ONEHLGJCCDFHBDHCPKGANANH; shopcartstore=3009912
Content-type: application/x-www-form-urlencoded
Content-length: 64
6
PartNO=OS0015&Item=Acme+Shirts&Price=0.99&qty=1&buy.x=16&buy.y=5
Cara mudah untuk mengubah-ubah harga adalah dengan menyimpan halaman
katalog, shirts2.asp, menampilkannya pada browser sebagai salinan lokal, shirts2.html, di
hard disk user, mengedit file tersebut, dan mengubah – ubah kode HTMLnya. Gambar
3.4. menunjukkan bagaimana user menyimpan halaman tersebut.
Gambar 3.4 Menyimpan salinan halaman shirts2.asp ke hard disk user
User pertama-tama mengubah nilai pada field price pada baris <INPUT
type=hidden name=”Price” value=”89.99”>. Perubahan berikutnya adalah pada link
ACTION=dalm tag<FORM>. Link yang dituju adalah http://www.acmefashions.com/cgi-bin/shopcart.exe. Gambar 3.5. menunjukkan file shirts2.html setelah
memodifikasi harga menjadi 0,99 dolar.
Sekarang, jika user membuka file yang sudah dimodifikasi ini, shirts2.html, pada
browser dan men-submit request untuk membeli pakaian, dan melihat window seperti
ditunjukkan pada gambar 3.6.
7
Gambar 3.5 File shirts.html sedang dimodifikasi untuk mengganti nilai harga
Gambar 3.6 Hasil setelah perusakan (tampering) dengan field tersembunyi
8
Seperti yang dapat kita lihat, hal inilah yang membuat Acme-Fashions menderita
kerugian. Setelah melakukan penelitian menyeluruh pada semua order dan transaksi, tim
pemeriksa keamanan menemukan juga bahwa sejumlah besar ”pelanggan” bisa membeli
barang dalam harga yang sangat rendah. Kata ”pelanggan” dalam konteks ini
mengandung arti para hacker.
3.3. Mem-Bypass Validasi Client Side
Kesalahan lain yang ditemukan oleh tim peneliti keamanan adalah cara input
divalidasi sebelum dilewatkan ke Shopcart.exe. Aplikasi Web terdiri dari banyak script
dan komponen interaktif. Semua itu terutama untuk berinteraksi dengan user melalui
form HTML pada browser. Bagian interaktif dari tiap komponen mengambil input dari
form HTML dan memprosesnya pada server. Form HTML berciri generik bila berfungsi
sebagai pengambil data, dan tak ada cara lain untuk menjamin validasi data di dalam form
seperti itu. Misalnya, bila sebuah form HTML didesain untuk menerima tanggal, user bisa
saja memasukkan tanggal seperti ini: 99/88/77 dan browser tidak mempedulikannya.
Aplikasi harus memiliki mekanisme validasi inputnya sendiri untuk mem-filter inputinput yang salah bentuk atau tidak sesuai dengan kriteria yang sudah ditentukan pada
aplikasi. Validasi input untuk form HTML bisa dilakukan baik pada server-side dengan
Perl, PHP, atau ASP, dll. Juga dapat dilakukan pada client-side dengan menggunakan
bahasa script seperti JavaScript atau Vbscript.
Tim pengembangan Acme menyadari kebutuhan validasi input seperti itu. Tetapi,
karena Shopcart.exe merupakan aplikasi yang berciri Prepackaged (tidak bisa
dimodifikasi lebih lanjut), maka ia tidak bisa dimodifikasi untuk bisa menggabungkan
validasi input dengan script client-side pada browser-nya sendiri, mungkin dengan tujuan
untuk menghemat penggunaan CPU server, sehingga pekerjaan itu dijalankan oleh
browser klien.
Namun, kenyataannya mekanisme client-side manapun bisa diubah-ubah dengan
cara mengedit atau mengganti-ganti source code HTML yang diterima oleh browser. Tim
penguji keamanan menemukan beberapa contoh validasi client-side yang digunakan pada
www.acme-fashion.com. Gambar 3.7. menunjukkan validasi input sedang dijalankan
pada sistem Acme. Seorang user berusaha membeli sejumlah ”-5” pakaian dan sebuah
peringatan muncul bahwa user memasukkan nilai yang salah.
9
Gambar 3.7 Validasi client-side, menggunakan JavaScript
Berikut ini adalah kode JavaScript untuk memvalidasi input yang dipisahkan dari elemenelemen HTML-nya.
<script>
function validate(e) {
if(isNaN(e.value) || e.value <= 0) {
alert (“Please enter a valid number”) ;
e.value = 1;
e.focus();
return false;
}
else {
return true;
}
}
</script>
:
:
<input type=text name=qty value=”1” size=3 onChange=”validate(this);”>
10
Kode ini memastikan bahwa hanya angka positif saja yang diperbolehkan pada
field qty. Tetapi, karena validasi ini dilakukan oleh script client-side, maka bisa dengan
mudah di-bypass. Menonaktifkan eksekusi JavaScript dengan cara men-setting preferensi
browser bisa membuat hacker mem-bypass validasi pada client-side. Jika kita
memasukkan nilai apa saja yang diinginkan pada field-field input.
Gambar 3.8 Menonaktifkan JavaScript
Gambar 3.8. menunjukkan bagaimana menonaktifkan JavaScript pada Netscape.
Sekarang jika user memasukkan nilai ”-3”, browser akan mengeluarkan request POST
berikut ini pada server.
POST /cgi-bin/shopcart.exe/MYSTORE-AddItem HTTP/1.0
Referer: http://www.acme-fashions.com /shirtcatalog/shirts2.asp
Connection: Keep-Alive
User-Agent: Mozilla/4.76 [en] (Windows NT 5.0; U)
Host: www.acme-fashions.com
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding:gzip Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: ASPSESSIONIDQQGQQKIG=ONEHLGJCCDFHBDHCPKGANANH; shopcartstore=3009912
Content-type: application/x-www-form-urlencoded
Content-length: 63
PartNo=OS0015&Item=Acme+Shirts&Price=-3&qty=1&buy.x=16&buy.y=5
11
Selanjutnya dapat kita lihat bagaimana request HTTP ini bisa mem-bypass
seluruhnya validasi input pada client-side. Gambar 3.9. menunjukkan respon pada server.
Gambar 3.9 Membeli pakaian dengan harga negatif
Pada layar tampak bahwa user telah membuat pesanan untuk 5 baju masingmasing seharga 55,99 dolar, dan hari berikutnya membeli -3(minus 3) baju masingmasing seharga 89,99 dolar. Total biaya adalah 4,98 dolar. Kemampuan untuk
meletakkan angka negatif pada jumlah pembelian bisa membuat si pembeli kegirangan.
Kecacatan inilah yang menyebabkan karyawan pengiriman Acme menerima order jumlah
item dengan angka negatif.
3.4. Menghadapi Masalah Baru pada Sistem yang Telah Diteliti
Sebelumnya, pihak direksi Acme sudah berhadapan dengan dan mengatasi
masalah-masalah menyangkut pengubahan nilai harga barang selama belanja musim
liburan yang baru lalu. Sepertinya hal itu belum cukup, sekarang Acme menghadapi
12
masalah lagi. Kali ini berhubungan dengan pencurian kartu kredit. Pihak direksi
memanggil lagi tim ahli keamanan komputer untuk menganalisis masalah tersebut.
Tim itu menemukan bahwa pada semua log di Web server selama bulan Agustus,
tidak ada entri satu pun untuk tanggal 29 Agustus. Tim yakin bahwa hal itu disebabkan
oleh hacker yang menghilangkan file C:\WINNT\ System32\ LogFiles\ W3SVC1\
ex20010829. log yang berisi data log untuk tanggal itu. Ukuran file-nya pun direduksi
menjadi 0 byte. Ini menunjukkan bahwa hacker pasti sudah memasuki kontrol
administratif pada server agar bisa menghapus log-log pada Web server IIS.
Karena tidak ada catatan yang bisa diteliti lebih lanjut, akhirnya tim tersebut
hanya bisa berspekulasi mengenai penyebab serangan. Penyelidikan yang menyeluruh
pada sistem hard disk menghasilkan bahwa file ”purchases.mdb” ada pada dua direktori.
C: \>dir purchases.mdb / s
Volume in drive C is ACMEFASHION
Volume Serial Number is 48CD-A4A0
Directory of C:\ACMEDATA
08/29/2001
08:13p
1 files(s)
2,624,136 purchases.mdb
2,624.136 bytes
Directory of C:\Inetpub\wwwroot
08/29/2001
08:33p
1 files(s)
Total Files Listed:
2 File(s)
0 Dir(s)
2,624,136 purchases.mdb
2,624,136 bytes
5,248,272 bytes
111,312,896 bytes free
Bagaimana file purchases.mdb bisa dikopi dari direktori C:\ACMEDATA ke
C:\Inetpub\wwwroot? Administrator sistem di Acme Fashion menyatakan bahwa
purchases.mdb dipakai untuk menampung informasi order pelanggan, termasuk nama,
alamat pengiriman, alamat tagihan, iem yang dibeli dan kartu kredit yang digunakan
untuk untuk membayar item-item tersebut. Pihak yang mendesain aplikasi meyakinkan
direksi bahwa file database berada di luar root dokumen server (c:\inetpub\wwwroot0.
Tim ahli keamanan menyimpulkan bahwa, karena salinan dari file purchase.mdb dibuat
pada jam 11:33 p.m tanggal 29 Agustus 2001, telah terjadi penyalahgunaan kartu kredit
oleh hacker. Hacker pasti telah menyalin file dari C:\ACMEDATA ke
C:Inetpub\wwwroot dan men-download-nya pada browser menggunakan request
http://www.acme-fashions.com/purchase.-mdb. Tetapi, ia rupanya lupa menghapus
salinan file pada direrktori C:\Inetpub\wwwroot setelah men-download-nya.
3.5. Eksekusi Perintah Jarak Jauh
Kenyataan bahwa satu file bisa dikopi dari satu lokasi ke lokasi dan bahwa loglog Web server dihapus mengisyaratkan bahwa hacker berhasil menjalankan perintahperintah eksekusi pada www.acme-fashions.com dan memiliki akses ke sana setingkat
”super-user” atau ”administrator”. Setelah mengevaluasi secara menyeluruh keamanan
sistem operasi dan mengunci semua prosedur, tim menyimpulkan bahwa kelemahannya
13
hampir pasti terletak pada error di kode program aplikasi. Masalah tersebut kemudian
bermuara pada cacatnya validasi input pada kode program troli belanjanya sendiri.
Gambar 3.10. menunjukkan bagaimana troli belanja berinteraksi dengan beragam elemen
dari aplikasi Web.
Gambar 3.10 Komponen-komponen dari www.acme-fashions.com yang baru
Troli belanja dikendalikan oleh script Perl pusat, yaitu mywebcart.cgi. Semua sesi
client-side dilacak dan diatur oleh mywebcart.cgi. Troli belanja mengambil informasi
produk dari database products.mdb dan membawanya ke modul terminal checkout yang
menangani pembayaran pelanggan yang kemudian disimpan pada purchase.mdb.
Gambar 3.11. menunjukkan halaman yang dihasilkan oleh mywebcart.cgi. Pada
gambar dapat kita lihat bagaimana URL dikomposisi.
URL tersebut adalah:
http://www.acme-fashions.com/cgi bin/ mywebcart.cgi?Cust=0873&nextpage=shirts3.html&cid=03417
14
Gambar 3.11 Halaman yang dihasilkan oleh script mywebcart.cgi
Elemen yang paling menarik pada URL ini adalah parameter-parameter yang
dilewatkan berikut nilai-nilainya. Pada parameter nextpage melewatkan nilai
”shirts3.html”. Pada kode program Perl mywebcart.cgi, baris berikut ini mempunyai
kelemahan:
$file = ”c: \inetpub\wwwroot\catalog_templates\” . $input { ‘nextpage’};
open (FILE, $file) || die “Cannot open $file\n”;
File mywebchart.cgi terkunci. Parameter nextpage dilewatkan ke fungsi Perl
open() tanpa ada satupun validasi input. Seorang penyerang bisa menyisipkan simbol
pipa “|” di belakang nilai yang ditentukan pada nextpage dan menyebabkan fungi open()
bisa mengeksekusi perintah-perintah yang merugikan.
Request berikut ini menyebabkan mywebcart.cgi mengeksekusi perintah “dir c:\”
pada www.acme-fashions.com:
http://www.acme-fashions.com/cgi bin/mywebcart.cgi?cust=0873&nextpage=;dir+c:\|&cid=03417
15
Gambar 3.12 Mywebcart.cgi mengeksekusi perintah-perintah yang merusak
Pada titik ini kita bisa beranggapan bahwa hacker harus telah menjalankan
tampilan daftar direktori penuh dengan perintah ”dir c;\|s”. Dari hasil yang tampak, si
hacker mengetahui bahwa ada file purchase.mdb pada direktori C:\ACMEDATA.
Selanjutnya ia menyalin file tersebut ke c:\inetpub\wwwroot kemudian men-downloadnya menggunakan alamat http://www.acme-fashions.com/purchase.mdb. Gambar 3.13.
dan 3.14. menunjukkan bagaimana file itu disalin dan akhirnya di-download.
Demonstrasi oleh para ahli keamanan ini menunjukkan adanya pelanggaran
keamanan yang serius pada mywebcart.cgi. Bahkan saat ini, banyak model troli belanja
yang terkenal dan dipakai orang memiliki kelemahan-kelemahan seperti itu.
16
Gambar 3.13 Mengkopi purchase.mdb ke c:\inetpub\wwwroot
Gambar 13.14 Men-download purchases.mdb
17
3.6. Posmortem dan Pencegahan Lebih Lanjut
Acme Fashions, Inc., menderita banyak kerugian uang dan waktu oleh karena tiga
kesalahan selama satu rentang waktu. Semua kesalahan itu muncul karena cacatnya
bentuk validasi input dan karena kurang terintegrasinya data yang diterima dari Web
browser.
Pertama, kecacatan itu disebabkan oleh penggunaan field-field tersembunyi secara
tidak benar. Informasi penting seperti ID produk dan harga dilewatkan melalui field
tersembunyi dalam form HTML. Kita tahu bahwa sewaktu respon HTML dikirim melalui
browser web, server itu kehilangan kendali atas data yang dikirim. HTTP bersifat statis,
dan server tidak bisa menentukan apakah data yang dikembalikan masih utuh atau sudah
rusak. Field tersembunyi bisa dimanipulir pada client side dan dikirimkan kembali ke
Web server. Jika server tidak mempunyai cara validasi input yang ketat atas informasi
dari field tersembunyi, klien bisa merusak data dan tidak terkendali lagi oleh sistem.
Untuk memproteksi sistem dari serangan integritas data seperti ini, developer situs Web
harus mencegah pelewatan informasi melalui field tersembunyi. Sebaliknya, informasi
seperti ini seharusnya diletakkan pada database di server, dan informasi itu dapat diambil
dari database jika diperlukan.
Kesalahan kedua adalah menggunakan script client-side untuk menjalankan
validasi input. Para developer sering tergoda untuk menggunakan JavaScript atau
VBScript dalam menulis program pengeksekusian pada client-side dan membuang
batasan-batasan yang ada pada server. Tetapi, script client-side sama rentannya dengan
field tersembunyi dalam hal daya tahan dari perusakan data. Script client-side seharusnya
hanya digunakan untuk melancarkan navigasi atau menambahkan interaktifitas dan daya
tarik halaman Web. Seorang penyerang bisa dengan mudah melewatkan atau
memodifikasi script client-side dan menghindari setiap bentuk pemeriksaan yang
dilakukan oleh script tersebut. Dalam kasus Acme, penyerang bisa menyisipkan nilai
kuantitas negatif dengan mudahnya dan melewati setiap bentuk batasan yang dijalankan
oleh oleh JavaScript. Sama dengan hal itu, beberapa toko berbasis Web menjalankan
operasi aritmatik pada client-side, misalnya menghitung total kuantitas dan harga dari
sebuah order dari dalam form isian itu sendiri. Bagi pelanggan sendiri akan menjadi fitur
yang menarik bila mereka bisa mengetahui harga yang sudah di-update pada browser
tanpa perlu men-submit nilai ke server dan menunggu respon darinya. Tetapi, teknik ini
harus dihindari dan aplikasi harus didesain untuk mengeksekusi validasi dan perhitungan
pada server side sehingga penyerang tidak bisa memanipulir data.
Kelemahan yang terakhir disebabkan oleh sanitasi input yang lemah pada
mywebcart.cgi. Sewaktu data dilewatkan oleh field dalam bentuk HTML ke fungi-fungsi
yang rentan seperti open(), buanglah setiap kombinasi atau meta-karakter. Dua bentuk
validasi input yang harus dilaksanakan ditujukan kepada: pertama, panjang data yang
diterima (untuk mencegah serangan buffer overflow) dan kedua, meta-karakter. Dalam
hal ini, Acme harus menyisipkan sanitasi input untuk menapis meta-karakter seperti ”&”,
”%”, ”$”, ”|”, dan ”<”.
Masalah keamanan lainnya yang terkait dengan sistem belanja e-commerce,
secara umum meliputi informasi yang dipanggil dari file temporer pada server,
mekanisme enkripsi yang buruk, eksposur file system directory, eskalasi privilege,
disklosur informasi pelanggan, perubahan produk, perubahan order, dan penolakan
18
terhadap layanan. Semua hal tersebut memberikan celah bagi terjadinya serangan.
Masalah ini ditemukan pada beberapa aplikasi e-commerce.
IV. Menangkis Serangan pada Web Application
Para hacker biasanya mencari sebuah target yang mudah untuk di-hack dalam
waktu yang singkat. Berikut ini adalah beberapa teknik yang dapat digunakan untuk
menangkis serangan pada Web application.
 Akses ke situs dengan memanfaatkan SSL.
Hanya dengan menggunakan secure socket layer (SSL), situs akan memblok simple CGI
scanners, tool-tool raw-interface mode dan worm-worm internet. Memanfaatkan SSL
dapat dengan mudah dilakukan dengan cara membuat suatu konfigurasi server yang
hanya bekerja pada SSL (biasanya pada port 443) dan memblok trafik menuju por 80.
Jika dibutuhkan sebuah entry page dalam HTTP, maka ini mungkin dapat menggunakan
sebuah server kecil yang akan mengalihkan ke alamat HTTPS.
 Menggunakan metoda ”HTTP post” seluas mungkin.
Menggunakan ”HTTP post” request mengurangi kemudahan dari penggunaan tool-tool
raw-mode interface dan browser-browser untuk menyerang sebuah situs. Penyerang
menggunakan tool-tool raw-mode interface untuk digunakan secara manual meng-craft
sebuah POST request, yang sedikit lebih susah daripada sebuah GET request sederhana,
karena mereka harus menghitung exact body lenght untuk header dari mandatory
content-length. Untuk memanipulasi beberapa parameter values dengan menggunakan
browser, penyerang harus menyimpan HTML source ke disk, lalu memodifikasinya, dan
kemudian me-reload-nya kembali ke browser.
 Memanfaatkan HTTP Authorization pada semua content dari situs.
Ini merupakan metoda sederhana yang akan bekerja dengan baik melawan worm-worm
internet, simple CGI scanner, dan akan berdampak pada tool-tool raw-mode interface.
Server benar-benar akan menolak beberapa request yang tidak otentik. Untuk
mengizinkan user anonim untuk bekerja pada situs, mungkin dapat dilakukan dengan cara
mengeluarkan halaman entry point dari skema ini dan menulis user name dan password
pada situs yang lainnya. Dengan kata lain ini mempunyai efek pada tool-tool sederhana.
Semua tool yang tidak didukung otentikasi tidak akan bekerja pada situs ini. Termasuk
worm-worm internet dan simple CGI scanner. Penyerang akan membutuhkan suatu data
otentikasi HTTP pada setiap usaha penyerangannya. Ketika menggunakan tool-tool URL
interface-mode, penyerang harus men-set parameter-parameter otentikasi HTTP ke nilai
yang harus digunakan pada situs.
 “Menendang” para klien keluar dari aplikasi ketika terjadi error.
User-user reguler biasanya tidak membuat banyak kesalahan, setidak-tidaknya pada sesi
yang sama. Jika sebuah situs mempunyai sebuah konsep aplikasi, dan jika klien
dibutuhkan untuk melewati beberapa step untuk memperoleh sebuah sesi, maka mungkin
saja terjadi upaya untuk memperoleh sesi yang invalid atau tidak syah dan ini bisa
19
dideteksi sebagai sebuah serangan. Penyerang akan melakukan beberapa percobaan untuk
memperoleh sebuah sesi selama beberapa kali, ketika ini terjadi maka sistem akan bekerja
dan akan secara otomatis menolaknya untuk memasuki sebuah aplikasi.
V. Kesimpulan
Aplikasi e-business bisa menarik bagi hacker karena dari sana mereka dapat memanipulir
aliran uang lewat saluran-saluran bisnis. Memproteksi data-data perusahaan, informasiinformasi pelanggan, dan aset-aset merupakan tanggung jawab CIO, administrator sistem
dan developer aplikasi untuk menangkal tindakan merugikan dari para hacker. Satu
lubang keamanan pada aplikasi bisa menimbulkan bencana, dan dalam sekejap saja
sebuah toko elektronis bisa disapu bersih oleh para perampok di jalur informasi.
Perusahaan tidak hanya kehilangan uang, tetapi juga akan kehilangan reputasi. Entah
kecacatan itu ada pada buruknya program aplikasi third party atau secara tidak sengaja
dibiarkan muncul oleh tim developer, tetap saja perusahaan kehilangan semua bisnisnya.
Jadi aplikasi Web harus di support dan keamanan harus selalu menjadi prioritas utama
sebelum mulai menulis baris pertama program aplikasi. Disamping itu penulisan coding
program aplikasi juga sangat menentukan dalam keamanan sebuah Web Application dari
serangan para hacker, penulisan coding program haruslah bersifat secure web
programming, sehingga ini mempersulit terjadinya proses hacking.
Referensi :
1. McClure, Stuart; Shah, Saumil; Shah, Shreeraj.: Web Hacking: Attacks and
Defense, 1st Edition, Addison Wesley, 2003.
2. Klein, Amit : Small-Business Hacker Repellent
3. Reshef, Eran; Bar-gad, Izhar: Web Application Security.
20
Download