Задать вопрос
I_CaR
@I_CaR
программист в прошлом.

Взлом пароля черз БД, хэш-пароля?

Есть два братских сайта на Yii2. В одном у меня полный доступ, во втором... человек уволился и всё(*?! "человек уволился" - интересный подход к редактированию на данном проекта стал, ликвидация организации и "человек уволился", вероятно в глазах редактора одно и тоже.).
1. Плавал, знаем - думал скопирую зашифрованный свой пароль в тот проект и вуаля... НО!
Но в первом (донор) структура: [username] - [password(шифрованный)]
Во втором (реципиент): [username] - [password_hash] - [auth_key] - [confirmation_token]
И всё... Весь мой демятилетней давности опыт "взлома" пошёл лесом.
Как быть? Пока создал пустого юзера, но ведь знаю, что хэш дешифровать не представляется возможным.
  • Вопрос задан
  • 264 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
SamDark
@SamDark
Yii2 core team
1. password_hash — это bcrypt формат. Если есть доступ к базе, то делаете нового юзера с паролем, забираете его хеш и просто перетираете им password_hash в базе у нужного юзера.
2. auth_key — это не релевантно.
3. confirmation_token — это не релевантно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Создаете юзера с известным паролем. Потом полученный хэш тупо вписываете нужному юзеру. Были времена, пароль рута некоего сервера mysql так ломал...
Ответ написан
Комментировать
I_CaR
@I_CaR Автор вопроса
программист в прошлом.
[РЕШЕНО!]
через Bcrypt Hash Generator.
Полезный опыт в копилку.
Ответ написан
Комментировать
@came_up
Создайте в приложении console контроллер с действием на создание пользователя. Например, такой UserController.php:

<?php
namespace console\controllers;

use common\models\User;
use yii\console\Controller;
use Yii;

class UserController extends Controller
{
    public function actionCreateAdmin($email, $password)
    {
        $user = new User();
        $user->username = 'admin';
        $user->email = $email;
        $user->setPassword($password);
        $user->generateAuthKey();
        $user->status = User::STATUS_ACTIVE;

        if ($user->save()) {
            $auth = Yii::$app->authManager;  // Если используем RBAC
            $roles = $auth->getRoles();
            foreach ($roles as $role) {
                $auth->assign($role, $user->id);
            }

            echo "Админ создан и все роли назначены!\nЛогин: $email\nПароль: $password\n";
        } else {
            echo "Ошибка: " . print_r($user->errors, true);
        }
    }
}

И потом в терминале пропишите php yii user/create-admin почта пароль. Таким образом создастся пользователь. Единственное, что добавьте полей $user->поле из модели User, которые требуются, например, там может быть поле is_admin: добавьте $user->is_admin = ...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы