Множественные уязвимости в последних версиях CMS 1С-Битрикс. Видео атаки16.01.2017 11:48. Битрикс уязвимости 2017
Множественные уязвимости в последних версиях 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] |
10 | Дополнительные переменные | SETTINGS[FLASHVARS] |
11 | Дополнительные переменные Silverlight: | SETTINGS[SILVERVARS] |
Поле input, вариант проверки возможности эксплуатации XSS:
"><script>alert(document.cookie)</script>12 | Подпись при отсутствии значения: | SETTINGS[CAPTION_NO_VALUE] |
Предполагая вопрос по поводу получения данных «защищенной» 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〈=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=fdtc1nha7vd6fsgq9spuih4na0; 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" [email protected] -----------------------------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 токены) для этого запроса являются:В качестве примера, можно привести «тестирование» на XSS, вышеописанных полей.
"><script>alert(phpVars['bitrix_sessid'])</script>"><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 января 2017 года, уязвимости административного раздела 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 являются следующие поля формы:
N | Название поля | name |
1 | Номинал | RATE_CNT |
2 | Курс | RATE |
Видео по теме:
Видео лучше смотреть в «полный» экран.Вопросы по конструкции XSS атаки
Способов эксплуатаций XSS атак множество. Техники их проведения и конструкции подробно описаны во множестве статей, которые легко найти в Сети.Что касаемо предложенной атаки, то для ее успешной эксплуатации придется решить один вопрос с токеном sessid, защищающего форму. Этот вопрос решаем.
В качестве примера, для версий платформы, предлагаемых в виртуальной лаборатории 1С-Битрикс, это значение можно получить запросом: http://1028lab.bitrixlabs.ru/bitrix/components/bitrix/pull.request/ajax.php (1028lab.bitrixlabs.ru – новый адрес предоставленного к тестированию ресурса)
Ответ будет выглядеть следующим образом:
{'BITRIX_SESSID':'47f51fa0d098862e588033cdc8d39388','ERROR':'SESSION_ERROR'}
Существуют и иные способы получения этого токена. Все зависит от конкретного ресурса, сервера, его настроек и т.п.
Предвосхищая вопросы по 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. Хотя бы раз в год проводите аудит безопасности ваших интернет проектов, для предотвращения взлома и атак.Разбираться с последствиями взлома всегда сложнее и затратнее, чем предупредить его.
Внимание!
Компания 1С-Битрикс оперативно выпустила обновления, в которых устранена вышеописанная угроза безопасности.Настоятельно рекомендуем установить следующие модули:
- Главный модуль, v16.5.6, 2016–09–20
- Управление структурой, v16.5.5, 2016–09–20
- Валюты, v16.5.1, 2017–01–16
Важно понимать, что эксперименты с безопасностью чужих сайтов, не говоря о эксплуатации атаки в криминальных целях, может повлечь уголовную ответственность. Вся информация по угрозе безопасности сайтов, в этом посте, предоставлена с целью повышения общего уровня ИБ конечных продуктов на платформе 1C-Битрикс.
sohabr.net
Проверена безопасность кода (статический анализ уязвимостей)
19.02.2018Проходя монитор качества Вы не прошли тест "Проверена безопасность кода (статический анализ уязвимостей)", найдено столько потенциальных проблем.
Смотрим какие файлы с какими угрозами нашла система. Для этого нажимаем на кнопку "Подробный отчет" и в открывшемся окне, изучаем список уязвимостей.
Здесь указано в каком файле на какой строчке есть уязвимость. А справа кнопка вопроса, нажимая на которую Вам система подробно подскажет, как ее исправить.
В моем случае - это Межсайтовый скриптинг (XSS). В пояснении указано, что уязвимость возникает тогда, когда данные, принятые от пользователя, выводятся в браузер без надлежащей фильтрации. Уязвимость может быть использована для изменения вида HTML страниц уязвимого сайта в контексте браузера целевого пользователя, похищения COOKIE данных браузера целевого пользователя, с последующим внедрением в его сессию, под его учетной записью.Как защищаться, Использовать htmlspecialcharsbx.
Что такое htmlspecialcharsbx.
В PHP уже есть htmlspecialchars которая предназначена для преобразования спец символов в html-сущности. С выходом PHP версии 5.4 в этой функции поменялось значение третьего параметра по умолчанию. Третий параметр - это кодировка строки, которая по умолчанию стала кодировкой UTF-8.
Но в битрикс, если передавать строку с нелатинскими символами в иной кодировке, не передавая параметр кодировки, то функция возвращала пустую строку.
Поэтому разработчики добавили новую функцию под названием htmlspecialcharsbx в главный модуль начиная с версии с 12-й версии битрикса. Таким образом, если константа BX_UTF была определена перед обращением к функции, то будет использоваться кодировка UTF-8 в ином случае ISO-8859-1.
Как проверить определена константа BX_UTF?
Заходим в файл dbconn.php по пути <Ваш_сайт>/bitrix/php_interface/
Ее наличие показывает, что сайт работает в кодировке UTF-8.
Как исправить такую уязвимость.
В отчете написано, где она находится.
Открываем файлы из отчета и в каждом находим строку с уязвимостью.
У меня строка 38, а в 440 уже идет не защищенный вывод. Можно прописать функцию htmlspecialcharsbx или там или там.Я укажу на 38 строке.
И так в остальных файлах отчета. После снова запускаю данный тест на проверку уязвимостей.
Уязвимостей больше нет.
site-ontop.ru
Множественные уязвимости в последних версиях CMS 1С-Битрикс. Видео атаки
В своей работе по обеспечению ИБ сайтов, мы исследуем проблемы безопасности популярных в России систем управления веб-проектами. 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 атак обнаружены поля формы для создания типов данных «Видео» и «Список».
Форма:
Уязвимые поля для типа данных «Видео»Поле input, вариант проверки возможности эксплуатации XSS:
">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] |
10 | Дополнительные переменные | SETTINGS[FLASHVARS] |
11 | Дополнительные переменные Silverlight: | SETTINGS[SILVERVARS] |
Поле input, вариант проверки возможности эксплуатации XSS:
">12 | Подпись при отсутствии значения: | SETTINGS[CAPTION_NO_VALUE] |
Предполагая вопрос по поводу получения данных «защищенной» 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=fdtc1nha7vd6fsgq9spuih4na0; 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" [email protected] -----------------------------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, вышеописанных полей.
">">Для того, чтобы взломать сайт на 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 являются следующие поля формы:
N | Название поля | name |
1 | Номинал | RATE_CNT |
2 | Курс | RATE |
Видео по теме:
Видео лучше смотреть в «полный» экран.Вопросы по конструкции XSS атаки
Способов эксплуатаций XSS атак множество. Техники их проведения и конструкции подробно описаны во множестве статей, которые легко найти в Сети.Что касаемо предложенной атаки, то для ее успешной эксплуатации придется решить один вопрос с токеном sessid, защищающего форму. Этот вопрос решаем.
В качестве примера, для версий платформы, предлагаемых в виртуальной лаборатории 1С-Битрикс, это значение можно получить запросом: http://1028lab.bitrixlabs.ru/bitrix/components/bitrix/pull.request/ajax.php (1028lab.bitrixlabs.ru — новый адрес предоставленного к тестированию ресурса)
Ответ будет выглядеть следующим образом:
{'BITRIX_SESSID':'47f51fa0d098862e588033cdc8d39388','ERROR':'SESSION_ERROR'}
Существуют и иные способы получения этого токена. Все зависит от конкретного ресурса, сервера, его настроек и т.п.
Предвосхищая вопросы по 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-Битрикс.
pcnews.ru
Множественные уязвимости в последних версиях CMS 1С-Битрикс. Видео атаки
В своей работе по обеспечению ИБ сайтов, мы исследуем проблемы безопасности популярных в России систем управления веб-проектами. 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] |
10 | Дополнительные переменные | SETTINGS[FLASHVARS] |
11 | Дополнительные переменные Silverlight: | SETTINGS[SILVERVARS] |
12 | Подпись при отсутствии значения: | SETTINGS[CAPTION_NO_VALUE] |
Предполагая вопрос по поводу получения данных «защищенной» 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=fdtc1nha7vd6fsgq9spuih4na0; 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" [email protected] -----------------------------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> "><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 |
Видео по теме:
Видео лучше смотреть в «полный» экран.
Вопросы по конструкции XSS атаки
Способов эксплуатаций XSS атак множество. Техники их проведения и конструкции подробно описаны во множестве статей, которые легко найти в Сети.Что касаемо предложенной атаки, то для ее успешной эксплуатации придется решить один вопрос с токеном sessid, защищающего форму.
Этот вопрос решаем. В качестве примера, для версий платформы, предлагаемых в виртуальной лаборатории 1С-Битрикс, это значение можно получить запросом: http://1028lab.bitrixlabs.ru/bitrix/components/bitrix/pull.request/ajax.php (1028lab.bitrixlabs.ru – новый адрес предоставленного к тестированию ресурса)
Ответ будет выглядеть следующим образом: {'BITRIX_SESSID':'47f51fa0d098862e588033cdc8d39388','ERROR':'SESSION_ERROR'}
Существуют и иные способы получения этого токена. Все зависит от конкретного ресурса, сервера, его настроек и т.п. Предвосхищая вопросы по 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-Битрикс.
Показать текст
www.ucnews.ru
Описание уязвимости | Уязвимость модуля bitrix.mpbuilder системы управления веб-проектами 1С-Битрикс существует из-за недостаточного ограничения имени пути к каталогу. Эксплуатация уязвимости может позволить нарушителю, действующему удалённо, внедрить и открыть произвольный локальный файл путём добавления символов ".." к имени директории admin/bitrix.mpbuilder_step2.php |
Вендор | ООО «1С-Битрикс» |
Наименование ПО | 1С-Битрикс |
Версия ПО | |
Тип ПО | Прикладное ПО информационных систем |
Операционные системы и аппаратные платформы |
|
Тип ошибки | Неверное ограничение имени пути к каталогу с ограниченным доступом («Обход пути») |
Идентификатор типа ошибки | |
Класс уязвимости | Уязвимость кода |
Дата выявления | 17.12.2015 |
Базовый вектор уязвимости | |
Уровень опасности уязвимости | Высокий уровень опасности (базовая оценка CVSS 2.0 составляет 9) |
Возможные меры по устранению уязвимости | Обновление программного обеспечения до версии 1.0.12 или более новой |
Статус уязвимости | Подтверждена производителем |
Наличие эксплойта | Данные уточняются |
Способ эксплуатации | Данные уточняются |
Способ устранения | Данные уточняются |
Информация об устранении | Уязвимость устранена |
Ссылки на источники | |
Идентификаторы других систем описаний уязвимостей | |
Прочая информация | - |
bdu.fstec.ru
Множественные уязвимости в последних версиях CMS 1С-Битрикс с видео атаки. Каталог социальных сетей :: Будь в СЕТИ!
Для актуального на сегодня исследования безопасности, была выбрана демо версия интернет-магазина, работающего на CMS 1С-Битрикс.Исследование проводилось в виртуальной лаборатории 1С-Битрикс, предназначенной для онлайн тестирования функционала платформы.
Внимание! Данные материалы представлены исключительно в ознакомительных целях. Взлом и нарушение информационной целостности сторонних продуктов является уголовно наказуемым деянием.
Адрес лаборатории «1С-Битрикс: Управление сайтом»: . Не внося никаких изменений в процесс инсталляции, был «развернут» демо интернет-магазин, работающий под управлением 1С-Битрикс: Управление сайтом 16.5.4 по адресу:
Первым делом, было принято решение обновить решения до последней версии. После установки обновления (1С-Битрикс Решение «Современный интернет-магазин» версии 16.5.3), было начато исследование безопасности предложенного сайта.
Безопасность публичной части сайта «коробки» не вызывала нареканий и ранее, поэтому основное внимание было уделено административному разделу исследуемого сайта.
Множественные XSS
Наибольшее количество уязвимостей кода, позволяющих эксплуатацию непостоянных XSS атак были обнаружены в разделе «Дополнительные поля» административного раздела сайта:
Адрес:
В этом разделе, система предлагает создавать пользовательские поля для следующих типов данных: «Видео», «Привязка к элементам highload-блоков», «Строка», «Целое число», «Число», «Дата со временем», «Дата», «Да/Нет», «Файл», «Список», «Привязка к разделам инф. блоков», «Привязка к элементам инф. блоков», «Шаблон», «Опрос», «Содержимое ссылки».
Уязвимыми для XSS атак обнаружены поля формы для создания типов данных «Видео» и «Список».
Форма:
Уязвимые поля для типа данных «Видео»
Поле input, вариант проверки возможности эксплуатации XSS:
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 (скрытое поле) SETTINGS[SKIN]
Поле textarea, вариант проверки возможности эксплуатации XSS:
10 Дополнительные переменные SETTINGS[FLASHVARS] 11 Дополнительные переменные Silverlight: SETTINGS[SILVERVARS]
Уязвимое поле для типа данных «Список»
Поле input, вариант проверки возможности эксплуатации XSS:
12 Подпись при отсутствии значения: SETTINGS[CAPTION_NO_VALUE]
На действия администраторов сайта (входящих в группу «Администраторы [1]») фильтр проактивной защиты Битрикс не распространяется, поэтому эксплуатация XSS атаки возможна без каких-либо ограничений.
Предполагая вопрос по поводу получения данных «защищенной» http-only cookie PHPSESSID: данные этой cookie не требуется для успешной эксплуатации атаки. Приведенный ниже пример успешной эксплуатации связки XSS + CSRF на «1С-Битрикс: Управление сайтом» подтверждает факт того, что использование http-only cookie нельзя рассматривать как полноценную защиту от XSS атак.
Эксплуатация CSRF атаки.
В процессе проведенного исследования, мы обратили внимание на возможность получения CSRF токенов, в разделе настроек пользователей (в т.ч. администраторов) системы:
Адрес сайта: (на момент тестирования) . К примеру, в случае смены пароля, или каких иных учетных данных администратора, данные отправляются на обработчик следующим образом:
Единственными валидируемыми данными (полагаю, что это и есть CSRF токены) для этого запроса являются:
«autosave_id» и «sessid», которые элементарно получить с помощью JS:
В качестве примера, можно привести «тестирование» на XSS, вышеописанных полей.
Для того, чтобы взломать сайт на CMS 1С-Битрикс, эксплуатируя XSS+CSRF, достаточно сделать вектором атаки запрос, который, к примеру, изменит учетные данные доступа администратора сайта, или добавит нового, созданного атакующим.
Для подтверждения вышеописанного способа атаки на сайт, мы создали «боевой» JS скрипт, эксплуатирующий недостатки в разработке системы, и протестировали его работоспособность атаки на практике, в виртуальной лаборатории 1С-Битрикс.
Скрипт успешно «отработал», поставленную перед ним задачу. Итогом работы стала смена имя пользователя, пароля и почты администратора сайта. Авторизация в административной части «нового» администратора прошла успешно.
Вектором атаки является обычный POST XMLHttpRequest к /bitrix/admin/user_edit.php.
По понятным причинам, POC по эксплуатации вышеописанной техники атак на сайты, работающих под управлением «1С-Битрикс: Управление сайтом» в статье предоставлен не будет.
Вся информация по вышеописанной проблеме безопасности (включая вектор атаки) была передана в компанию Битрикс 19 сентября 2016 года. На 16 января 2017 года, уязвимости административного раздела CMS 1С-Битрикс версии 16.5.4 не устранены.
Дополнение:
На сегодняшний день, виртуальная лаборатория 1С-Битрикс предлагает к тестированию решения на CMS 1С-Битрикс 16.5.4. Ядро платформы в виртуальной лаборатории 1С-Битрикс, путем нехитрых манипуляций, можно обновить до версии 16.5.8.
В редакции 1С-Битрикс: Управление сайтом 16.5.8 вышеописанные XSS устранены, но проблемы безопасности, особенно в плане эксплуатации CSRF атаки, остались прежними. Проблемы с XSS также никуда не делись.
К примеру, эксплуатация вышеописанной угрозы возможна через уязвимые поля раздела: «Создать курс валют» -> «Настройки курса» по адресу:
Уязвимыми к XSS являются следующие поля формы:
N Название поля name 1 Номинал RATE_CNT 2 Курс RATE
Реализация самой атаки в реакции 1С-Битрикс: Управление сайтом 16.5.8 осталась прежней.
Видео по теме:
keep-intouch.ru
Хабрахабр
В своей работе по обеспечению ИБ сайтов, мы исследуем проблемы безопасности популярных в России систем управления веб-проектами. 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] |
10 | Дополнительные переменные | SETTINGS[FLASHVARS] |
11 | Дополнительные переменные Silverlight: | SETTINGS[SILVERVARS] |
Поле input, вариант проверки возможности эксплуатации XSS:
"><script>alert(document.cookie)</script>12 | Подпись при отсутствии значения: | SETTINGS[CAPTION_NO_VALUE] |
Предполагая вопрос по поводу получения данных «защищенной» 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=fdtc1nha7vd6fsgq9spuih4na0; 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" [email protected] -----------------------------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>"><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 |
Видео по теме:
Видео лучше смотреть в «полный» экран.Вопросы по конструкции XSS атаки
Способов эксплуатаций XSS атак множество. Техники их проведения и конструкции подробно описаны во множестве статей, которые легко найти в Сети.Что касаемо предложенной атаки, то для ее успешной эксплуатации придется решить один вопрос с токеном sessid, защищающего форму. Этот вопрос решаем.
В качестве примера, для версий платформы, предлагаемых в виртуальной лаборатории 1С-Битрикс, это значение можно получить запросом: http://1028lab.bitrixlabs.ru/bitrix/components/bitrix/pull.request/ajax.php (1028lab.bitrixlabs.ru – новый адрес предоставленного к тестированию ресурса)
Ответ будет выглядеть следующим образом:
{'BITRIX_SESSID':'47f51fa0d098862e588033cdc8d39388','ERROR':'SESSION_ERROR'}
Существуют и иные способы получения этого токена. Все зависит от конкретного ресурса, сервера, его настроек и т.п.
Предвосхищая вопросы по 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-Битрикс.
habrahabr.net