Pull to refresh

Уязвимость на виртуальном хостинге инфобокса

Reading time 3 min
Views 1.6K
Не так давно стал клиентом компании инфобокс, купив у них услугу «виртуальный хостинг».
Сразу перейду к делу. Нашел на этом хостинге довольно серьезную уязвимость, о которой сразу же сообщил в техподдержку.

Данная уязвимость позволяет получить идентификаторы сессий, если:
1. На сайте используются штатные средства php для поддержки сессий.
2. Сайт находится на том сервере инфобокса, к которому у вас есть доступ (т.е. на котором у вас тоже есть виртуальный хостинг).


Процитирую свой диалог с ТП инфобокса:

2010-07-02 14:52:31 MSK Вопрос от: XXX
Еще раз здравствуйте.
Файлы сессий php хранятся в общедоступной папке /home/tmp. Таким образом, каждый клиент хостинга может видеть имена всех сохраненных сессий, а так же пользователя хостинга, которому эта сессия принадлежит. А так как в большинстве случаев имя файла сессии совпадает с идентификатором сессии, который использует php, то можно зайти на чужой сайт под любой сессией с этого сайта, подменив куки.

Для успешной эксплуатации этого несанкцианированного доступа к чужим сайтам не хватает только связи между доменными именами сайтов клиентов и номером клиента на инфобоксе.
Эту связь найти проще простого — заходим на целевой сайт, получаем идентификатор сессии. Его видно в куках. Далее, определяем, на каком сервере инфобокса находится сайт. Если у злоумышленника на этом же сервере есть хостинг, то он может выполнить скрипт что-то вроде такого: <?php passthru('ls -la /home/tmp | grep тот_самый_идентификатор_сессии'); ?> и узнать номер клиента. А потом, выполнив <?php passthru('ls -la /home/tmp | grep номер_клиента'); ?> узнать все сессии.

2010-07-02 15:47:31 MSK Вам отвечает Ведущий специалист технической поддержки YYY
Здравствуйте, XXX.

Спасибо за информацию, она передана системным администраторам.
Мы сообщим Вам нашу позицию по этому вопросу.

2010-07-02 15:49:08 MSK Вам отвечает специалист технической поддержки ZZZ
Здравствуйте, XXX.

Вопрос передан системным администраторам.

2010-07-02 15:56:00 MSK Вам отвечает Ведущий специалист технической поддержки YYY
Здравствуйте, XXX.

Ответ на Ваше сообщение следующий:

Описанный Вами метод конечно же теоретически работает. Но слишком много всяких «если». То есть на практике использовать его ни у кого не получится. Много зависит от реализации авторизации на сайте. Если Вам критична доступность Ваших файлов сессий кому-либо — Вы можете настройками в php.ini прятать сессии в свои собственные домашние директории.

2010-07-02 15:59:34 MSK Вопрос от: XXX
Ну, это ваше дело, мое дело сообщить =)
Не вижу ничего сложного, в том, чтобы заменить /tmp на ~/tmp в общем файле php.ini

Скажите тогда, пожалуйста, что нужно делать, чтобы переопределить собственные настройки php.ini?

2010-07-02 16:48:27 MSK Вам отвечает специалист технической поддержки YYY
Здравствуйте, XXX.

Файл php.ini доступен в корне Вашего FTP аккаунта.

2010-07-02 16:51:50 MSK Вопрос от: XXX
Спасибо. Тикет можно закрывать, однако задумайтесь… Особенно, при наличии подобных баз: www.russian-domains.ru/ip-addresses/77.221.130.41 в которых видно, какие домены соответствуют айпиадресу…

2010-07-02 16:53:19 MSK Вам отвечает Ведущий специалист технической поддержки YYY
Здравствуйте, XXX.

> Спасибо. Тикет можно закрывать, однако задумайтесь… Особенно,
> при наличии подобных баз:
> www.russian-domains.ru/ip-addresses/77.221.130.41 в
> которых видно, какие домены соответствуют айпиадресу…

Любой поисковик выдает все сайты на IP. В этом нет ничего страшного. Для абсолютной безопасности Вы можете заказать выделенное решение, где сможете изменять все необходимые настройки самостоятельно.


Итого, инфобокс не хочет это исправлять. На мой взгляд эта уязвимость просто-таки космических масштабов. Особенно, при наличии подобных баз: www.russian-domains.ru/ip-addresses/77.221.130.41 в которых видно список доменов на данном айпиадресе.

Еще добавлю, что сервер, на котором расположен сайт, можно узнать, выполнив ping %имя_сайта%, а затем nslookup %ip_сайта_полученный_после_пинга%

Так что, господа вебмастеры, хостящиеся на инфобоксе, дружно меняем путь, куда сохраняются сессии. Это можно сделать, изменив директиву php.ini «session.save_path». Файл php.ini (у клиентов инфобокса) расположен в корневой директории ftp, она же домашняя директория пользователя.

UPD 05.07: эта статья — никоим образом не критика компании инфобокс и не жалоба на то, что я боюсь за свои данные. Эта статья — стимул задуматься о безопасности своих данных для тех, кто использует виртуальный хостинг инфобокса. Просто задуматься и решить — забить на это или разобраться, что к чему.
Tags:
Hubs:
+16
Comments 31
Comments Comments 31

Articles