Виртуальная машина битрикс vm 5. Виртуальная машина VMBitrix
1 февраля 2018 в 16:04Почему важно не откладывать установку и конфигурацию CMS Битрикс на базе «1C-Битрикс: Виртуальная машина»
Кто обронил перчатку?
Выполняя один из проектов по тестированию на проникновение, мы наткнулись на виртуалку на публичном IP-адресе Заказчика. Из набора открытых на хосте портов у нас появилось ощущение, что это Битрикс. По ссылке обсуждается назначение портов. Ниже список портов, которые открыты на ВМ «из коробки»:- 22/tcp
- 80/tcp
- 443/tcp
- 5223/tcp
- 8893/tcp
- 8894/tcp
Понятно, что когда-то администратор не завершил процедуру настройки сайта и ВМ 1С-Битрикс. Тут можно было бы вписать этот косяк в отчет (чтобы потом попытаться продать Заказчику систему мониторинга инфраструктуры, SIEM или что-то подобное) и пойти дальше. Но мы не из таких.
Человеческий фактор это или отсутствие контроля Заказчика за инфраструктурой – не так важно. Важно то, как эта ошибка может стать причиной взлома.
Привет дальним сайтам
Модуль restore.php помимо представления интерфейса выполняет функции по проверке и загрузке файлов, разворачиванию резервных копий сайта. Если выбрать загрузку файлов с локального диска, то ничего не мешает выбрать не резервную копию, а скажем загрузить скрипт phpinfo.php.И тут Битрикс дал течь. Мы ожидали, что сработает проверка файлов на стадии загрузки или пост-проверка содержимого файла. Не сработала…переданный файл оказался в домашней папке веб-приложения!
Стали разбираться что «под капотом» и почему скрипт загружает всё подряд? Для удовлетворения любопытства и для отчетности перед Заказчиком развернули в своей лабе «1С-Битрикс: Виртуальная машина» версии 7.2.
Первичная конфигурация сервера при подключении по SSH выполняется в два шага:
- Сменить пароль пользователя root
- Сменить пароль пользователя bitrix
Стали дальше копать в restore.php. Следующей была функция «Скачать резервную копию с дальнего сайта» («дальний сайт» - весьма своеобразный термин, но ладно). Этот скрипт не дает загрузить ничего кроме резервных копий. Мы заглянули в исходный код restore.php и нашли условие проверки загружаемого файла:
$f = fopen($_SERVER["DOCUMENT_ROOT"]."/".$arc_name, "rb");
$id = fread($f, 2);
fclose($f);
if ($id != chr(31).chr(139)) // not gzip
{
$s = filesize($_SERVER["DOCUMENT_ROOT"]."/".$arc_name);
if ($s%512 > 0) // not tar
{
unlink($_SERVER["DOCUMENT_ROOT"]."/".$arc_name);
$res = false;
}
}
Первое условие: если в начале файла не содержатся символы с кодом 0x1f и 0x8b таблицы ASCII+extended, то загружаемый файл не архив.gz.
Второе условие проверяет размер загружаемого файла: если значение не делится на 512 без остатка значит файл - это не tar-архив. На этом проверка заканчивается.
Выходит, что нужно обойти только первое условие. Ок! Взяли для тестов простой скрипт cmd.php (есть готовый от «The Dark Raver»). В cli системы передали символы-идентификаторов с содержимым файла cmd.php в новый файл под именем cmd_boom.php:
Echo -e "\x1f\x8b\n$(cat cmd.php)" > cmd_boom.php
С помощью утилиты xxd можно увидеть содержимое файла в виде hex-таблицы:
Cat cmd_boom.php | xxd
Вывод:
Всё, файл готов к загрузке на «дальний сервер». Загружаем cmd_boom.php на свой GitHub-репозиторий и вставляем URL скрипта на форме восстановления 1С-Битрикс. В результате после короткого созерцания прогресс-бара загрузки мы получили сообщение об ошибке:
Ну может файл удалился из домашней папки из-за ошибки? Какой смысл его хранить, если файл поломался в пути или неконсистентен? Но авторы скрипта restore.php, видимо, посчитали излишним очистку домашней директории сайта от мусора. Так, а что на счет загруженного шелла? Так вот же он, родной!
Теперь самое интересное. Нажав кнопку «Пропустить» и «Попробовать снова» на форме с сообщением об ошибке мы получили страницу с кнопкой «Удалить локальную резервную копию и служебные скрипты». Нажали – файлы удалились!
В результате домашняя директория будет очищена от скриптов restore.php, bitrixsetup.php и загруженного файла cmd_boom.php. После этого, сделать с сайтом решительного ничего нельзя - и резервная копия не восстановлена и к установке нового сайта не перейти.
Конечно же, можно было бы спрятать скрипт cmd.php в поддиректории или переименовать его в index.php. Мы остановились на достигнутом.
Есть отставить!
Мы доложили службе технической поддержки 1С-Битрикс о проблеме со скриптом restore.php, на что получили следующий ответ:«Говорить об уязвимостях в restore.php не имеет смысла, этот скрипт предназначен для разворачивания системы управления сайтом. Он по своему смыслу нужен для того, чтобы загрузить на сайт php-скрипты.»
Ну в общем все верно, мы успешно загрузили скрипты на «покинутый» сайт заказчика и получили локальный шелл.
Позиция технической поддержки ясна: «Не закончили конфигурацию сайта – вы сам себе злобный Буратина». Тикет был закрыт технической поддержкой без ответа от непосредственно разработчиков.
Выяснять, какое количество «брошенных» ВМ 1С-Битрикс, опубликованы в Интернет мы не стали, достаточно пары найденных по запросу «intitle:«Welcome!» intext:«Welcome to Bitrix Virtual Appliance»» в Google.
Эпилог
Не публикуйте ВМ 1С-Битрикс до того, как будет развернут сайт. Следите за ресурсами своей компании, опубликованных в Интернет. Заброшенные сайты - это почти всегда плохо. «1C-Битрикс: Виртуальная машина» специально сконфигурирована для быстрого исполнения программных продуктов «1С-Битрикс»: разворачивается за минуты и сразу же готова к работе! На виртуальную машину можно не только установить ознакомительные версии продуктов «1С-Битрикс», но и перенести свои, уже готовые проекты.
Дистрибутив выпущен под BitrixVM7.3.0. |
ZIP |
Виртуальная машина BitrixVM7.3.0 с объемом диска 20 Гб для VMWare | Скачать |
Виртуальная машина BitrixVM7.3.0 с объемом диска 20 Гб для VirtualBox | Скачать |
Виртуальная машина BitrixVM7.3.0 с объемом диска 20 Гб для HyperV | Скачать |
Виртуальная машина BitrixVM7.3.0 с объемом диска 20 Гб для OVA (Sphere and etc.) | Скачать |
«1С-Битрикс: Веб-окружение» - Linux
«1С-Битрикс»: Веб-окружение» - Linux
служит для быстрой и простой установки всего ПО, необходимого для работы продуктов и решений «1С-Битрикс» на Linux-платформах CentOS 6 (i386, x86_64) и CentOS 7 (x86_64).
Используя «1C-Битрикс: Виртуальная машина», вы экономите время и деньги : на развертывании и настройке сервера, на покупке необходимого оборудования, на обеспечении безопасности проекта. Виртуальную машину вы можете использовать бесплатно . Машина также доступна для аренды у хостеров по цене тарифа хостинга.
Amazon Elastic Compute Cloud (Amazon EC2)
Amazon EC2 - это веб-сервис, предоставляющий масштабируемые вычислительные мощности и созданный для быстрого и простого разворачивания веб-приложений на площадках (в облаках) Amazon. Специалистами «1С-Битрикс» подготовлены предконфигурированные образы BitrixVM (AMI-образы) для быстрого запуска приложений «1С-Битрикс» в Amazon EC2, которые включают:- CentOS 7.5
- NGINX + Apache2
- MySQL5 with InnoDB support
- Mail server agent
- A UNIX-like Control Menu with common tasks
- IP address via DHCP, or configured by Amazon Elastic IP
- HTTPS support
Список ami по регионам:
Регион | BitrixVM-7.3.0_CentOS7.5_x64_EBS | BitrixVM-7.3.0_CentOS7.5_x64_HVM_EBS |
---|---|---|
us-east-1 | ami-b8881ec7 | ami-c99701b6 |
us-west-1 | ami-a9d9c0c9 | ami-e5243d85 |
us-west-2 | ami-858dbdfc | ami-4b98ea33 |
eu-west-1 | ami-0f2a9476 | ami-c397a7ba |
ap-southeast-1 | ami-45417039 | ami-6d556411 |
ap-northeast-1 | ami-8d0ff8f2 | ami-f612e589 |
sa-east-1 | ami-ddacf0b1 | ami-41bfe32d |
eu-central-1 | ami-fedcf315 | ami-0ac3ece1 |
ap-southeast-2 | ami-8c8657ee |
Порядок установки
Порядок установки:
|
Скачать и установите VMWare Player - бесплатный продукт, работающий под любой ОС Windows или Linux. | |
|
Скачать и распаковать настроенную виртуальную машину BitrixVM. |
|
|
Запустить VMWare Player и в нем открыть файл BitrixVirtualAppliance.vmx из каталога, куда вы распаковали ее виртуальный образ. Если вы знакомы с VMWare, то возможно у вас есть серверные продукты этой компании, в которых вы без проблем запустите нашу виртуальную машину. |
|
|
Ответить на вопросы диалогов VMWare и перегрузить виртуальный сервер. | |
|
Откройте полученный IP-адрес в браузере. | |
Запустить мастер установки и настройки продуктов «1С-Битрикс», выполнить все шаги и приступить к работе! |
Скрипт BitrixSetup
В «1С-Битрикс: Виртуальная машина» встроен специальный скрипт BitrixSetup , с помощью которого можно загрузить дистрибутив пробной или коммерческой версии продукта с сайта www.1c-bitrix.ru непосредственно на ваш сайт, не скачивая файл на локальный компьютер.С помощью еще одного встроенного скрипта для восстановления резервных копий - restore.php - можно быстро переносить сайты между машинами, причем, без создания промежуточных файлов. Как это все происходит? Вы делаете резервную копию сайта средствами нашего продукта (Настройки-Инструменты-Резервное копирование), и в скрипте переноса (прямо в виртуальной машине) указываете имя файла и сайт. Система сама скопирует файл, распакует его и восстановит на Виртуальном сервере.
1 февраля 2018 в 16:04Почему важно не откладывать установку и конфигурацию CMS Битрикс на базе «1C-Битрикс: Виртуальная машина»
- Информационная безопасность
Кто обронил перчатку?
Выполняя один из проектов по тестированию на проникновение, мы наткнулись на виртуалку на публичном IP-адресе Заказчика. Из набора открытых на хосте портов у нас появилось ощущение, что это Битрикс. По ссылке обсуждается назначение портов. Ниже список портов, которые открыты на ВМ «из коробки»:- 22/tcp
- 80/tcp
- 443/tcp
- 5223/tcp
- 8893/tcp
- 8894/tcp
Понятно, что когда-то администратор не завершил процедуру настройки сайта и ВМ 1С-Битрикс. Тут можно было бы вписать этот косяк в отчет (чтобы потом попытаться продать Заказчику систему мониторинга инфраструктуры, SIEM или что-то подобное) и пойти дальше. Но мы не из таких.
Человеческий фактор это или отсутствие контроля Заказчика за инфраструктурой – не так важно. Важно то, как эта ошибка может стать причиной взлома.
Привет дальним сайтам
Модуль restore.php помимо представления интерфейса выполняет функции по проверке и загрузке файлов, разворачиванию резервных копий сайта. Если выбрать загрузку файлов с локального диска, то ничего не мешает выбрать не резервную копию, а скажем загрузить скрипт phpinfo.php.И тут Битрикс дал течь. Мы ожидали, что сработает проверка файлов на стадии загрузки или пост-проверка содержимого файла. Не сработала…переданный файл оказался в домашней папке веб-приложения!
Стали разбираться что «под капотом» и почему скрипт загружает всё подряд? Для удовлетворения любопытства и для отчетности перед Заказчиком развернули в своей лабе «1С-Битрикс: Виртуальная машина» версии 7.2.
Первичная конфигурация сервера при подключении по SSH выполняется в два шага:
- Сменить пароль пользователя root
- Сменить пароль пользователя bitrix
Стали дальше копать в restore.php. Следующей была функция «Скачать резервную копию с дальнего сайта» («дальний сайт» - весьма своеобразный термин, но ладно). Этот скрипт не дает загрузить ничего кроме резервных копий. Мы заглянули в исходный код restore.php и нашли условие проверки загружаемого файла:
$f = fopen($_SERVER["DOCUMENT_ROOT"]."/".$arc_name, "rb");
$id = fread($f, 2);
fclose($f);
if ($id != chr(31).chr(139)) // not gzip
{
$s = filesize($_SERVER["DOCUMENT_ROOT"]."/".$arc_name);
if ($s%512 > 0) // not tar
{
unlink($_SERVER["DOCUMENT_ROOT"]."/".$arc_name);
$res = false;
}
}
Первое условие: если в начале файла не содержатся символы с кодом 0x1f и 0x8b таблицы ASCII+extended, то загружаемый файл не архив.gz.
Второе условие проверяет размер загружаемого файла: если значение не делится на 512 без остатка значит файл - это не tar-архив. На этом проверка заканчивается.
Выходит, что нужно обойти только первое условие. Ок! Взяли для тестов простой скрипт cmd.php (есть готовый от «The Dark Raver»). В cli системы передали символы-идентификаторов с содержимым файла cmd.php в новый файл под именем cmd_boom.php:
Echo -e "\x1f\x8b\n$(cat cmd.php)" > cmd_boom.php
С помощью утилиты xxd можно увидеть содержимое файла в виде hex-таблицы:
Cat cmd_boom.php | xxd
Вывод:
Всё, файл готов к загрузке на «дальний сервер». Загружаем cmd_boom.php на свой GitHub-репозиторий и вставляем URL скрипта на форме восстановления 1С-Битрикс. В результате после короткого созерцания прогресс-бара загрузки мы получили сообщение об ошибке:
Ну может файл удалился из домашней папки из-за ошибки? Какой смысл его хранить, если файл поломался в пути или неконсистентен? Но авторы скрипта restore.php, видимо, посчитали излишним очистку домашней директории сайта от мусора. Так, а что на счет загруженного шелла? Так вот же он, родной!
Теперь самое интересное. Нажав кнопку «Пропустить» и «Попробовать снова» на форме с сообщением об ошибке мы получили страницу с кнопкой «Удалить локальную резервную копию и служебные скрипты». Нажали – файлы удалились!
В результате домашняя директория будет очищена от скриптов restore.php, bitrixsetup.php и загруженного файла cmd_boom.php. После этого, сделать с сайтом решительного ничего нельзя - и резервная копия не восстановлена и к установке нового сайта не перейти.
Конечно же, можно было бы спрятать скрипт cmd.php в поддиректории или переименовать его в index.php. Мы остановились на достигнутом.
Есть отставить!
Мы доложили службе технической поддержки 1С-Битрикс о проблеме со скриптом restore.php, на что получили следующий ответ:«Говорить об уязвимостях в restore.php не имеет смысла, этот скрипт предназначен для разворачивания системы управления сайтом. Он по своему смыслу нужен для того, чтобы загрузить на сайт php-скрипты.»
Ну в общем все верно, мы успешно загрузили скрипты на «покинутый» сайт заказчика и получили локальный шелл.
Позиция технической поддержки ясна: «Не закончили конфигурацию сайта – вы сам себе злобный Буратина». Тикет был закрыт технической поддержкой без ответа от непосредственно разработчиков.
Выяснять, какое количество «брошенных» ВМ 1С-Битрикс, опубликованы в Интернет мы не стали, достаточно пары найденных по запросу «intitle:«Welcome!» intext:«Welcome to Bitrix Virtual Appliance»» в Google.