CVE-2016-8870 Joomla Hesap Oluşturma Zafiyeti

CVE-2016-8870 Joomla Hesap Oluşturma Zafiyeti
Ocak 09 12:01 2017 Yazıyı Yazdır

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:

[box style=”note”]

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();


}

[/box]

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

[box style=”note”]

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();


}

[/box]

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

[box style=”note”]

// 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;
}

[/box]

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

 

  Kategori:
daha fazla yazı

Yazar Hakkında

Atalay Keleştemur
Atalay Keleştemur

Atalay Keleştemur, siber istihbarat analisti ve PHP güvenlik uzmanı olarak görev yapmaktadır. Linux ve özgür yazılım gönüllüsüdür. Çeşitli kurumlarda sistem yöneticisi ve yazılım geliştiricisi olarak çalışmıştır. Siber İstihbarat isimli kitabın yazarıdır.

Daha Fazla Yazı
yorum yapın

Yorum Yok

Henüz yorum yapılmamış

İlk yorumu siz yapabilirsiniz.

Yorum ekleyin

Bilgileriniz güvende! E-posta adresiniz yayınlanmayacak. Diğer kişisel bilgileriniz üçüncü partilerle paylaşılmayacak.
* işaretli alanlar zorunludur.

Time limit is exhausted. Please reload CAPTCHA.