пятница, 6 февраля 2009 г.

Плюшевый Битрикс

или инструкция по разведению Секлабов

UPD: Я публиковал эту свою статью на besecure, но besecure прикрыт и показывает "It works!". Будем надеяться Zarin и Drac вернут ребёнка на планету, а пока восстановлю её здесь.

Собственно таким вот образом можно прочитать свежую документацию 1C-Битрикс 7.x на любом сайте его использующем, включая секлаб. Таким образом можно однозначно понять какие модули Битрикса стоят, а какие нет (по содержимому справки слева). Неплохой подгон. :D

Ссылка формируется таким образом, чтобы мы не могли покинуть директорию /bitrix/help/ru/source/ - справо-налево и с разделителями %2F. Однако это всё равно позволяет распознавать как (по какому из двух способов) сконфигурирован Битрикс привычно читая Forbidden.

В админку нас естесственно не пускают и попытка выйти за пределы приводит к сбросу соединения. Битрикс вообще пугливый.

Но мы пойдём другим путём.

Вот тебе бабушка тупая как пробка XSS.
Вот тебе дедушка инклюд файлов в тот же фрэйм (подгружаемый JS можно использовать дальше в URL).
Вот тебе внучка мой аватар. Для вставки кода, фильтр необходимо убедить что перед ним GIF 100x100 до 10Кб. Вот тебе жучка и премия рунета 2008 за вклад в развитие оного рунета. Не помню как зовут остальных героев сказки, поэтому засим остановимся.

Собственно мне с этих ребят смешно. И особо смешно. На фоне этого даже меркнет возможность регистрации с логином & nbsp; (пробел), & nbsp;& nbsp; (два пробела) и т.д. Эти люди научат вас безопасности, ага. ;)

Общеизвестно, что Битрикс хорош на сверхвысоких нагрузках и его используют такие высоконагруженные сайты как Эльдорадо, Cosmopolitan и PC Magazine и т.д., и т.п. Между тем имею давнее наблюдение, что чем более глобальный ресурс админится, тем более ушастые люди его админят.. =)

Расскажу немного о платформе 1C-Битрикс 7.x. Уверен, что пример выше должен однозначно доказывать, что безопасность 1С-Битрикса состоит в том что мало кто из простых людей его эксплуатировал и многих пугает уже само это слово. За Битриксом стойко закрепилась слава самой сложной CMS из существующих, которой надо учиться на специальных курсах. Тем более читателю будет интересно узнать, что за "ноу-хау", что за сверхсекретные технологии используются в данной разработке.

Начнём с технологии переноса пользователей между сайтами. В принципе, чтобы заюзать эти курсы, сейчас не требуется даже авторизация (аналогично справке выше), поэтому поделюсь ссылкой.

Итак: Каждая поставка 1С-Битрикс позволяет держать два сайта (можно докупить лицензии на увеличение их числа) для которых будет вести единая статистика, а пользователь зашедший на один из них - авторизован сразу на всех. Всё здорово, только как это достигается?

Каждый сайт Битрикса содержит набор IFRAME'ов (которые его безбожно тормозят, создавая Битриксу репутацию самой тормозной CMS), в каждом из которых вызывается скрипт http://доменное имя сайта/bitrix/spread.php с того домена на который необходимо установить cookie. Надо ли говорить как все мы любим устанавливать cookie? =)

В аргументах spread.php будет передана информация необходимая для установки cookie. Эта информация передается в зашифрованном виде и подписана зашифрованным лицензионным ключом этого портала. Собственно, все эти данные прекрасно снифиряться любым посетителем любого из сайтов, а расшифровка их необязательна так как мы можем просто захотеть "втереться" в доверие к 1С-Битриксу со своим сайтом.

Как это сделать? Ответ на этот вопрос мы найдём там же - в документации Битрикса. Цитирую:

Важно! Будьте внимательны при указании доменных имен сайта. Если на сайте используется технология cookies, то в случае некорректного указания доменных имен при просмотре пользователем страниц вашего сайта также будет выполняться обращение и к другому сайту (доменное имя которого указано по ошибке).

