CVE-2016-8870 Joomla Hesap Oluşturma Zafiyeti

Açık kaynak CMS’ler içinde en popülerlerden biri olan Joomla‘da iki önemli zafiyet tespit edildi. Joomla 3.4.4 ve 3.6.3 sürümlerinde görülen zafiyetler, CVE-2016-8869 ve CVE-2016-8870 şeklinde tanımlanıyor.

CVE-2016-8870 zafiyetine yapılan saldırı ile, siteye kayıt (üyelik) özelliği kapalı olsa dahi saldırgan kayıt işlemi gerçekleştirebiliyor.

Analiz işlemi için Joomla 3.6.3 sürümünü kurabilirsiniz. Zafiyet bulunan sürümde iki farklı kayıt yönteminin olduğu görülüyor:

1. components/com_users/controllers/registration.php dosyasına baktığınızda, aşağıdaki kodu göreceksiniz:

UsersControllerRegistration::register() function public function register()
{
// Check for request forgeries.
JSession::checkToken() or jexit(JText::_(‘JINVALID_TOKEN’));// If registration is disabled – Redirect to login page.
if (JComponentHelper::getParams(‘com_users’)->get(‘allowUserRegistration’) == 0)
{
$this->setRedirect(JRoute::_(‘index.php?option=com_users&view=login’, false));return false;
}

$app = JFactory::getApplication();
$model = $this->getModel(‘Registration’, ‘UsersModel’);

// Get the user data.
$requestData = $this->input->post->get(‘jform’, array(), ‘array’);

// Validate the posted data.
$form = $model->getForm();


}

2. components/com_users/controllers/user.php dosyasına baktığınızda ise:

UsersControllerUser::register() function
public function register()
{
JSession::checkToken(‘post’) or jexit(JText::_(‘JINVALID_TOKEN’));// Get the application
$app = JFactory::getApplication();// Get the form data.
$data = $this->input->post->get(‘user’, array(), ‘array’);// Get the model and validate the data.
$model = $this->getModel(‘Registration’, ‘UsersModel’);

$form = $model->getForm();


}

UsersControllerRegistration::register() fonksiyonu ve UsersControllerUser::register() fonksiyonu karşılaştırıldığında ise şöyle bir şeyle karşılaşıyoruz:

// If registration is disabled – Redirect to login page.
if (JComponentHelper::getParams(‘com_users’)->get(‘allowUserRegistration’) == 0)
{
$this->setRedirect(JRoute::_(‘index.php?option=com_users&view=login’, false));

return false;
}

Eğer kayıt işlemi için UsersControllerUser::register() fonksiyonu kulanılabilirse, tespit işlemini bypass etmek mümkün. Her ne kadar genel olarak bu yöntem kullanılmıyor olsa da kullanılamayacağı anlamına gelmiyor. İlgili exploit’e exploit-db‘den erişebilirsiniz.

Nasıl korunulur?

Joomla 3.6.4 sürümüne güncelleme yapın

 

Pin It

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Time limit is exhausted. Please reload CAPTCHA.