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

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

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

ОПИСАНИЕ

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

URL:

http://site.com/ajax/preview/text/

Request body:

security_ls_key=YOUR_SECURITY_KEY
text[]=hellophp54


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

Notice: Array to string conversion in /home/webmaster/www/site.com/www/classes/actions/ActionAjax.class.php on line 1026

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

РЕШЕНИЕ

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


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


В ЛС 0.4 уязвимость немного другая и связана с отсутствием приведения типов и необходимостью регистрации пользователя на сайте, но без проверки ключа безопасности.

ОПИСАНИЕ

1. Потенциальному злоумышленнику необходима обязательная активная регистрация на сайте.
2. Сформировать специальный POST-запрос на сервер:

URL:

http://site.com/include/ajax/textPreview.php

Request body:


save=yessavemeplease
text[]=hellophp54


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

Warning: htmlspecialchars() expects parameter 1 to be string, array given in /home/webmaster/www/site.com/www/include/ajax/textPreview.php on line 32

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

РЕШЕНИЕ

В /include/ajax/textPreview.php после 27 строки добавить код:


/*
  prevent hacking
*/
if (!is_string ($sText)) die (); // silence


Для ЛС 0.5 я не смотрел, но понятно что уязвимо тоже.
Как уже говорил — повод для обновления.
3 комментария
Gmugra
PSNet, а в актуальной ветке LS на GitHub эти дыры(1-5) уже закрыты?
Serge Pustovit
да, максим после выхода этого цикла статей все дыры закрыл
Gmugra
Тогда не буду рыпаться и подожду 1.0.2 :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.