Các phiên bản bị ảnh hưởng
Tất cả các phiên bản cũ hơn 1.5.x bao gồm cả phiên bản 1.5.5
Giới thiệu
Một lỗi bảo mật nghiêm trọng đã được phát hiện, lỗi này cho phép 1 người dùng chưa đăng nhập, không có quyền truy nhập vào hệ thống có thể thay đổi mật khẩu của tài khoản được kích hoạt đầu tiên, thông thường đây là tài khoản của admin.
I. Mô tả
Lỗi xuất hiện trong file /components/com_user/models/reset.php Dòng 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; |
Cho phép hacker có thể reset mật khẩu Administrator mới, và đăng nhập vào phần quản trị nội dung của Website
II. Ảnh hưởng
Chiếm toàn quyền điều khiển nội dung Website sử dụng Joomla!
III. Giải pháp
- Nâng cấp phiên bản Joomla! mới nhất (1.5.6 hoặc mới hơn), hoặc sửa lỗi trong file /components/com_user/models/reset.php với đoạn mã sau:
Sau global $mainframe; trên dòng 113 của file reset.php, thêm:
if(strlen($token) != 32) {
{
$this->setError(JText::_('INVALID_TOKEN'));
return false;
}
|
|