Раскрытие директорий в ЛС. Часть 3

Безопасность LiveStreet CMS
Продолжаем искать дыры в безопасности движка ЛС, это третья. Предыдущая вторая часть.

  • Уровень опасности: средний
  • Тип: раскрытие имени пользователя (аккаунта) на сервере
  • Версии движка, которые подвержены данной опасности: все версии движка, начиная с LS 0.4

ОПИСАНИЕ

1. Потенциальному злоумышленнику необходима обязательная активная регистрация на сайте.
2. На сайте необходимо найти/опубликовать топик-опрос, в котором злоумышленник ещё не голосовал.
3. Необходимо из кода страницы получить ключ безопасности ЛС.
4. Необходимо получить идентификатор топика-опроса.
4. Сформировать специальный POST-запрос на сервер:

URL:
http://site.com/ajax/vote/question/

Request body:
idTopic=TOPIC_QUESTION_ID
security_ls_key=YOUR_SECURITY_KEY
idAnswer[]=0

Результатом станет вывод предупреждения уровня e_warning:

Warning: Illegal offset type in isset or empty in /home/webmaster/www/site.com/www/classes/actions/ActionAjax.class.php on line 555

где webmaster — имя пользователя на сервере.

РЕШЕНИЕ

В /classes/actions/ActionAjax.class.php после 550 строки добавить код:


/*
  prevent hacking
*/
if (!is_string ($idAnswer)) {
  $this -> Message_AddErrorSingle ($this -> Lang_Get ('system_error'), $this -> Lang_Get ('error'));
  return;
}


P.S. Для ЛС 0.4, например, нужно в /include/ajax/questionVote.php после 38 строки кода вставить следующий:
if (!is_string ($idAnswer)) die (); // silence


Для ЛС 0.5 я не смотрел где именно нужно править, думаю сами по примерам разберетесь. Будет ещё один повод не сидеть на старых версиях ЛС.
0 комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.