CBKT08-001

Joomla 1.5.x Remote Admin Password Change

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;

       }