Множественные уязвимости в последних версиях CMS 1С-Битрикс. Видео атаки

в 7:32, , рубрики: 1c-bitrix, 1c-битрикс, 1С-Битрикс, cms, web-разработка, информационная безопасность, Программирование, Разработка веб-сайтов, хакерская атака, хакерство

В своей работе по обеспечению ИБ сайтов, мы исследуем проблемы безопасности популярных в России систем управления веб-проектами. CMS 1С-Битрикс – является лидером в этой области, поэтому этой системе уделяется повышенное внимание.

Для актуального на сегодня исследования безопасности, была выбрана демо версия интернет-магазина, работающего на CMS 1С-Битрикс.

Исследование проводилось в виртуальной лаборатории 1С-Битрикс, предназначенной для онлайн тестирования функционала платформы.

Адрес лаборатории «1С-Битрикс: Управление сайтом»: http://bitrixlabs.ru. Не внося никаких изменений в процесс инсталляции, был «развернут» демо интернет-магазин, работающий под управлением 1С-Битрикс: Управление сайтом 16.5.4 по адресу:
http://1071lab.bitrixlabs.ru/

Первым делом, было принято решение обновить решения до последней версии. После установки обновления (1С-Битрикс Решение «Современный интернет-магазин» версии 16.5.3), было начато исследование безопасности предложенного сайта.

Безопасность публичной части сайта «коробки» не вызывала нареканий и ранее, поэтому основное внимание было уделено административному разделу исследуемого сайта.

Множественные XSS

Наибольшее количество уязвимостей кода, позволяющих эксплуатацию непостоянных XSS атак были обнаружены в разделе «Дополнительные поля» административного раздела сайта:

Рабочий стол → Настройки → Пользователи → Список пользователей → Дополнительные поля → Настройки поля

Адрес:

http://1071lab.bitrixlabs.ru/bitrix/admin/userfield_edit.php

В этом разделе, система предлагает создавать пользовательские поля для следующих типов данных: «Видео», «Привязка к элементам highload-блоков», «Строка», «Целое число», «Число», «Дата со временем», «Дата», «Да/Нет», «Файл», «Список», «Привязка к разделам инф. блоков», «Привязка к элементам инф. блоков», «Шаблон», «Опрос», «Содержимое ссылки».

Уязвимыми для XSS атак обнаружены поля формы для создания типов данных «Видео» и «Список».

Форма:

<form method="POST" action="/bitrix/admin/userfield_edit.php?lang=ru" enctype="multipart/form-data" name="post_form">

Уязвимые поля для типа данных «Видео»

Поле input, вариант проверки возможности эксплуатации XSS:

"><script>alert(document.cookie)</script>

N Название поля name
1 Размер буфера в секундах SETTINGS[BUFFER_LENGTH]
2 Уровень громкости в процентах от максимального: SETTINGS[VOLUME]
3 Размеры (Ш х В, px) SETTINGS[WIDTH]
4 Размеры (Ш х В, px) SETTINGS[HEIGHT]
5 Цвет фона панели управления: SETTINGS[BGCOLOR]
6 Цвет элементов управления SETTINGS[COLOR]
7 Цвет эл. управления при наведении указателя мыши: SETTINGS[OVER_COLOR]
8 Цвет экрана: SETTINGS[SCREEN_COLOR]
9 id="bx_player_skin_input" (скрытое поле) SETTINGS[SKIN]

Поле textarea, вариант проверки возможности эксплуатации XSS:

</textarea><script>alert(document.cookie)</script>

10 Дополнительные переменные SETTINGS[FLASHVARS]
11 Дополнительные переменные Silverlight: SETTINGS[SILVERVARS]

Уязвимое поле для типа данных «Список»

Поле input, вариант проверки возможности эксплуатации XSS:

"><script>alert(document.cookie)</script>

12 Подпись при отсутствии значения: SETTINGS[CAPTION_NO_VALUE]

На действия администраторов сайта (входящих в группу «Администраторы [1]») фильтр проактивной защиты Битрикс не распространяется, поэтому эксплуатация XSS атаки возможна без каких-либо ограничений.

Предполагая вопрос по поводу получения данных «защищенной» http-only cookie PHPSESSID: данные этой cookie не требуется для успешной эксплуатации атаки. Приведенный ниже пример успешной эксплуатации связки XSS + CSRF на «1С-Битрикс: Управление сайтом» подтверждает факт того, что использование http-only cookie нельзя рассматривать как полноценную защиту от XSS атак.

