Найдена уязвимость в WordPress
Рубрика: WordPress -> Уязвимости
Пятница, 21 июля 2006 г.
Просмотров: 1460
Подписаться на комментарии по RSS
Пятница, 21 июля 2006 г.
Просмотров: 1460
Подписаться на комментарии по RSS
Источник: http://www.securitylab.ru/vulnerability/270044.php
Описание: уязвимость позволяет удаленному пользователю получить доступ к важным данным.
Уязвимость существует из-за того, что подробное сообщение об SQL ошибке возвращается пользователю. Злоумышленник может указать некорректное значение параметра "paged" в сценарии index.php и получить данные об используемом префиксе таблиц. Пример:
- http://сайт/index.php?paged=-1
/-Решение
для версии 2.0.3 вы можете просто скачать исправленный файл (12Кб). Скопируйте его в /wp-includes/.
/-Для других версий
в файле /wp-includes/classes.php после следующих строк:
- // Paging
- if (empty($q['nopaging']) && ! $this->is_single && ! $this->is_page) {
- $page = $q['paged'];
- if (empty($page)) {
- $page = 1;
- }
добавляем:
- $page = abs((int)$page);
- if ($page===0) $page=1;



Комментариев: 3
В таком случае еще и на "нечисло" надо проверять.
Текст вместо цифры аналогичную ошибку выдает.
у меня заработала на "нечисло" следующая комбинация
if (!eregi("[[:alnum:]]", $page)) {
$page=1;
}
if (eregi(".[a-zA-Z]", $page)) {
$page=1;
}
1 условие отсекает запрос типа index.php?paged=нелатиница
2 условие отсекает запрос типа index.php?paged=latinica
наверняка есть более изящный способ о котором я не знаю
Есть вариант попроще:
$page = abs((int)$page);
if ($page===0) $page=1;