Все статьи
Без рубрики 13 октября 2022 1 мин чтения

Битрикс. Восстановление доступа к сайту, через FTP/SSH.

В последнее время все чаще не отрабатывает стандартный скрипт авторизации под админом: А доступ к админке восстановить необходимо. Если остался доступ к сервер по SSH, мы можем сменить пароль у админа через консольную mysql, но это не удобно да и не каждый сможет. Учитывая, что пароль хранится в захешированном виде + bitrix используется не просто […]

В последнее время все чаще не отрабатывает стандартный скрипт авторизации под админом:

<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php"); 
global $USER; 
$USER->Authorize(1); 
@unlink(__FILE__); 
LocalRedirect("/bitrix/admin/"); 
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

А доступ к админке восстановить необходимо. Если остался доступ к сервер по SSH, мы можем сменить пароль у админа через консольную mysql, но это не удобно да и не каждый сможет. Учитывая, что пароль хранится в захешированном виде + bitrix используется не просто md5, а добавляет к нему так называемую «соль» — $salt = Random::getString(16, true);.

1 вариант: Метод Password::hash используется для хеширования пароля пользователя.

//    Bitrix\Main\Security\Password::hash()
//    /bitrix/modules/main/lib/security/password.php:82

    public static function hash($password, $salt = null): string
    {
        if(CRYPT_SHA512 == 1)
        {
            //new SHA-512 method
            if($salt === null)
            {
                $salt = Random::getString(16, true);
            }
            //by default rounds=5000
            return crypt($password, '$6$'.$salt.'$');
        }
        else
        {
            //old md5 method
            if($salt === null)
            {
                $salt = Random::getStringByAlphabet(8, Random::ALPHABET_ALL);
            }
            return $salt.md5($salt.$password);
        }
    }

Можно использовать его, затем полученный хеш подставить в колонку «PASSWORD» у необходимого пользователя в таблице b_user.

Для удобного доступа к таблицам БД пользователи хостинга могут использовать PHPmyadmin, на сервере с BitrixVM по умолчанию веб-морда для работы с БД не установлена. В качестве альтернативы можно использовать небольшой скрипт, под названием Adminer, его можно загрузить в корневую директорию сайта и затем открыть страницу в браузере, например «mysite.com/adminer.php». Данные для подключения к БД можно взять из файла DBconn.php в папке /bitrix/php_interface/.

2 вариант: Использовать API bitrix framework:

$user = new CUser;
$ID = '1';
$arFields = [
  "PASSWORD"          => "qwerty321!Bx",
  "CONFIRM_PASSWORD"  => "qwerty321!Bx",
  ];
$user->Update($ID, $arFields);
$strError .= $user->LAST_ERROR;
echo $strError;

Достаточно создать в корневой директории скрипт, поместив в него код, предложенный выше, предварительно заменив идентификатор пользователя и пароль на свои. Затем необходимо открыть скрипт в браузере.

Теги: #Bitrix #BitrixAPI #PHP