Menguji keamanan website - goeroekoe @ ruangmaya

30 April 2007

Menguji keamanan website

Banyak diantara pemilik website yang kebakaran jenggot ketika melihat tampilan website mereka berubah [diubah tampilannya oleh orang lain] atau istilah gaulnya "kena deface". Bahkan mereka tidak berkutik ketika kendali administrasi website diambil oleh orang lain. Yang paling menyedihkan adalah ketika database yang berisi "data penting" menjadi lenyap tanpa bekas. Yang "paling ringan" adalah ketika Buku Tamu kena spam / terisi dengan data-data sampah. Dari hasil pengamatan saya, hampir semua website yang menggunakan auracms versi 162 buku tamunya kena spambot dan yang masih menggunakan versi Register Global = On database shoutboxnya dengan mudah dihapus. Untuk mengetahui seberapa banyak jumlah pemakai auracms versi 162 ke bawah, silahkan ketikan keywords inurl:/?pilih=mail pada Google karena salah satu ciri auracms versi 1 ke bawah adalah menggunakan kata pilih dan kata mail untuk halaman kontak, sedang versi 2.0 beta menggunakan kata contact untuk halaman kontaknya.


Terus bagaimana caranya agar website menjadi "aman?". Jawabnya ya tentu saja kita harus menguji dan mencari di mana letak celah keamanan website yang mungkin bisa dilewati bahkan oleh seorang script kiddies.
Filosofi pengujiannya adalah bahwa kode-kode html dirender / diterjemahkan sedemikian rupa oleh browser dan hasil terjemahannya ditampilkan di komputer. Meskipun hampir semua jenis browser menerjemahkan dengan kelakuan yang seragam terhadap kode-kode html yang dibacanya tapi tidak 100% sama, kadang tampilan sebuah website sedikit berbeda ketika ditampilkan pada browser yang lain. "Kelakuan yang aneh" dari browser dalam menerjemahkan kode-kode html inilah yang dimanfaatkan orang untuk "mengambil alih" sebuah website.

Untuk website yang bersifat statis atau tidak memanfaatkan unsur database dalam tampilannya, maka jika terjadi "pengambilalihan" webite kemungkinan kesalahannya adalah terletak pada lemahnya pengadmnistrasian user dalam sistem jaringan atau data username dan password "dicuri" dengan menggunakan program lain, misalnya program Keylogger (program yang memungkinkan untuk merekam setiap ketukan keyboard). atau "keteledoran" si pemilik password tidak melakukan Log Out atau Sign Out atau Keluar. Sering saya dengar bahwa seorang pemilik akun Friendster atau mail yahoo atau y!m tidak bisa login lagi. Hal ini dimungkinkan terjadi, karena si empunya layanan website akan memberikan tanda jejak pada komputer yang sedang digunakan untuk mengetahui apakah si pemiliki akun sedangkan Login atau tidak. Tanda jejak ini akan tetap ada selama si pemilik akun belum melakukan Log Out, Sign Out atau Keluar. Meskipun aplikasi browser telah dimatikan tanda jejak tersebut tetap ada selama komputer belum dimatikan secara fisik (tombol power dimatikan). Bahkan ada yang mengatur agar tanda jejak tersebut tetap ada walaupun komputer telah dimatikan secara fisik. Tanda jejak baru akan terhapus setelah si pemiliki akun telah melakukan Log Out, Sign Out atau Keluar. Perilaku teledor ini sering dilakukan oleh para pemula / newbie. Mereka berpikir bahwa dengan menutup aplikasi browser maka semua data username dan password akan terhapus juga.

Untuk website yang mengandalkan database dalam menampilkan informasinya (istilah kerennya menggunakan Content Management System / CMS) maka ada beberapa hal yang harus diteliti :

  • Data yang boleh dimasukkan melalui Form, baik itu typenya, ukuran panjangnya dan cara penulisan variabel dalam kodingnya. Jika data yang dimasukkan dalam form tidak dibatasi / difilter maka form ini memberikan celah / lubang yang besar untuk meletakkan kode eksplotasi atau kode pengambilalihan, salah satu cara yang memanfaatkan celah ini adalah SQL Injection. SQL Injection akan menuliskan beberapa inputan data yang jika diproses akan menghasilkan ARGUMENT DATABASE yang dibenarkan. Dengan berbekal ARGUMENT DATABASE yang dibenarkan seseorang bisa memperoleh atau login sebagai administrator database.
  • Jenis-jenis kode html yang boleh dituliskan. Jika semua kode html bisa dan boleh dimasukkan maka ini akan menciptakan celah keamanan berikutnya, karena semua kode html yang diijinkan (termasuk kode scripting client-side : mis. javascript) akan dirender oleh browser. Salah satu cara yang memanfaatkan celah ini adalah XSS attacking. XSS attack akan menuliskan sejumlah kode CSS yang jika dirender oleh browser akan menjalankan kode scripting client-side. Kode scripting ini akan mengirimkan tanda jejak yang digunakan ketika kita login sebagai administrator ke sebuah halaman pemroses data ( scripting server-side : mis. php). Selanjutnya di halaman pemroses data akan dihasilkan username dan password yang bisa digunakan untuk login. Salah satu contoh pemanfaatan celah ini adalah "Mendapatkan Username dan password akun Friendster orang lain" dengan menggunakan kode CSS yang dibenarkan.
  • Otomatisasi pengisian data form. Form yang bisa diisi langsung secara otomatis oleh sebuah program tanpa campur tangan manusia maka form ini bisa diserang oleh SPAMBOT. Spambot akan mengisikan data yang sejenis berkali-kali dalam waktu yang singkat, karena form yang dibuat memungkinkan untuk diisi dan disubmit secara otomatis. Salah satu contoh penyerangan oleh SPAMBOT ini adalah pengisian data sampah di halaman buku tamu website yang menggunakan auracms versi 1 ke bawah. Silahkan dicek dengan mengetikan keywords inurl:/?pilih=gb di Google.
    Untuk menangani hal ini bisa digunakan program yang berfungsi untuk menghasilkan variabel random dalam form tsb. sehingga dibutuhkan campur tangan manusia (harus diketikkan secara manual) untuk memasukkan variabel random tsb. Teknologi penghasil variabel random tsb dikenal dengan CAPTCHA


Untuk berlangganan artikel di blog ini silahkan ketik email kamu di kotak isian berikut ini :

Semua artikel terbaru di blog ini akan langsung dikirim ke email kamu setelah proses validasi email.

Delivered by FeedBurner