Начало 2026-го подкинуло две CVE, которые стоит разобрать на стенде. CVE-2026-39337 - pre-auth RCE PHP-инъекция в ChurchCRM, CVSS 10.0 из 10.0. Без логина, без пароля, без какого-либо взаимодействия пользователя - просто шлёшь HTTP-запрос и получаешь шелл. CVE-2026-27681 - SQL-инъекция в SAP BPC и SAP BW, CVSS 9.9. Формально нужна учётка, но в SAP-среде это не барьер (об этом ниже). В этом лаб-гайде я разберу каждую уязвимость от первого HTTP-запроса до получения шелла - с конкретными командами, которые вы сможете воспроизвести на изолированном стенде.
Почему эти CVE заслуживают отдельного стенда
CMS и ERP-системы - хлеб с маслом корпоративного пентеста. ChurchCRM стоит на серверах тысяч организаций, а SAP BPC/BW управляет финансовым планированием в крупных компаниях. Обе уязвимости эксплуатируют ошибки, которые по данным исследования АБП2Б встречаются в 91% тестируемых систем: отсутствие санитизации пользовательского ввода и кривая обработка SQL-запросов. Казалось бы, 2026 год на дворе - а воз и ныне там.Вот что делает эту пару особенно интересной для лабораторного разбора:
| Характеристика | CVE-2026-39337 | CVE-2026-27681 |
|---|---|---|
| Продукт | ChurchCRM (до 7.1.0) | SAP BPC / SAP BW |
| Тип уязвимости | PHP Code Injection (CWE-94) | SQL Injection (CWE-89) |
| CVSS 3.1 | 10.0 CRITICAL | 9.9 CRITICAL |
| Аутентификация | Не требуется (PR:N) | Требуется минимальная (PR:L) |
| Scope Change | Да (S:C) | Да (S:C) |
| Вектор | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H | AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| Результат | Полный контроль над сервером | Чтение, изменение, удаление данных в БД |
CVE-2026-39337 - полностью pre-authentication. Ни логина, ни пароля, ни пользовательского взаимодействия. CVE-2026-27681 формально требует авторизацию (PR:L), но в SAP-системах учётки с минимальными привилегиями раздаются широкому кругу сотрудников - барьер входа фактически стремится к нулю. Обе уязвимости имеют флаг Scope Changed (S:C) - компрометация выходит за границы уязвимого компонента и затрагивает смежные системы.
По классификации MITRE ATT&CK обе относятся к технике Exploit Public-Facing Application (T1190, Initial Access) - атакующий получает первоначальный доступ через публично доступное веб-приложение.
CVE-2026-39337: PHP code injection в ChurchCRM без аутентификации
Техническая анатомия
Ссылка скрыта от гостей
Согласно NVD, уязвимость сидит в мастере первоначальной установки ChurchCRM. Переменная $dbPassword не проходит санитизацию перед записью в конфигурационный файл. Классический CWE-94 (Improper Control of Generation of Code): пользовательский ввод попадает в генерируемый PHP-код и выполняется при подключении конфигурации.Что происходит в трафике: setup wizard принимает параметры подключения к базе данных через HTTP-запрос - хост, имя базы, логин, пароль. Всё это записывается в PHP-файл конфигурации. Проблема в том, что значение пароля подставляется в PHP-строку без экранирования. Если атакующий пихает в поле пароля конструкцию, которая закрывает строку и добавляет произвольный PHP-код, - этот код выполнится при следующем подключении конфига.
Разработчики уже пытались закрыть этот вектор, но патч оказался дырявым - санитизировали часть спецсимволов, но не все. Классика жанра.
Почему это работает на pre-auth уровне: setup wizard в большинстве PHP CMS доступен без аутентификации by design - на момент первичной настройки учётных записей ещё не существует. Если инсталляция не завершена, или если можно инициировать повторную установку - любой сетевой атакующий получает доступ к этому эндпоинту.
Развёртывание уязвимой версии в Docker
Для воспроизведения нужна версия ChurchCRM ниже 7.1.0. Поднимаем изолированный стенд:
Bash:
# Создаём Docker Compose для лабораторного стенда
mkdir churchcrm-lab && cd churchcrm-lab
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: labpassword
MYSQL_DATABASE: churchcrm
ports:
- "3306:3306"
networks:
- lab-net
churchcrm:
# Официальный Docker-образ и Dockerfile отсутствуют в репозитории ChurchCRM.
# Необходимо создать Dockerfile вручную, например:
# git clone --branch v7.0.0 https://github.com/ChurchCRM/CRM.git
# cat > Dockerfile << 'DEOF'
# FROM php:8.1-apache
# RUN docker-php-ext-install mysqli pdo pdo_mysql && a2enmod rewrite
# COPY . /var/www/html/
# RUN chown -R www-data:www-data /var/www/html
# DEOF
# docker build -t churchcrm-lab:7.0.0 .
# Могут потребоваться дополнительные расширения (gd, xml, mbstring, curl, zip)
# и установка зависимостей через composer install. Точная процедура сборки
# зависит от версии - проверьте логи Apache на ошибки PHP-расширений.
image: churchcrm-lab:7.0.0 # локально собранная уязвимая версия < 7.1.0
ports:
- "8080:80"
depends_on:
- db
networks:
- lab-net
networks:
lab-net:
driver: bridge
EOF
# Запускаем стенд
docker-compose up -d
# Проверяем доступность
curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/setup/
docker exec churchcrm-lab rm /var/www/html/Include/Config.php) и перезагрузите контейнер.Пошаговая эксплуатация: от setup wizard до веб-шелла
📚 Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
📚 Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
📚 Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
CVE-2026-27681: SQL-инъекция в SAP BPC и SAP BW
Разбор CVSS-вектора и реальный импакт
CVE-2026-27681 затрагивает SAP Business Planning and Consolidation и SAP Business Warehouse - системы, через которые крупные корпорации ведут финансовое планирование и аналитику. Согласно NVD, уязвимость типа
Ссылка скрыта от гостей
(SQL Injection) позволяет аутентифицированному пользователю выполнять произвольные SQL-запросы для чтения, изменения и удаления данных в базе.CVSS-вектор по компонентам:
- AV:N - атака через сеть, физический доступ не нужен
- AC:L - низкая сложность, специальных условий нет
- PR:L - нужна учётка с минимальными привилегиями
- UI:N - взаимодействие пользователя не требуется
- S:C - Scope Changed, компрометация выходит за границы уязвимого компонента
- C:H/I:H/A:H - полный импакт на конфиденциальность, целостность и доступность
Для пентестера - золотая жила. SAP-системы хранят финансовые данные, персоналку сотрудников, стратегические планы. SQL-инъекция с полным доступом к БД - это Exploitation for Credential Access (T1212), если атакующий вытаскивает хеши паролей, и одновременно Data from Local System (T1005) для сбора бизнес-критичной информации.
Особенности SQL-инъекции в корпоративном софте
Хотя CVE-2026-27681 формально требует авторизацию, на практике это не серьёзный барьер. По данным пентестов АБП2Б, SAP-системы часто страдают от слабых паролей и дефолтных учёток. Получение авторизованной сессии через брутфорс популярных паролей - один из самых частых сценариев. Мой опыт на проектах с SAP первым делом пробую стандартные пароли для SAP*, DDIC, EARLYWATCH - и удивительно часто они работают.Для сравнения: CVE-2026-27179 в системе MajorDoMo (описана SentinelOne) - схожая по типу SQL-инъекция без аутентификации (CWE-89, CVSS 4.0: 8.8 - высокий импакт на конфиденциальность, но низкий на целостность и отсутствующий на доступность (VC:H/VI:L/VA:N); CVSS 4.0 использует иную методологию оценки, чем CVSS 3.1, применённая к остальным CVE в этой статье, и прямое сравнение числовых score между версиями некорректно), где параметр
$_GET['parent'] напрямую интерполируется в SQL-запросы. Техника эксплуатации - time-based blind SQLi - применима и к SAP-сценариям, хотя конкретные эндпоинты, синтаксис и уровень импакта будут отличаться.Методология тестирования SQL-инъекций в SAP-системах (на примере CVE-2026-27681)
SAP не раскрывает детали уязвимых эндпоинтов в публичных advisory - они доступны только клиентам через SAP Support Portal. Ниже - общая методология тестирования SQLi в SAP-системах, применимая после идентификации уязвимого параметра по SAP Security Note для CVE-2026-27681. Допустим, у нас уже есть валидная сессия в SAP BPC (получена через перебор паролей, фишинг или утёкшие учётные данные).Первый этап - перехватываем легитимный запрос к предположительно уязвимому эндпоинту через Burp Suite и сохраняем в файл:
Bash:
# Сохраняем перехваченный запрос из Burp Suite в файл
# Burp → правый клик на запросе → Copy to file → request.txt
# Пример содержимого request.txt (гипотетический эндпоинт для демонстрации):
# POST /sap/bpc/api/query HTTP/1.1
# Host: sap-target.corp.local
# Cookie: sap-usercontext=...; SAP_SESSIONID_BPC_100=...
# Content-Type: application/json
#
# {"filter":"value_to_test*"}
Bash:
# Базовое сканирование с автоматическим определением СУБД
python sqlmap.py -r request.txt --batch --level=3 --risk=2
# Если WAF блокирует стандартные payload - используем tamper-скрипты
python sqlmap.py -r request.txt --batch --level=5 --risk=3 \
--tamper=space2comment,between,randomcase
# Для time-based blind injection увеличиваем таймаут
python sqlmap.py -r request.txt --batch --technique=T --time-sec=10
Bash:
# Получаем список баз данных
python sqlmap.py -r request.txt --batch --dbs
# Получаем таблицы из целевой базы
python sqlmap.py -r request.txt --batch -D target_db --tables
# Извлекаем данные пользователей (хеши паролей)
python sqlmap.py -r request.txt --batch -D target_db -T users --dump
# Попытка получить OS shell (если СУБД позволяет)
python sqlmap.py -r request.txt --batch --os-shell
--tamper скриптов - это то, что отделяет «не нашёл» от «нашёл».Маппинг kill chain на MITRE ATT&CK
Полная цепочка атаки при комбинировании обоих типов уязвимостей в корпоративной среде:| Этап | Техника ATT&CK | Описание в контексте CVE |
|---|---|---|
| Initial Access | Exploit Public-Facing Application (T1190) | Эксплуатация CVE-2026-39337 через setup wizard ChurchCRM или CVE-2026-27681 через SAP BPC endpoint |
| Execution | Unix Shell (T1059.004) | Выполнение системных команд через PHP code injection |
| Persistence | Web Shell (T1505.003) | Размещение веб-шелла после успешной PHP-инъекции |
| Privilege Escalation | Exploitation for Privilege Escalation (T1068) | Повышение привилегий от www-data до root через локальные уязвимости |
| Credential Access | Exploitation for Credential Access (T1212) | Извлечение хешей паролей из БД через SQLi |
| Defense Evasion | Deobfuscate/Decode Files or Information (T1140) | Обфускация payload для обхода WAF |
| Discovery | File and Directory Discovery (T1083) | Разведка файловой системы после получения шелла |
| Collection | Data from Local System (T1005) | Сбор конфигурационных файлов, дампов БД |
Связка двух CVE в реальной кампании выглядит так: атакующий находит публично доступный ChurchCRM (или другую CMS) на периметре организации, эксплуатирует CVE-2026-39337 для получения шелла, затем через внутреннюю сеть добирается до SAP-сервера и применяет CVE-2026-27681 для доступа к финансовым данным. Scope Changed (S:C) в обоих CVE прямо говорит - импакт выходит далеко за пределы первоначально скомпрометированного сервиса.
Обнаружение атак: Sigma-правила и анализ логов
Детекция CVE-2026-39337 в веб-логах
PHP code injection в setup wizard оставляет характерные следы в access-логах. На что смотреть:- Обращения к
/setup/эндпоинтам с production-серверов (setup wizard не должен быть доступен после инсталляции - если он торчит наружу, это уже проблема) - POST-запросы к setup wizard с нетипично длинными значениями параметров
- PHP-конструкции (
system(,eval(,exec(,passthru() в параметрах запроса
YAML:
# Sigma-правило для детекции эксплуатации CVE-2026-39337
# Пример для демонстрации концепции
title: ChurchCRM Setup Wizard PHP Injection Attempt
id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
status: experimental
description: Detects attempts to exploit CVE-2026-39337 via PHP code injection in ChurchCRM setup wizard
logsource:
category: webserver
product: apache
detection:
selection_path:
cs-uri-stem|contains:
- '/setup/'
- '/Setup.php'
condition: selection_path
# Примечание: это правило детектирует сам факт обращения к setup wizard на production-сервере,
# что уже является аномалией. Payload CVE-2026-39337 передаётся через POST-body, которое
# стандартные логи Apache/Nginx НЕ записывают. Для детекции payload в POST-body
# используйте ModSecurity с SecRequestBodyAccess On и правилом на PHP-конструкции.
# Для детекции post-exploitation (GET-запросы с ?cmd=) создайте отдельное правило
# на наличие system(, eval(, exec( в cs-uri-query на любых эндпоинтах ChurchCRM.
level: critical
tags:
- attack.initial_access
- attack.t1190
- cve.2026.39337
Детекция SQL-инъекции в SAP-системах
Для CVE-2026-27681 и аналогичных SQLi-уязвимостей корпоративного софта нужен мониторинг на нескольких уровнях. Как описывает SentinelOne для аналогичной CVE-2026-27179 в MajorDoMo, ключевые индикаторы компрометации:- SQL-конструкции в URL-параметрах:
UNION,SELECT,SLEEP(),WAITFOR - Аномальное время ответа базы данных (характерно для time-based blind SQLi)
- Множественные похожие запросы с варьирующимися значениями
SLEEP()- типичный паттерн автоматизированной эксплуатации через sqlmap
YAML:
# Sigma-правило для детекции SQLi в SAP endpoints
# Пример для демонстрации концепции
title: SQL Injection Attempt Against SAP BPC/BW
id: b2c3d4e5-f6a7-8901-bcde-f12345678901
status: experimental
description: Detects post-authentication SQL injection patterns in requests to SAP BPC/BW endpoints (CVE-2026-27681 requires PR:L)
logsource:
category: webserver
detection:
selection_sap:
cs-uri-stem|contains:
- '/sap/bpc/'
- '/sap/bw/'
selection_sqli:
cs-uri-query|contains:
- 'UNION SELECT'
- 'UNION%20SELECT'
- 'SLEEP('
- 'WAITFOR DELAY'
- "' OR '1'='1"
- '1=1--'
condition: selection_sap and selection_sqli
# CVE-2026-27681 требует аутентификацию (PR:L); срабатывание указывает на компрометацию учётной записи + эксплуатацию SQLi.
level: critical
tags:
- attack.credential_access
- attack.t1212
- cve.2026.27681
INFORMATION_SCHEMA, pg_sleep, BENCHMARK).Рекомендации по защите корпоративных систем
Защита от CWE-94: PHP code injection
Для ChurchCRM и аналогичных PHP-приложений с мастерами установки:- Удалять или блокировать setup wizard после завершения инсталляции. На уровне веб-сервера:
Код:
# Apache: блокировка доступа к setup wizard
<Directory /var/www/html/setup>
Require all denied
</Directory>
NGINX:
# Nginx: аналогичная блокировка
location /setup/ {
deny all;
return 403;
}
- Обновить ChurchCRM до версии 7.1.0 или выше, где уязвимость исправлена.
- Использовать WAF-правила для блокировки PHP-конструкций в параметрах запросов. Как отмечают исследователи F5, сигнатуры для блокировки pre-auth RCE должны перехватывать не только конкретные CVE, но и целые классы атак.
Защита от CWE-89: SQL Injection в SAP
- Установить апрельские обновления безопасности SAP 2026 года, включающие исправление CVE-2026-27681. По данным Comss.ru, SAP выпустил патчи для критической SQL-инъекции в SAP BPC и SAP BW.
- Параметризованные запросы - единственный надёжный фикс SQLi на уровне кода. Как демонстрируют лабораторные работы DevSecOps Guides, замена конкатенации строк на параметризованные запросы полностью устраняет вектор атаки, независимо от сложности payload. Фикс известен с конца 1990-х. Что не мешает ему оставаться актуальным в 2026-м.
- Принцип минимальных привилегий для учётных записей БД: приложение SAP BPC не должно подключаться к базе под учёткой с правами на DROP или ALTER системных таблиц.
- Сетевая сегментация: SAP-серверы - во внутреннем сегменте с ограниченным доступом, а не на периметре сети.
Контекст: pre-auth RCE как системная проблема 2026 года
CVE-2026-39337 и CVE-2026-27681 - не единичные случаи. В 2026 году пошла волна критических уязвимостей в корпоративных системах с аналогичным паттерном:- CVE-2025-61757 - pre-auth RCE в Oracle Identity Manager (CVSS 9.8, CWE-306), затрагивает компонент REST WebServices. По данным F5 Security, эксплуатация предположительно включает обход аутентификации через matrix parameters (
;.wadlв URL) с последующей компиляцией Groovy-кода через аннотацию@ASTTest - CVE-2026-35616 - pre-auth RCE в FortiClient EMS 7.4.5–7.4.6 (CVSS 9.8, CWE-284), уже используется в реальных атаках
- CVE-2025-59287 - unauthenticated RCE в WSUS через небезопасную десериализацию (CVSS 9.8, CWE-502)
Как верно отмечают исследователи Hive Security, фикс для SQL-инъекции известен с конца 1990-х - разделение кода и данных через параметризованные запросы. Но legacy-код, ORM с
.raw() escape-хатчами, микросервисы без явного владельца и дедлайн-прессинг на разработчиков гарантируют, что эти уязвимости будут появляться в пентест-отчётах ещё много лет. На заборе написано «параметризуйте запросы» - а в продакшене по-прежнему конкатенация строк.Чеклист: что проверять при тестировании корпоративных систем
На основе разбора CVE-2026-39337 и CVE-2026-27681 - практический чеклист для пентеста корпоративных веб-приложений:- Setup / Install endpoints - проверить наличие доступных мастеров установки на production-серверах. Это первое, что я ищу при сканировании CMS - и вы удивитесь, как часто они торчат наружу.
- Конфигурационные файлы - проверить, пишутся ли пользовательские данные в PHP/Python/Ruby конфигурации без экранирования.
- SQL-инъекции в API - протестировать все параметры, включая JSON-тела запросов, заголовки Cookie и нестандартные HTTP-заголовки.
- Дефолтные учётные данные SAP - перед тестированием SQLi в SAP-системах проверить стандартные пароли для SAP*, DDIC, EARLYWATCH и других технических учётных записей.
- WAF bypass - при наличии WAF использовать sqlmap с
--tamperскриптами и ручную модификацию payload.
Последнее редактирование модератором: