Kalo Lo punya website basis joomla, jangan lupakan hal sekecil reset token.
http://www.target.com/
Apabila kita tambah " index.php?option=com_user&view=reset&layout=confirm " dan muncul Token Box reset password, itu tandanya situs joomla Lo ada bug pada http://www.target.com/components/com_user/models/reset.php
LIHAT UN-PATCHED RESET.PHP
cari code berikut ini pada reset.php :
Masalah diatas ada pada :function confirmReset($token) { global $mainframe; $db = &JFactory::getDBO(); $db->setQuery('SELECT id FROM #__users WHERE block = 0 AND activation = '.$db->Quote($token)); // Verify the token if (!($id = $db->loadResult())) { $this->setError(JText::_('INVALID_TOKEN')); return false; } // Push the token and user id into the session $mainframe->setUserState($this->_namespace.'token', $token); $mainframe->setUserState($this->_namespace.'id', $id); return true; }
Jadi jika user memasukkan Single Quote (karakter ‘ ) pada Token box maka query yang terlihat jadi seperti ini :$db->setQuery('SELECT id FROM #__users WHERE block = 0 AND activation = '.$db->Quote($token)
Lihat setelah tanda sama dengan yang terakhir. Tanda petik yang dimasukkan membuatnya menjadi empty quote (kutipan kosong) yang akan “diluluskan” begitu saja untuk menjalankan fungsi password reset.SELECT id FROM jos_users WHERE block = 0 AND activation = ''
PATCHING
Untuk mencegah user melakukan penetrasi dengan memasukkan Single Quote pada kotak Token maka Achev cukup menambahkan kode penambal. Kode ini akan membuat apabila ada user yang memasukkan karakter ‘ akan menampilkan pesan Error. Kode-nya seperti ini :
Ternyata Achev ini bisa berbahasa Indonesia dan dia tahu bahwa yang kemarin melakukan defacing terhadap situsnya adalah orang Indonesia. Sehingga dia memakai bahasa Indonesia dalam pesan error-nya (walaupun ancamannya untuk melapor ke FBI rasanya terlalu berlebihan). Pesan tersebut bisa diganti dengan yang lainnya.if(strlen($token) != 32) { $this->setError(JText::_('Woy Mau Ngapain Lo??? Gw Laporin FBI neh...!')); return false; }
Kode tersebut diletakkan dibawah potongan kode :
function confirmReset($token)
{
global $mainframe;Sebagai perbandingan, klik link berikut untuk melihat file reset.php yang udah di-patch oleh Achev.LIHAT PATCHED RESET.PHP


Memang membosankan buat kita yang gak tau untuk apa kita belajar. Pernah gw denger dari seorang bocah lugu yang duduk dibangku SD. "Kak, buat apa seh kita belajar ???". Salut gw dua jempol buat anak itu. Dia mau bertanya tentang apa yang dia tidak mengerti. Gw yakin dia akan menjadi orang yang berhasil, Amin.


0 komentar: