Senin, 01 Desember 2008

Tips Keamanan Joomla

--|PREFACE
Pembuatan website saat ini bukanlah hal yang istimewa lagi. Seiring dengan berkembangnya Open Source, Content Management System atau yang lebih dikenal dengan nama CMS mulai dilirik para web desainer. Selain karena kemudahan pembuatan dan pengelolaannya, dari segi tampilanpun CMS tak kalah dengan web-web mandiri. Meskupun demikian banyak pihak yang meragukan produk open source ini terutama dari segi keamanannya. Rasionalnya adalah bahwa semua pihak memiliki peluang yang sama dalam menggunakan kode-kode yang ada. dengan demikian, mereka juga memiliki kesempatan yang sama untuk mencoba dan menemukan teknik-teknik baru dalam melumpuhkan sistem keamanan CMS tersebut.

CMS yang banyak beredar di pasaran dan yang paling sering digunakan ada tiga:

.: Joomla = untuk penanganan web
.: PHPBB = untuk penanganan forum
.: Moodle = untuk penanganan e-learning

Meskipun demikian, saya secara pribadi sangat tertarik pada Joomla. Joomla banyak memiliki kelebihan dibandingkan dengan CMS yang lain, diantaranya adalah sebagai berikut:

--> Joomla banyak meendapat dukungan dari open source yang lain, hal ini terlihat dari banyaknya third party yang ikut meramaikan joomla.
--> Dari segi tampilan dapat dikatakan joomla yang paling baik
--> Keamanan joomla lebih dapat diandalkan
--> Sudah banyak yang mendownload dan menggunakan joomla, ini menandakan bahwa joomla banyak disukai orang.
---> Joomla sering melakukan update pada produknya sehingga bug yang ditemukan akan cepat diatasi.

Artikel kali ini akan membawa kita pada gambaran tentang validasi password pada joomla, berikut implikasinya terhadap user dan admin. Yah...meskipun ini sangat sepele dan tidak berbobot, saya tetap akan berbagi pengalaman pada anda.

Untuk keamanan joomla menggunakan dua jalan (yang saya ketahui), pertama dengan menggunakan .htacces dan yang kedua engkripsi password. Nah engkripsi password ini yang akan kita bahas. Pada joomla, metode engkripsi yang digunakan adalah MD5 (informasi lebih jauh silahkan googling dengan keyword ).


--|CARA KERJA
Ketika kita melakukan registrasi dan memasukkan password, joomla akan menyimpannya dalam bentuk terenkripsi dengan metode MD5 pada tabel [prefix_users atau defaultnya jos_users], jadi dalam database joomla, kita tidak akan menemukan password user seperti aslinya karena sudah terenkripsi. Kemudian ketika kita login maka password yang kita masukkan akan diengkripsi dengan teknik yang sama kemudian dicocokkan dengan password yang ada dalam database. Simple kan...

Contoh:
------------------------
Id = 92
Username = hartoto
Password = 123456
------------------------
Password yang kita masukkan adalah [123456],maka joomla akan mengengkripsinya dengan metode MD5 menjadi [e10adc3949ba59abbe56e057f20f883e] di tabel jos_users pada database. Kemudian ketika kita memasukkan password pada saat login dengan [123456] maka joomla akan mengubahnya dengan nilai [e10adc3949ba59abbe56e057f20f883e], kemudian nilai ini akan dicocokkan dengan nilai password yang ada di database tersebut. Tentunya pengisisan ini akan bernilai benar karena
e10adc3949ba59abbe56e057f20f883e = e10adc3949ba59abbe56e057f20f883e

Tetapi jika kita masukkan username [hartoto] dan password dengan [123123] maka tentunya joomla akan mengubah password tersebut menjadi [4297f44b13955235245b2497399d7a93]. setelah dibandingkan, ternyata hasilnya tidak sama atau bernilai salah karena password yang kita masukkan ini tidak sama dangan password yang ada pada tabel.
dengan kata lain:
---------------------------------------------------------------------
123456 != 123123
4297f44b13955235245b2497399d7a93 != e10adc3949ba59abbe56e057f20f883e
---------------------------------------------------------------------
Ket: != --> tidak sama dengan


--|TITIK PERMASALAHAN

Ada 4 titik permasalahan yang akan dihadapi user terhadap admin berkaitan dengan keamanan password:

<< Admin tidak mengengkripsi password registrasi dan form login
Hal ini sangat mudah dilakukan yaitu dengan memodifikasi ulang fungsi engkripsi pada dua halaman tersebut. Tapi ini jarang dilakukan karena resikonya terlalu besar.

<< Mengganti nilai password di database
Misalnya password kita adalah 419C50FB764ADA9A60CA15584248CBFC (dalam keadaan terenkripsi). Untuk masuk di user kita admin tidak perlu tahu password kita, dia cukup mengkopi password kita kemudian menggantikannya dengan password dia yang sudah diengkripsi misalnya 28B662D883B6D76FD96E4DDC5E9BA780 (=tes). setelah itu admin dengan leluasa login pada user kita dengan password yang ia buat. Nah setelah dirasa cukup admin daqpat logout dan mengganti password yang telah dirubah tadi dengan password yang asli.

<< Mengganti email untuk sementara
Joomla memilki fasilitas lost password. hal ini digunakan ketika kita lupa akan username dan password yang pernah kita daftarkan pada situs tersebut. Kita tinggal mengisi username dan email kita saja, nantinya joomla akan secara otomatis mengirimkan password kita. Langkah-langkah ini juga dapat dimanfaatkan admin,caranya admin mengganti email pada user korban. misalnya email semula adalah abc@yahoo.comThis e-mail address is being protected from spam bots, you need JavaScript enabled to view it kemudian diganti dengan email admin yaitu tampung@yahoo.com.This e-mail address is being protected from spam bots, you need JavaScript enabled to view it setelah itu admin masuk sebagi userbiasa dan membuka fasilitas lost password, dia lalu mengisis username dan email tampung@yahoo.com.This e-mail address is being protected from spam bots, you need JavaScript enabled to view it Alhasil password tersebut tidak dikirim lagi ke abc@yahoo.comThis e-mail address is being protected from spam bots, you need JavaScript enabled to view it tapi ke tampung@yahoo.com.This e-mail address is being protected from spam bots, you need JavaScript enabled to view it setelah berhasil, admin kemudian menggantinya dengan email asli.

<< Mengganti password langsung dari user manager
Langkah ini terbilang nekad tetapi sangat mudah. Admin tinggal masuk di menu user manager dan mengganti password user. setelah melakukan misi baru kemudian memberi tahu user bahwa passwordnya telah diganti karena alasan-alasan tertentu misalnya karena kerusakan database atau aasan lain yang masuk akal.

Sebenarnya masih ada cara lain, silahkan anda cari sendiri....yang jelas lebih powerfull dan wah....


--|SOLUSI
Solusi paling bai adalah berhati-hati, selalu mengganti password secara berkala, dan menggunakan password yang berbeda untuk setiap situs yang berbeda.

--|PENUTUP
Kejahatan tidak hanya terjadi karena ada niat, tetapi juga karena ada kesempatan
Waspadalah....Waspadalah (pesan bang napi)
Written by Hartoto