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) {
...