Если на сайте, доменное имя которого указано по ошибке, предусмотрен показ всплывающих окон, то посетителям вашего сайта также будет выполняться показ этих окон.

Например, если для сайта http://demo.bitrixsoft.com/ вместо demo.bitrixsoft.com указано demo.bitirxsoft.com, то в код страниц сайта http://demo.bitrixsoft.com/ будет добавлен код вида:



< iframe style="width:0px; height:0px; border: 0px" src="http://demo.bitirxsoft.com/bitrix/spread.php?
s=QklUUklYX1NNX0dVRVNUX0lEATk5NDgBMTE5MTU5NDU0OAEvAQECQklUUklYX1NNX0xBU1RfVklTSVQBMTAuMTAuMjAwNiAxODoy
OTowOAExMTkxNTk0NTQ4AS8BAQI%3D&k=9e8de698c64709edf2e76202279ce889" >



В результате посетителям сайта http://demo.bitrixsoft.com/ будет выполняться показ всплывающих окон сайта с доменным именем demo.bitirxsoft.com.

Оценили? А может ли защититься от этого владелец сайта на Битриксе? Цитирую документацию:

Каждое доменное имя является «маской», т.е. может включать субдомены. Например, по имени site.ru могут быть выбраны www.site.ru или www1.site.ru, а также my-site.ru. В данном случае site.ru частично входит в состав всех трех доменных имен.

Как мы видим ошибаться необязательно. Кто первый зарегестрирует besecuritylab.ru? ))

А дальше? А дальше Live HTTP Headers для Firefox нам поможет в изучении существующих сайтов на 1С-Битрикс 7.x Сайты сопряжённые (в рамках лицензии 1С-Битрикс и супер-айфреймовой-технологии) могут оказаться чёрным ходом. Для securitylab.ru таким сайтом является некий bsau.ru. Для остальных популярных сайтов на Битриксе найдите пары самостоятельно, узнаете много интересного.

Какой вывод надо сделать из уже изложенного? Ребята из 1С-Битрикс наплевательски относятся к целому ряду аспектов полагая что их безопасность дело рук самого пользователя. Открытость справки и других подобных разделов во всех известных мне интернетах, включая 1c-bitrix.ru - ничто иное как нежелание пользоваться средствами того же Apache для защиты директорий. Права же выставлены такими, какими их поставил инсталятор. Напоминаю, что Битриксы живут не только в *nix, но и под w2k/w2k3/w2k8. Собственно оттуда и приползли, имеют отдельную ветку для asp .net. Проблема эта тянется походу ещё с версий 4.x, в которых права были такие, что можно было просто читать логи не являясь админом.

По документации красной строкой проходит программирование (которое вообще-то должно быть чуждо пользователю CMS). Возвращаясь к документации, отсюда следует такой момент как написание индексного файла для переключения между открытыми сайтами на Битриксе по-образцу из документации силами самого пользователя. (!) Конечно, как правило эти файлы пишут внешние молодцы и проект на Битриксе стоит существенного капитала. Но! Часть клиентов 1С-Битрикс предпочитают сэкономить, а часть аутсорсеров-гастрабайтеров элементарно не умеет писать безопасный php. Я намекаю: значительная часть. Таким образом, именно индексные файлы и разного рода "перебрасывалки" с домена на домен оказываются бажными. Потому что действует человеческий фактор.

Разумеется, вся приведённая информация опубликована исключительно в ознакомительных целях. Ну и там, вишесы коллегам по HackAROUND. Спешал фо бисекьюр. )

[ 06.02.09 ] update @ Как и ожидалось. Securitylab и PC Magazine среагировали. Первые поменяли права на папку, вторые удалили её нафиг. 1C-Битрикс только что закрыл дыру на своём сайте - начал фильтровать аргумент, но права остались теми же. Что оставляет возможность узнавать комплектацию проинсталлированного Битрикса. Поскольку начали поступать сообщения, что ссылки в этой статье не работают: Причём, даже str0ke написал что он "не может это сделать". Да, они не работают. Специально для этих четателей: OK парни, у вас уязвимо ~10000-3 сайтов, например Cosmpolitan, Компьютерра, и т.д, и т.п.

Комментариев нет:

Отправить комментарий