World Wide Web ( www ) merupakan bagian dari Internet
yang paling populer, sehingga serangan paling banyak terjadi lewat port
80 atau yang dikenal sebagai web hacking, berupa deface situs, SQL
injection, serta memanfaatkan kelemahan scripting maupun HTML form.
ARTIKEL INI DIANGKAT DARI BAHAN SEMINAR SECURITY dari crew Jasakom.
Bicara mengenai web hacking, artikel ini membahasnya dengan pendekatan
5W+1H ( What,Who,Why,When, and Where + How ).
WHAT: Apa itu Web Hacking?
Web hacking…, bukan hal baru lagi bagi jawara internet ( hacker )
baik aliran putih maupun aliran hitam ( cracker ). Apakah yang dimaksud
dengan web hacking? Untuk mendapatkan definisi kedua kata tersebut ( web
dan hacking ) juga sebenarnya lumayan pusing. Secara semantik, web
didefinisikan menjadi Data yang direpresentasikan di world wide web (
Tim Berners-Lee, James Hendler, Ora Lassila. Scientific American,May
2001). Adapun hacking didefinisikan menjadi Tindakan di luar otoritas
atau tindakan mematahkan/membobol mekanisme keamanan sebuah sistem
informasi atau sistem jaringan (
http://www.tsl.state.tx.us/ld/pubs/compsecurity/glossary.html ). Jadi,
singkatnya web hacking dapat diartikan Tindakan menerobos mekanisme
keamanan dari suatu sistem yang direpresentasikan dalam world wide web.
WHO: Siapa yang Melakukan Web Hacking?
Menerobos mekanisme keamanan suatu jaringan, bukanlah tindakan yang
gampang untuk dilakukan. Jadi, siapakah pelaku web hacking tersebut?
Seiring perkembangan internet yang benar-benar pesat dan diiringi
perkembangan security dan underground, membuat siapa saja dapat menjadi
pelaku. Tidak ada keharusan bahwa pelaku web hacking adalah orang yang
pintar komputer dan internet, atau lain sebagainya.
WHY: Mengapa Melakukan Web Hacking?
Jika semua bisa menjadi pelaku web hacking, tentu Ada alasan jika
sampai melakukannya dan pertanyaan adalah Mengapa? Jika pertanyaannya
adalah Mengapa, biasanya jawabannya adalah Karena. Ada banyak alasan
orang melakukan web hacking, diantaranya adalah:
1. Wanna Be A Hacker ( ingin menjadi seorang hacker ).
2. Mendapatkan popularitas.
3. Ingin mendapat pujian.
Alasan-alasan tersebut di atas cukup bisa dicerna logika.
WHEN and
WHERE: Kapan dan Dimana?
Internet merebak harum di Indonesia, bisa dikatakan mulai pada
hitungan tahun 90-an. Internet yang sebelumnya merupakan sebagai hal
yang mustahil untuk dirasakan oleh rakyat kelas bawah, semakin
terjangkau dengan larismanisnya bermunculan warnet (warung internet).
Ada ujaran yang mengatakan Kejahatan ada karena ada kesempatan. Ujaran
tersebut mungkin belum dapat ditujukan kepada pelaku web hacking. Dengan
banyaknya kehadiran warnet bahkan ada yang buka 24 jam, membuat web
hacking dapat dilakukan kapan saja dan dimana saja, tanpa harus menunggu
waktu.
HOW: Bagaimana Web Hacking Dilakukan?
Bagaimana seseorang melakukan web hacking? Internet sudah hampir
menjangkau segala sisi kehidupan yang ada di dunia ini. Informasi
mengenai web hacking dapat anda temukan dengan berselancar ke Google.
Google, search engine yang terkenal menjawab pertanyaan Bagaimana.
Dengan memasukkan kata (keyword) pada baris isian pencarian maka anda
akan dibawa ke tempat-tempat yang berhubungan dengan web hacking. Anda
tinggal memilih dan menyaringnya.
Seperti yang telah disinggung di atas, pelaku web hacking dapat siapa
saja dan tanpa ada syarat-syarat tertentu. Hal ini disebabkan karena di
internet terdapat banyak informasi yang dapat diperoleh termasuk
mengenai soal web hacking. Informasi dapat berupa tutorial, tools, dan
lain sebagainya hingga akan membuat web hacking benar-benar mudah untuk
dilakukan.
Unicode Bug pada Microsoft IIS
Untuk lebih menjelaskannya, mari kita tinjau masalah HOW dari web
hacking dengan bentuk studi kasus. Sebagai bahan studi kita yaitu
e-commerce web. Mengapa pilihan ditetapkan e-commerce web? Karena
e-commerce web merupakan pilihan yang populer di kalangan para pelaku
web hacking.
Deface banyak terjadi pada situs e-commerce web yang menggunakan MS
IIS. Ini dikarenakan adanya bug pada IIS yang dikenal sebagai unicode
bug. Dengan adanya bug ini seseorang dapat mengakses command line shell
cmd.exe pada server keluarga Windows NT. Kelemahan IIS ini sempat ramai
dibicarakan orang karena banyaknya korban. Megakses server dengan
memanfaatkan Unicode bug itu sendiri dilakukan melalui service http (
port 80 ), port yang pasti dibuka untuk memberikan layanan web.
Pada kasus, setelah berhasil masuk ke sistem, pelaku web hacking
menggunakan tool TFTP untuk melakukan transfer terhadap halaman web
dengan desain ‘kreatif’ yang dimilikinya untuk mengubah tampilan web
target.
Opsi Baca/Tulis pada Protokol http
Untuk mengamanankan sever IIS dari deface, server harus secara
berkala di-update dengan sercvice pack dan hotfix terbaru. Lebih baik
lagi kalau situs e-commerce itu juga dilindungi oleh firewall dan IDS (
intrusion detection system ). Tapi semua itu ternyata belum menjamin
keamanan situs ecommerce
dari deface. Seperti pada contoh kasus kita, ternyata setelah semua usaha di atas, ternyata masih terkena
deface juga.Walaupun kini deface yang terjadi tidak terlalu mempunyai nilai seni, tetapi tetap efektif
Bagaimana hal ini bisa terjadi?
Hal ini dapat terjadi karena setting pada protokol HTTP 1.0 atau HTTP
1.1 yang merupakan protokol utama untuk web itu sendiri, yaitu adanya
opsi untuk dapat membaca dan menulis lewat protokol-protokol ini. HTTP
1.0 RFC 1945 (http://www.ietf.org/rfc/rfc1945.txt) Finalized May 1996
Didukung oleh sebagian besar Web server dan browser HTTP 1.1 RFC 2616
(http://www.ietf.org/rfc/rfc2616.txt) Finalized 2001 Standard Baru
Komunikasi Web
Beberapa perintah HTTP 1.0
GET Untuk mengambil informasi dari sistem, seperti halaman html GET /default.htm HTTP/1.0
HEAD Untuk mengambil informasi mengenai system HEAD HTTP/1.0 (untuk menentukan OS/WEB)
POST Mengirimkan Informasi ke sistem
Perintah-perintah yang didukung HTTP 1.1.
CONNECT*, DELETE*, GET, HEAD, OPTIONS, POST,
PUT,TRACE
Dengan memanfaatkan hanya perintah-perintah dasar dari HTTP, seorang
hacker dapat men-deface suatu situs web. Berikut ini adalah
perintah-perintah yang dijalankannya:
OPTIONS * HTTP/1.1
PUT /file.ext HTTP/1.1
Host: hostname
Content-Length: jumlahkarakter data yang dikirim
Terlihat bahwa hal ini terjadi karena setting server yang tidak sempurna. Untuk itu perlu dilakukan beberapa hal:
• Setting untuk menulis dari HTTP dihilangkan
• Menggunakan security template dari Microsoft, NSA, dan lain sebagainya.
• Menggunakan berbagai dokument setting server agar aman
SQL Injection
Setting server dengan benar memang akan mengamankan e-commerce web
dari serangan deface, tetapi bukan berarti semuanya sudah aman sekarang.
Situs e-commerce yang menggunakan Microsoft IIS juga
menggunakan database access dengan Micosoft SQL server dan
dibandingkan dengan SQL server yang lain, MS SQL server mempunyai
kelemahan yang memungkinkan seseorang tanpa account dapat masuk dan
lolos verifikasi dari MS SQL server. Dari segi kerugian, hal ini lebih
serius, sebab bisa saja data
sensitif seperti nomor kartu kredit serta lainnya bocor! Pada saat
seseorang berusaha masuk ke situs e-commerce, biasanya akan disambut
dengan halaman login yang mengharuskan pemakai memasukkan login name dan
password. Setelah pemakai memasukkan username dan password, secara umum
SQL akan melakukan verfikasi terpadap SQL query sebagai berikut:
SQLQuery = “SELECT Username FROM Users WHERE Username = ‘” &
strUsername & “‘ AND Password = ‘” & strPassword & “‘“
Kelemahan verifikasi MS SQL disini mirip dengan kelemahan unicode
bug, yaitu tetap memproses (dengan bingung) input-input ilegal pada
username dan menghasilkan error page. Pada error page ini akan terbaca
struktur database-nya. Jadi kalau username-nya diisikan
karakter-karakter ilegal seperti misalnya:
‘ OR ‘ ‘=
dan untuk password-nya disikan juga ‘ OR ‘ ‘= maka SQL query akan membacanya sebagai:
SELECT Username FROM Users WHERE Username = ‘ ‘
OR ‘ ‘=‘ ‘ AND Password = ‘ ‘ OR ‘ ‘=‘ ‘
yang artinya SQL query akan memvalidasi username kosong (blank) dan
password kosong sebagai user yang sah. Keberhasilan SQL Injection
ditandai dengan adanya ODBC error, internal server error, masalah dalam
memproses request, syntax error, dan lain sebagainya. Untuk mengatasi
hal ini, atur agar:
• Hanya karakter tertentu yang boleh diinput.
• Jika terdeteksi adanya illegal character, langsung tolak permintaan.
Angka Minus dalam Program Bisnis
Pengamanan terhadap kelemahan SQL query bukan berarti suatu situs
e-commerce sudah aman. Yang banyak terjadi adalah bahwa suatu situs
e-commerce secara desain memang sudah tidak aman. Hal ini terutama pada
situs situs yang menggunakan scripting language. Pada kebanyakan program
bisnis, tanda minus digunakan untuk menandai pembayaran, sedangkan
pemesanan barang tentunya tidak ada yang menggunakan tanda minus.
Tetapi cukup banyak situs e-commerce yang didesain secara ceroboh dan
tetap memproses tanda minus pada jumlah barang yang dipesan, misalnya.
Hal ini apabila dilakukan dengan kreatif, yaitu mengkombinasikan pesanan
dengan jumlah barang negatif dan jumlah barang lain yang positif, dalam
prosesnya bisa mengakibatkan pengiriman barang dilakukan tanpa
mengharuskan adanya pembayaran.
JavaScript: Client Side Scripting
JavaScript sendiri merupakan suatu scripting language yang dieksekusi
di sisi client (komputer pengguna), sehingga suatu transaksi yang
menggunakan JavaScript sebagai scripting language-nya dapat dipastikan
sangat rawan terhadap manipulasi dari sisi pemakai. Contoh scripting
language yang bekerja di sisi client:
• JavaScript
• Client side VB Script
Adapun scripting language di sisi server:L
• ASP (Active Server Pages_
• JSP (Java Server Pages)
• PHP (Personal Home Page)
Kelemahan Dasar HTML Form
Setelah semua di atas diatasi, juga masih belum semuanya setaus
persen aman. Pasalnya HTML sendiri, bahasa universal yang digunakan oleh
web mempunyai karakteristik yang bisa disalahgunakan.
Formulir dalam format HTML (HTML Form) adalah tampilan yang digunakan
untuk menampilkan jendela untuk memasukkan username dan password.
Setiap HTML form harus menggunakan salah satu metode
pengisian formulir, yaitu GET atau POST. Berikut ini adalah kode HTML
dari suatu login form:username: input name=user type=text width=20>
password: input name=pass type=password width=20>
Melalui kedua metode HTTP ini (GET atau POST) parameter disampaikan ke aplikasi di sisi server.
Masalahnya dengan menggunakan GET, variabel yang digunakan akan
terlihat pada kotak URL, yang memungkinkan pengunjung langsung
memasukkan karakter pada form process, selain juga perintah GET dibatasi
oleh string sepanjang 2047 karakter. Variabel juga dapat diambil dengan
Request.QueryString.
POST biasa digunakan untuk mengirim data dalam jumlah besar ke
aplikasi di sisi server, sehingga tidak menggunakan URL query string
yang terbatas. POST juga lebih aman sebab variabel tidak terlihat oleh
pengunjung, sehingga lebih sulit dimainkan lewat perubahan nama
variabel. Namun variabel tetap dapat diambil dengan RequestForm.
Kesimpulan
• Hacking meliputi semua unsur dan tidak hanya pada satu sisi sistem operasi.
• Tidak semua bug di ketahui pembuat software.
• Kesalahan konfigurasi adalah masalah umum yang disebabkan penguasaan yang kurang atas suatu sistem.
• Menjadi hacker itu mudah; hanya menggunakan tools yang dibuat oleh hacker luar ( script kiddies ).
• Tidak diperlukan pengertian akan network, TCP/IP, Assembly, C, dan lain-lain untuk menjadi Hacker.
• Programmer handal bisa dengan mudah menjadi hacker juga.
• Serangan tidak hanya melalui network layer, tapi juga application layer.
• 70% serangan melalui port 80/aplikasi.
• Kerugian terbesar berasal serangan dari orang dalam, dan 80% serangan dilakukan oleh orang dalam.
sumber :
http://hendrysajahh.wordpress.com