Эксплуатация CSRF атаки.

В процессе проведенного исследования, мы обратили внимание на возможность получения CSRF токенов, в разделе настроек пользователей (в т.ч. администраторов) системы:

Административный раздел сайта: 
Рабочий стол → Настройки → Пользователи → Список пользователей

Адрес сайта: (на момент тестирования) http://1071lab.bitrixlabs.ru/bitrix/admin/user_edit.php?lang=ru&ID=1. К примеру, в случае смены пароля, или каких иных учетных данных администратора, данные отправляются на обработчик следующим образом:

POST /bitrix/admin/user_edit.php?ID=1&lang=ru HTTP/1.1
Host: 1071lab.bitrixlabs.ru
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://1071lab.bitrixlabs.ru/bitrix/admin/user_edit.php?lang=ru&ID=1
Cookie: PHPSESSID=fdtc1nha7vd6fsgq9spuih3na0; BITRIX_SM_SOUND_LOGIN_PLAYED=Y; BITRIX_SM_GUEST_ID=1; BITRIX_SM_LAST_VISIT=13.01.2017+08%3A14%3A53; BITRIX_SM_SALE_UID=a44218257184b130c660695f7132ea02; BITRIX_CONVERSION_CONTEXT_s1=%7B%22ID%22%3Anull%2C%22EXPIRE%22%3A1484351940%2C%22UNIQUE%22%3A%5B%22sale_payment_add_day%22%5D%7D
Connection: keep-alive
Content-Type: multipart/form-data; boundary=---------------------------81949277201
Content-Length: 9588

-----------------------------81949277201
Content-Disposition: form-data; name="autosave_id"

20247bf0249c12c0e2f15effa95c29d52
-----------------------------81949277201
Content-Disposition: form-data; name="TITLE"


-----------------------------81949277201
Content-Disposition: form-data; name="NAME"

Bitrix
-----------------------------81949277201
Content-Disposition: form-data; name="LAST_NAME"

Team
-----------------------------81949277201
Content-Disposition: form-data; name="SECOND_NAME"


-----------------------------81949277201
Content-Disposition: form-data; name="EMAIL"

admin@insafety.org
-----------------------------81949277201
Content-Disposition: form-data; name="LOGIN"

admin
-----------------------------81949277201
Content-Disposition: form-data; name="NEW_PASSWORD"

admin12345
-----------------------------81949277201
Content-Disposition: form-data; name="NEW_PASSWORD_CONFIRM"

admin12345
-----------------------------81949277201
Content-Disposition: form-data; name="XML_ID"

--- Множество различных данных ---

-----------------------------81949277201
Content-Disposition: form-data; name="sessid"

aa4c42ead8583afbd067d0409d1b25b0

Единственными валидируемыми данными (полагаю, что это и есть CSRF токены) для этого запроса являются:

«autosave_id» и «sessid», которые элементарно получить с помощью JS:

В качестве примера, можно привести «тестирование» на XSS, вышеописанных полей.

"><script>alert(phpVars['bitrix_sessid'])</script>

image

"><script>alert(document.getElementsByName('autosave_id')[0].value)</script>

Для того, чтобы взломать сайт на CMS 1С-Битрикс, эксплуатируя XSS+CSRF, достаточно сделать вектором атаки запрос, который, к примеру, изменит учетные данные доступа администратора сайта, или добавит нового, созданного атакующим.

Для подтверждения вышеописанного способа атаки на сайт, мы создали «боевой» JS скрипт, эксплуатирующий недостатки в разработке системы, и протестировали его работоспособность атаки на практике, в виртуальной лаборатории 1С-Битрикс.

Скрипт успешно «отработал», поставленную перед ним задачу. Итогом работы стала смена имя пользователя, пароля и почты администратора сайта. Авторизация в административной части «нового» администратора прошла успешно.

Вектором атаки является обычный POST XMLHttpRequest к /bitrix/admin/user_edit.php.

По понятным причинам, POC по эксплуатации вышеописанной техники атак на сайты, работающих под управлением «1С-Битрикс: Управление сайтом» в статье предоставлен не будет.

Вся информация по вышеописанной проблеме безопасности (включая вектор атаки) была передана в компанию Битрикс 19 сентября 2016 года. На 16 января 2016 года, уязвимости административного раздела CMS 1С-Битрикс версии 16.5.4 не устранены.

Дополнение:

