SQL-инъекция в DatsoGallery 1.6

Внимание!!! SQL-инъекция в DatsoGallery 1.6

Внимание!!! SQL-инъекция в DatsoGallery 1.6

Сводка:

Программа: Joomla DatsoGallery 1.6, возможно более ранние версии
Опасность: Средняя
Наличие эксплоита: Да
Описание:
Уязвимость позволяет удаленному пользователю выполнить произвольные SQL команды в базе данных приложения.
Уязвимость существует из-за недостаточной обработки входных данных в HTTP заголовке «User-Agent» в сценарии sub_votepic.php. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения.

Лечим:

Находим у себя на сервере файл /components/com_datsogallery/sub_votepic.php и открываем его редактором.

Находим строчку примерно 32, выглядит она так:

   $browser        = $_SERVER[’HTTP_USER_AGENT’];

после неё добавляем строки:


    $browser_tmp = ‘ ‘.strtoupper($browser);
    if ((strpos($browser_tmp, ‘SELECT’)) or
      (strpos($browser_tmp, ‘DELETE’)) or
      (strpos($browser_tmp, ‘UPDATE’)) or
      (strpos($browser_tmp, ‘INSERT’)) or
      (strpos($browser_tmp, ‘ FROM ‘)) or
      (strpos($browser_tmp, ‘ INTO ‘)) or
      (strpos($browser_tmp, ‘VALUES’))
    ) {
      die(‘SQL-injection rejected.’);
    }

что-бы получилось:



    $browser        = $_SERVER[‘HTTP_USER_AGENT’];
    $browser_tmp = ‘ ‘.strtoupper($browser);
    if ((strpos($browser_tmp, ‘SELECT’)) or
      (strpos($browser_tmp, ‘DELETE’)) or
      (strpos($browser_tmp, ‘UPDATE’)) or
      (strpos($browser_tmp, ‘INSERT’)) or
      (strpos($browser_tmp, ‘ FROM ‘)) or
      (strpos($browser_tmp, ‘ INTO ‘)) or
      (strpos($browser_tmp, ‘VALUES’))
    ) {
      die(‘SQL-injection rejected.’);
    }

    if($my->username) {