пятница, 10 октября 2008 г.

среда, 8 октября 2008 г.

Как попасть туда, куда не пускают

Ссылка на статью
Бывают такие ситуации, когда у Вас оказывается система, в которую Вы не можете войти, так как не знаете ни одну комбинацию пользователь/пароль в один или во все манданты системы.


Для выхода из таких ситуаций SAP придумал пользователя 'SAP*' (sapstar). Итак, последовательность взлома системы:
  1. Если у Вас есть доступ в один из мандантов, входите в него и через RZ11 проверяете значение параметра инстанции login/no_automatic_user_sapstar. Значение по умолчанию для версий системы до NetWeaver 7.0 - 0, а начиная с этой версии - 1. Для нашего плана необходимо выставить в 0. Поэтому, если Вы в системе, то через RZ10 в профиле инстанции выставляете этот параметр в 0. А если доступа в систему нет, то на уровне OS текстовым редактором в профиле инстанции меняем значение параметра. После этого перезагружаем SAP-инстанцию.
  2. Если знаете пароль пользователя system для ORACLE, то входите в ORACLE удаленно. А если не знаете, то подключаетесь локально через SQLPlus (sqlplus /nolog; connect /as sysdba). Далее даём команду
    select * from <DBSchemaOwner>.USR02 where BNAME='SAP*';
    DBSchemaOwner-а можно посмотреть через меню "Система -> Статус". Для 4.6С это обычно SAPR3, начиная с 4.7 - SAP<SID>. В результатах работы запроса можно увидеть в каких мандантах системы есть пользователь SAP*.
  3. Теперь SQL-запросом необходимо удалить пользователя из нужного манданта:
    delete * from <DBSchemaOwner>.USR02 where BNAME='SAP*' AND MANDT='<number>';
    Можно удалить пользователя SAP* из всех мандантов одним SQL-запросом, тогда просто не указываете MANDT в условии where.
  4. Теперь в мандант системы можно войти виртуальным пользователем SAP* с паролем PASS. Из под этого пользователя можно создать своего и работать.
  5. Для закрытия 'дыры' необходимо выставить параметр инстанции login/no_automatic_user_sapstar в 1, перезагрузить инстанцию и создать пользователя SAP* со своим паролем.