Wednesday, February 25, 2009

Joomla 1.5.x-1.5.5 ын алдаа



Ер нь одоо олон газарууд Жуумла хэмээх CMS ыг хэрэглэн өөрийн веб сайтаа хийдэг болсон байна.Энэ нь мэдээж л нээлттэй эх учраас код нь бусдад нээлттэй байдаг.Зарим веб сайтууд Joomla 1.5.x-1.5.5 аар хийсэн байна энэ нь маш том алдаатай байгаа юм.Хэрэв та Joomla 1.5.x-1.5.5 аар сайтаа хийсэн бол Joomla албан ёсны сайтаас шинчлэлтүүдийг татан авч сайтаа шинчлэхийг санал болгож байна.

File : /components/com_user/controller.php Энэ PHP код ны 379-399 мөр

#####################################################################################
Line : 379-399

function confirmreset()
{
// Check for request forgeries
JRequest::checkToken() or die( 'Invalid Token' );

// Get the input
$token = JRequest::getVar('token', null, 'post', 'alnum'); < --- {1} // Get the model $model = &$this->getModel('Reset');

// Verify the token
if ($model->confirmReset($token) === false) < --- {2} { $message = JText::sprintf('PASSWORD_RESET_CONFIRMATION_FAILED', $model->getError());
$this->setRedirect('index.php?option=com_user&view=reset&layout=confirm', $message);
return false;
}

$this->setRedirect('index.php?option=com_user&view=reset&layout=complete');
}

#####################################################################################

File : /components/com_user/models/reset.php

Line: 111-130



function confirmReset($token)
{
global $mainframe;

$db = &JFactory::getDBO();
$db->setQuery('SELECT id FROM #__users WHERE block = 0 AND activation = '.$db->Quote($token)); < ---- {3} // 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;
}
#####################################################################################



{1} - Replace ' with empty char
{3} - If you enter ' in token field then query will be looks like : "SELECT id FROM jos_users WHERE block = 0 AND activation = '' "

Энэ нь яг юундаа алдаа байна гэхээр та нууц үгээ мартсан байна гэдэгээр нууц сэргээхэд та майл хаягаа оруул гэнэ тэгээд оруулангууд таны майлд ирж байгаа тэмдэгт нь зөвхөн ' ийм тэмдэгт л ирдэг тийм болхоор хэнч энэ тэмдэгтийг ашиглан таны сайтын админий нууц үгийг тань мэдэж болох юмаа.Та хамгаалахын тулд Admin user name ээ default admin гэдэгийн хүн таахааргүйгээр сольж болно.Гэхдээ ер нь шинчлэлтийг нь татаад сайтаа шинчлэх нь хамгийн найдвартай арга юм.

1 Сэтгэгдэл::

Anonymous said...

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\fed\components\com_content\models\frontpage.php on line 104

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\fed\libraries\joomla\database\database\mysql.php on line 344

iiom aldaa zaagaad bna, yah ve? tuslaach