На сегодняшний день, виртуальная лаборатория 1С-Битрикс предлагает к тестированию решения на CMS 1С-Битрикс 16.5.4. Ядро платформы в виртуальной лаборатории 1С-Битрикс, путем нехитрых манипуляций, можно обновить до версии 16.5.8.

В редакции 1С-Битрикс: Управление сайтом 16.5.8 вышеописанные XSS устранены, но проблемы безопасности, особенно в плане эксплуатации CSRF атаки, остались прежними. Проблемы с XSS также никуда не делись.

К примеру, эксплуатация вышеописанной угрозы возможна через уязвимые поля раздела: «Создать курс валют» → «Настройки курса» по адресу:
http://1071lab.bitrixlabs.ru/bitrix/admin/currency_rate_edit.php?lang=ru&filter=Y&set_filter=Y
Уязвимыми к XSS являются следующие поля формы:

<form method="POST" action="" name="rate_edit">

N Название поля name
1 Номинал RATE_CNT
2 Курс RATE

Реализация самой атаки в реакции 1С-Битрикс: Управление сайтом 16.5.8 осталась прежней.

Видео по теме:

Видео лучше смотреть в «полный» экран.

Вопросы по конструкции XSS атаки

Способов эксплуатаций XSS атак множество. Техники их проведения и конструкции подробно описаны во множестве статей, которые легко найти в Сети.

Что касаемо предложенной атаки, то для ее успешной эксплуатации придется решить один вопрос с токеном sessid, защищающего форму. Этот вопрос решаем.

В качестве примера, для версий платформы, предлагаемых в виртуальной лаборатории 1С-Битрикс, это значение можно получить запросом: http://1028lab.bitrixlabs.ru/bitrix/components/bitrix/pull.request/ajax.php (1028lab.bitrixlabs.ru – новый адрес предоставленного к тестированию ресурса)

Ответ будет выглядеть следующим образом:

{'BITRIX_SESSID':'47f51fa0d098862e588033cdc8d39388','ERROR':'SESSION_ERROR'}

image

Существуют и иные способы получения этого токена. Все зависит от конкретного ресурса, сервера, его настроек и т.п.

Предвосхищая вопросы по CORS 'Access-Control-Allow-Origin' или Сross-Origin Framing – в этой статье, как и в комментариях, эти вопросы обсуждаться не будут, как и дальнейшее обсуждение конструкции полноценной атаки.

Основной целью этой статьи является обеспечение безопасности сайтам на платформе 1C-Битрикс, а не создание полноценной инструкции по их взлому.

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

Разбирая инциденты, мы обнаружили вышеописанные проблемы безопасности платформы 1С-Битрикс.

Защита от вышеописанной XSS + CSRF атаки

Компания Битрикс не приветствует модификацию системных файлов платформы, поэтому единственным вариантом защиты, может стать ограничение доступа по IP к файлам, расположенным в директориях /bitrix/admin/.

Понимая, что такой «радикальный» способ защиты может быть применим далеко не ко всем сайтам, вторым вариантом можно рассмотреть ограничение доступа к /bitrix/admin/. путем установки дополнительной парольной пары по типу Basic Authentication

Заключение

Обнаруженная проблема – является максимальной угрозой для сайтов, созданных на платформе «1С-Битрикс: Управление сайтом».

Эксплуатация XSS атаки, в случае ее грамотного исполнения, гарантирует взлом практически любого сайта, работающего под управлением CMS 1С-Битрикс последних версий.

Эксплуатация XSS атаки в связке с CSRF позволяет:

— изменять любые учетные данные доступа пользователей сайта
— создавать новых пользователей сайта, с различными привилегиями
— изменять привилегии существующих пользователей сайта

В отдельных случаях, особенно для ресурсов с недостаточным уровнем защиты на уровне
сервера, возможна эксплуатация CSRF в чистом виде, без ХSS. Кроме того, вышеописанная атака делает обычную XSS (к примеру, в строке поиска, что часто встречается у сайтов на 1С-Битрикс) максимальной угрозой безопасности сайта.

Резюме

1. Не оставляйте открытым доступ к авторизации административного раздела сайта.
2. Обновляйте ядро платформы 1С-Битрикс, специалисты компании устраняют уязвимости по мере их обнаружения.
3. Хотя бы раз в год проводите аудит безопасности ваших интернет проектов, для предотвращения взлома и атак.

Разбираться с последствиями взлома всегда сложнее и затратнее, чем предупредить его.

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

Автор: inSafety

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js