Численні уразливості в останніх версіях 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=ua" 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' або Сгоѕѕ-Origin Framing – в цій статті, як і в коментарях, ці питання обговорюватися не будуть, як і подальше обговорення конструкції повноцінної атаки.

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

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

Розбираючи інциденти, ми виявили вищеописані проблеми безпеки платформи 1С-Бітрікс.

Захист від вищеописаної XSS + CSRF атаки
Компанія Бітрікс не вітає модифікацію системних файлів платформи, тому єдиним варіантом захисту може стати обмеження доступу по IP до файлів, розташованим в директоріях /bitrix/admin/.

Розуміючи, що такий «радикальний» спосіб захисту може бути застосуємо далеко не до всіх сайтів, другим варіантом можна розглянути обмеження доступу до /bitrix/admin/. шляхом установки додаткової захищений пари за типом Basic Authentication

Висновок
Виявлена проблема – є найбільшою загрозою для сайтів, створених на платформі «1С-Бітрікс: Управління сайтом».

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

Експлуатація XSS атаки в зв'язці з CSRF дозволяє:

— змінювати будь-які облікові дані доступу користувачів сайту
— створювати нових користувачів сайту, з різними привілеями
— змінювати привілеї існуючих користувачів сайту

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

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

Розбиратися з наслідками злому завжди складніше і витратніше, ніж попередити його.

Важливо розуміти, що експерименти з безпекою чужих сайтів, не кажучи про експлуатації атаки в кримінальних цілях, може спричинити кримінальну відповідальність. Вся інформація за загрозу безпеці сайтів, в цьому пості, надана з метою підвищення загального рівня ІБ кінцевих продуктів на платформі 1C-Бітрікс.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.