On March 26, 2019 we launched new MODX Forums. Please join us at the new MODX Community Forums.
Subscribe: RSS
  • [Tutorial] Как восстановить забытый пароль в админпанели?

    Во-первых, никак...
    Дело в том, что ваш пароль система MODx хранит в базе данных в зашифрованном виде по специальному алгоритму шифрования MD5. Не вдаваясь особо в подробности, это достаточно устойчивый и мощный алгоритм, расшифровать который на сегодняшний день представляется нереальным, поэтому даже если данные из вашей базы данных попадут к злоумышленнику, то пароли администратора, редакторов и пользователей системы (если такие имеются) он получить не сможет.

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

    Чтобы продолжить, вам потребуется доступ к phpMyAdmin на хостинге, если его нет - спросите у Вашего хостинг-провайдера.

    Предупреждение: прежде всего сделайте копию Вашей базы данных, особенно той таблицы, с которой Вам нужно будет работать.

    • Откройте phpMyAdmin
    • Выберите свою базу данных из выпадающего списка, к примеру - modx
    • Теперь Вы должны увидеть список таблиц в левом меню phpMyAdmin
    • Найдите таблицу с названием "table_prefix_manager_users", где table_prefix_ - префикс таблиц, который Вы могли изменить при установке MODx на свой (например modx_manager_users), и нажмите на название данной таблицы
    • В правом окне сверху нажмите "Обзор" или "Browse"
    • Найдите логин своего пользователя из появившегося списка ниже и нажмите рядом на рисунке карандаша "Редактировать" или "Edit"
    • Среди появившихся полей найдите поле с названием "password", данное поле содержит набор числовых и буквенных символов; это как раз и является вашим зашифрованным забытым паролем
    Далее нам потребуется заменить текущий неизвестный пароль на какой-либо свой новый сложный пароль, например, password. smiley

    Однако просто заменив с помощью phpMyAdmin содержание поля password на свой пароль (например, password) и сохранив эти данные, мы не получим искомый результат. Чтобы понять, почему так происходит, необходимо чуть углубиться в описание системы авторизации:

    При регистрации нового пользователя, например, при установке системы, мы вводим желаемый логин и пароль к системе управления. MODx их запоминает и пароль сохраняет в зашифрованном виде. Когда мы вводим свой логин и пароль, система получает эти данные и пытается найти такой же логин пользователя в базе данных. Если он не найден, понятно, что система вас посылает.. попробовать другой логин smiley. Ну а если совпадение находится, то дальше система берет введеный пароль и преобразует его с помощью уже известного алгоритма шифрования MD5 (попутно отмечу, что алгоритмы бывают разные, просто в MODx используется именно этот).

    В результате такого преобразования получается строка с набором цифр и букв, который полностью отличается от введенного пароля. Далее система сравнивает полученную строку с зашифрованным паролем из базы данных, соответствующим введенному логину. Если две строки совпадают, - добро пожаловать в админпанель! А если нет.. ну на нет, и суда нет. smiley Не пустит тогда система в панель управления, короче говоря. А также запишет количество повторных неудачных вводов пароля и, если их станет больше трех, временно заблокирует данный логин.

    Итак, нам нужно знать не только новый пароль, но и его шифр. Проще простого! Скачиваем приложенный файл, распаковываем архив, берем файл pass.php и запускаем его на хостинге. В результате видим следующее:
    Your password: password
    Encoded password: 5f4dcc3b5aa765d61d8327deb882cf99
    Строка Encoded password - вот во что превратится пароль password при шифровании алгоритмом MD5.


    • Итак, вернемся к phpMyAdmin. У нас теперь имеется пароль password и его шифр 5f4dcc3b5aa765d61d8327deb882cf99
    • Скопируйте шифр пароля и вставьте его в поле password в phpMyAdmin
    • Сохраните новое значение в базе данных, нажав кнопку "Пошел" или "Go"
    • Выйдите из phpMyAdmin и попробуйте войти с новым паролем в менеджер MODx

    Данное руководство является необходимым дополнением к руководству Как разблокировать пользователей MODx?.
      Разработка сайтов и программных модулей на MODX.
      Опыт работы на MODx с 2005 года. Высокое качество.
      Компания Baltic Design Colors: http://www.bdcolors.ru.
    • Aleksey Stepanov Reply #2, 12 years ago
      зачем такие сложности?

      при редактировании записи вбейте пароль таким какой он есть, а в поле функция выберети MD5
        "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

        Не используйте Revo для "просто сайтов". Используйте Evo

        Who can defeat the Russian bear?
      • Quote from: aleksey.stepanov at Aug 14, 2007, 01:02 PM

        зачем такие сложности?

        при редактировании записи вбейте пароль таким какой он есть, а в поле функция выберети MD5
        Век живи - век учись smiley Не знал, что есть такая возможность.. Тогда да, экскурс о системе авторизации скорее всего был излишним smiley.
          Разработка сайтов и программных модулей на MODX.
          Опыт работы на MODx с 2005 года. Высокое качество.
          Компания Baltic Design Colors: http://www.bdcolors.ru.
        • Aleksey Stepanov Reply #4, 12 years ago
          а вообще


          update table_prefix_manager_users set password = md5(’newpassword’) where id=<user_id>
            "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

            Не используйте Revo для "просто сайтов". Используйте Evo

            Who can defeat the Russian bear?
          • Плохо что хеш пароля хранится так, обработанный одним лишь md5
            • Aleksey Stepanov Reply #6, 12 years ago
              не вижу плохого.
                "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

                Не используйте Revo для "просто сайтов". Используйте Evo

                Who can defeat the Russian bear?
              • Quote from: Segr at Aug 14, 2007, 09:16 PM

                Плохо что хеш пароля хранится так, обработанный одним лишь md5

                Подобрать пароль можно лишь перебором, что в случае стойкого пароля (вы ведь такие используете?) в любом случае достаточно длительное и геморойное занятие.
                  DirectResize 0.9 beta. PHPThumb, sets of configurations, configuration, binded to specific path. No backward compatibility. | DirectResize 0.9. PHPThumb, наборы параметров, параметры, привязанные к определенным путям. Без обратной совместимости.

                  Unfortunately, DirectResize project is closed. If you want to continue development, PM me for access to project page on Google Code. К сожалению, проект DirectResize закрыт. Если вы желаете продолжить разработки, обращайтесь через ПМ для получения доступа к репозиторию на Google Code.

                  [PLUGIN] DirectResize - as Maxigallery but for single images :: Download :: [url=http://modxcms.com/forums/index.php/topic,21490]
                • я не про подбор, а про то, что чтобы его сменить нужно только доступ к базе. Это какие-то странные мысли не касающиеся конкретной реализации...

                  Например, хеш зависит не только от пароля пользователя, но и некоторой постоянно величины присущей только данному серверу. Тогда даже уперев базу нельзя будет с ней работать =) гоню?
                  • Aleksey Stepanov Reply #9, 12 years ago
                    теоретически не гон. но если уж человек имеет доступ к вашей базе, то уперев её и развернув у себя. его ничего не остановит вбить в пассворд свой пароль админа, от своей законно установленной системы. да и зачем ему доступ к системе через админку если он в базе как у себя дома. smiley
                      "Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein."

                      Не используйте Revo для "просто сайтов". Используйте Evo

                      Who can defeat the Russian bear?
                    • Ну это как минимум избавит от подмены пароля через sql inject. Нам ведь чуть выше показали какой именно sql запрос надо выполнить чтобы подменить пароль.