andrey danaw - session management errors in cloud solutions and in classic hosting systems
DESCRIPTION
TRANSCRIPT
@d90andrew7-8.11.2013
Ошибки управления сессиями в облачных решениях и на классических хостингах
План:
● Описание проблем.● Пересечение ключей сессий на шаред
хостингах.● Шаринг сессии на облачных нодах.● Способы защиты.
Описание проблем:
1. Общее хранилище сессий.
1.1 Произвольный доступ к сессиям.
1.2 Нет возможности менять формат сессий.
2. Плохое разделение хранилищ сессий.
Общее хранилище сессий:
Пример 1.1:Имеется произвольный доступ.
Злоумышленник может управлять сессией на любом хосте в пределах серверной ноды.
Классический пример:
System ;Linux srv1337.hostingtrololo.com
session.save_path;/tmp;/tmp
session.save_path tcp://localhost:11211
Классический пример:
srv1337.hostingtrololo.com
blog.trololo.com
hacker.trololo.com
forum.trololo.com
target.trololo.com
session
target.trololo.comSugarCRM :/modules/Users/authentication/SugarAuthenticate/SugarAuthenticateUser.php
hacker.trololo.com
Exploit:
Vulnerable CMSCMS Session Type
DataLife 10.0( http://dle-news.ru/ )
$_SESSION[‘dle_sort_main’] (and all dle_sort_* params ;) ) SQL-Injection
LiveStreet CMS( http://livestreetcms.ru/ )
$_SESSION[‘user_id’] Auth-By-pass
eXtplorer 2.1.4( http://extplorer.net/ )
$_SESSION['credentials_'.$auth_type][‘username’]=admin $_SESSION['credentials_'.$auth_type][‘password’]=true
Auth-By-pass
TinyCMS 1.4(http://tinycms.designskate.com/ )
$_SESSION[‘username’] , $_SESSION[“security”]=true Auth-By-pass
SugarCRM 6.5.15( http://www.sugarcrm.com/ )
$_SESSION[‘authenticated_user_id’] Auth-By-pass
Общее хранилище сессий:
Пример 1.2:Нет возможности менять формат сессии.
Злоумышленник может использовать пересечение ключей сессий на приложениях (Например для
повышения привилегий).
Пересечение ключей сессий:
Пересечение ключей сессий:
Datalife Engine, MODx, LiveStreet CMS, SMF(disabled db sess), PhpMyAdmin, TinyCms, SugarCRM..
В выше преведенных CMS не было обнаружено пересечений ключей сессий.
Но, угроза актуальна для самописных приложений.
Плохое распределение хранилищ сессий:
Злоумышленник может воспользоваться ситуацией failover хранилища и исполнить случаи из ранее
приведенных примеров.
Облачные ноды:
Облачные ноды:
Рассмотрим пример из практики:Failover хранилища memcache или БД отработан как запись в файлы - таким образом приходим к случаю хостера, если есть возможность писать в файл на одном клиенте, получаем доступ ко всем другим на этой же ноде.
Методы защиты:
Для хранения сессий необходимо использовать отдельные хранилища\префиксы для каждого приложения.
The End.
Всем спасибо за внимание!
@d90andrew7-8.11.2013
Дополнительные материалы:http://www.supernifty.org/blog/2008/04/19/php-sessions-on-shared-hosting-hack-3/
http://stackoverflow.com/questions/6671781/are-php-sessions-stored-in-tmp-on-shared-hosting-safe