Бизнес-приложения представляют собой привлекательную мишень для атак компьютерных злоумышленников. Намерения могут быть самые разные: промышленный шпионаж, нанесение финансовых и репутационных потерь, получение критичной информации для последующей продажи. Как правило, атаки на бизнес-приложения и системы являются целенаправленными и выполняются людьми весьма квалифицированными.
SAP NetWeaver Portal — основная точка входа в ERP-систему SAP для всех пользователей корпоративной сети. Портал обычно используется в качестве корпоративной площадки, где хранится и обрабатывается как открытая информация (включая новости компании, данные о работниках и т. д.), так и закрытые сведения (внутренние документы, инструкции и распоряжения). Кроме того, портал предоставляет пользователям необходимые инструменты, с помощью которых они могут выполнять свои повседневные задачи: проводить встречи и совещания, управлять другими пользователями, редактировать документы, работать с необходимыми таблицами и т. д.
Отличительная особенность SAP Portal состоит в том, что он связан практически со всеми остальными компонентами SAP, развернутыми в сети компании. Таким образом, компрометация SAP Portal приведет не только к компрометации всей обрабатываемой в нем информации, но и к превращению его в своеобразный плацдарм для дальнейших атак злоумышленника.
Многие пользователи пребывают в ложной уверенности в том, что ERP-система SAP недоступна из Интернета. Между тем доступ к SAP Portal зачастую можно получить из сети Интернет, используя, например, простой Google Dork inurl:/irj/portal, где можно найти большое количество SAP Portal, доступных для подключения.
Поисковик Shodan также позволяет легко обнаруживать доступные SAP Portal.
Популярность SAP NetWeaver Portal и его доступность из сети Интернет делают этот портал привлекательным объектом для атаки на компании разного масштаба и профиля. Рассмотрим SAP Portal более детально.
АРХИТЕКТУРА SAP NETWEAVER PORTAL
Архитектура SAP Portal представлена на рисунке ниже.
Как видно из схемы, основой системы является Web Application Server (SAP J2EE), в контексте которого работает портал. Сам же Portal представляет собой платформу для работы разного рода модулей, главными из которых являются iViews, приложения и Web-сервисы.
На схеме видно, что SAP Portal связан с базой данных, а также с множеством других компонентов и моделями SAP.
Получив общее представление об архитектуре портала, можно перейти к рассмотрению возможных векторов атак на него.
АТАКИ НА SAP NETWEAVER J2EE
SAP NetWeaver J2EE является основой SAP Portal, поэтому важно понять, как злоумышленник может скомпрометировать J2EE. Для этого необходимо разбираться в некоторых нюансах работы J2EE.
Доступ к приложениям, работающим в J2EE, определяется разработчиками этих приложений с помощью файла-дескриптора, который называется web.xml. Ниже представлен пример такого файла-дескриптора.
CriticalAction com.sap.admin.Critical.Action CriticalAction /admin/critical Restrictedaccess /admin/* GET administrator
Рассмотрим его подробнее.
Атака Verb Tampering. Наиболее важными тегами в файле-дескрипторе являются: servlet-name, определяющий имя сервлета; http-method, задающий HTTP-метод для доступа к сервлету; role-name, указывающй необходимую роль для доступа к сервлету. Таким образом, для доступа к сервлету CriticalAction пользователь должен отправить запрос GET и при этом обладать правами администратора.
Однако аутентификацию можно обойти: если пользователь сделает запрос, отличный от GET, то его роль проверяться не будет. Разработчики, как правило, ограничивают доступ к приложению для методов GET и POST, однако иногда забывают про метод HEAD. Последний аналогичен GET, за исключением одного отличия — ответ сервера содержит лишь заголовок. Таким образом, если злоумышленник найдет приложение, которому для работы не требуется подтверждения от сервера, он может попробовать воспользоваться данной ошибкой.
Например, сервлет CTC позволяет управлять пользователями в SAP Portal: создавать и удалять пользователей, перемещать их между группами. Таким образом, он является подходящим объектом для атаки, ведь при создании пользователя важно именно отправить запрос, а не получить ответ.
И хотя сервлет CTC предусматривает аутентификацию при использовании методов GET и POST, злоумышленник может получить административный доступ к ERP-системе, используя всего два запроса HEAD к SAP Portal:
- создаем нового пользователя blabla с паролем blabla
HEAD /ctc/ConfigServlet?param=com.sap.ctc.util.UserConfig;CREATEUSER;USERNAME=blabla,PASSWORD=blabla
- добавляем созданного пользователя в группу Administrators
HEAD /ctc/ConfigServlet?param=com.sap.ctc.util.UserConfig;ADD_USER_TO_GROUP;USERNAME=blabla,GROUPNAME=Administrators
Данный тип атаки называется Verb Tampering. Для защиты системы необходимо:
- установить SAP-ноты: 1503579, 1616259
- проверить все файлы web.xml (это можно сделать с помощью утилиты ERPScan WEB.XML checker).
Invoker Servlet. Взглянем на web.xml еще раз.
CriticalAction com.sap.admin.Critical.Action CriticalAction /admin/critical Restrictedaccess /admin/* GET HEAD administrator
Обратим внимание на еще один важный тег — url-pattern, описывающий URI, по которому будет предоставлен доступ к сервлету. Таким образом, отправив запрос GET по URI /admin/critical/CriticalAction, пользователь получит доступ к сервлету CriticalAction, если будет иметь роль администратора.
Однако и в данном случае злоумышленник может обойти аутентификацию и получить доступ к сервлету. Дело в том, что по умолчанию в SAP включен механизм InvokerServlet, который позволяет обращаться к сервлетам по специально сформированным ссылкам. Иначе говоря, злоумышленник имеет возможность обратиться к сервлету CriticalAction по URI /servlet/com.sap.admin.Critical.Action и получить доступ, не имея никаких прав, так как данный URI не соответствует указанному в url-pattern.
Для атаки на реальные ERP-системы SAP может использоваться все тот же сервлет CTC. Помимо управления пользователями, он позволяет выполнять команды ОС, на которой работает SAP Portal, например «создать пользователя».
/ctc/servlet/ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=[команда]
На рисунке показано выполнение команды ipconfig на сервере SAP Portal.
Для защиты системы необходимо:
- установить SAP-ноты: 1467771, 1445998;
- проверить все файлы web.xml (это можно сделать с помощью утилиты ERPScan WEB.XML checker).
Теперь перейдем к рассмотрению возможных атак непосредственно на портал.
ПРЯМЫЕ АТАКИ НА ПОРТАЛ
Security Zone. В Portal есть модуль, который называется Security Zone. Он служит дополнительным инструментом для конфигурирования доступа к программам портала (iViews). Зоны определяются для каждого приложения в файле-дескрипторе portalapps.xml и имеют такой критичный параметр, как Safety Level. Он отвечает за уровень доступа к приложению и предусматривает четыре уровня безопасности:
- No Safety
- Анонимным пользователям разрешается доступ к компонентам портала, определенным в зоне безопасности.
- Low Safety
- Необходимо быть хотя бы пользователем портала, чтобы получить доступ к его компонентам, определенным в зоне безопасности.
- Medium Safety
- Пользователь должен обладать правом доступа к компонентам портала, определенным в зоне безопасности, в соответствии со своей ролью.
- High Safety
- Пользователь должен обладать высокими административными правами, позволяющими иметь доступ к компонентам портала, определенным в зоне безопасности.
Разработчикам следует внимательно подходить к заданию Safety Levels, так как, если пользователь обращается, например, к iView по прямому URL:
/irj/servlet/prt/portal/prtroot/,
доступ к приложению будет проверяться только по результатам проверки Safety Level.
В SAP Portal был обнаружен ряд критичных приложений с Safety Level = No Safety. Для защиты системы необходимо проверить настройки Safety Level у приложений.
XSS. SAP Portal является Web-приложением, поэтому ему свойственны все характерные для Web-приложений уязвимости. Одной из них является межсайтовый скриптинг (XSS). Однако, в отличие от классических векторов для подобного рода атак, при атаке на портал злоумышленник может использовать особенности Portal — например, технологию EPCF, позволяющую получить доступ к данным пользователя через специальный JavaScript API.
Пример такой «зловредной» нагрузки:
Для защиты системы необходимо:
- установить SAP-ноту: 1656549.
Directory Traversal. Речь идет о еще одной классической атаке на Web-приложения. Однако и здесь имеется своя специфика — например, выход за пределы каталога осуществляется не традиционными символами /../, а! 252f..!252f, как в данной уязвимости:
/irj/servlet/prt/portal/prteventname/nav/prteventdata/root!3d!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f..!252f../prtroot/com.sap.portal.support.browse.default
Для защиты системы необходимо:
- установить SAP-ноту: 1630293.
XML External Entity. Это классическая атака на XML-транспорт Web-приложений. XML является одним из основных транспортов в SAP NetWeaver Portal, поэтому потенциальный злоумышленник может пытаться скомпрометировать систему через него — в частности, получить административный доступ в SAP Portal.
В SAP есть специальное хранилище паролей SAP Security Storage, расположенное в файле SecStore.properties. Пароли зашифрованы, однако ключ для их расшифровки расположен в том же каталоге (в файле SecStore.key). Таким образом, если злоумышленник сумеет прочитать эти файлы, он сможет расшифровать пароли и получить административный доступ к порталу.
Эта атака осуществляется в несколько этапов:
- нахождение уязвимости, позволяющей читать файлы сервера SAP Portal;
- чтение файла SecStore.properties с зашифрованными паролями;
- чтение файла SecStore.key с ключами для расшифровки паролей;
- расшифровка административного пароля и получение доступа в SAP Portal.
В качестве уязвимости, позволяющей читать файлы, расположенные на сервере SAP Portal, можно использовать описанные ранее. Это может быть Directory Traversal, Command Execution.
Отдельно хотелось бы продемонстрировать внедрение внешних XML-модулей (XXE). Вот так выглядит типичный запрос к порталу в сниффере.
Как можно видеть, запрос POST содержит огромное количество параметров. Если присмотреться, в одном из них указан XML.
Именно в него и попытаемся внедрять запрос, который вернет содержимое файлов SecStore.properties и SecStore.key.
На рисунке показано, как можно читать файлы с сервера SAP Portal, используя для этого уязвимость XXE.
После успешного прочтения файлов их можно расшифровать с помощью утилиты ERPScan SecStore descriptor.
Для этого запускаем SecStore_Cr.jar в том же каталоге, где находятся полученные с сервера файлы паролей и ключ, а затем указываем SID системы. В результате утилита отобразит расшифрованные пароли и другую служебную информацию.
Раскрытие информации. Вместе с SAP Portal поставляется множество сервисов, которые могут быть использованы злоумышленниками для получения информации при планировании атак на систему. Однако возможны и иные векторы развития событий — например, использование портала в качестве плацдарма для дальнейших действий. Здесь хранится множество документов, и при помощи простого механизма внутреннего поиска и запросов наподобие secret или password злоумышленник может узнать большое количество конфиденциальной информации.
ВЫВОДЫ
Популярность SAP NetWeaver Portal — одного из модулей системы SAP ERP — сделала его наиболее привлекательной мишенью для атак злоумышленников, стремящихся получить доступ к корпоративной информации. Именно поэтому требуется повышенное внимание к его безопасности как со стороны администраторов системы, так и разработчиков и даже простых пользователей.
В статье описаны не все возможные атаки на SAP Portal; самую актуальную информацию, связанную с безопасностью ERP-системы SAP, можно найти на сайте http://erpscan.com.
Дмитрий Частухин — директор департамента аудита SAP компании Digital Security. С ним можно связаться по адресу: d.chastuchin@erpscan.ru.