Dec 04, 2008, 03:04 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
Search via SMF or Google: modx forums all of modxcms.com web
  MODxCMS.com   Forums   Help Login Register  
News:Read what MODx Developers say: MODx Dev. Blogs
Pages: [1]   Go Down
  Print  
Author Topic: [Tutorial] Как восстановить забытый пароль?  (Read 3439 times)
0 Members and 1 Guest are viewing this topic.
Fuzzy
Moderator
*****
Posts: 701



WWW
« on: Aug 13, 2007, 10:29 AM »

[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 и запускаем его на хостинге. В результате видим следующее:
Quote
Your password: password
Encoded password: 5f4dcc3b5aa765d61d8327deb882cf99
Строка Encoded password - вот во что превратится пароль password при шифровании алгоритмом MD5.

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

Данное руководство является необходимым дополнением к руководству Как разблокировать пользователей MODx?.

* pass.zip (0.23 KB - downloaded 195 times.)
Logged

aleksey.stepanov
Committed to MODx
*****
Posts: 1,098



« Reply #1 on: Aug 14, 2007, 08:02 AM »

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

при редактировании записи вбейте пароль таким какой он есть, а в поле функция выберети MD5
Logged

разработка под MODx любой сложности.
Fuzzy
Moderator
*****
Posts: 701



WWW
« Reply #2 on: Aug 14, 2007, 08:09 AM »

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

при редактировании записи вбейте пароль таким какой он есть, а в поле функция выберети MD5
Век живи - век учись Smiley Не знал, что есть такая возможность.. Тогда да, экскурс о системе авторизации скорее всего был излишним Smiley.
Logged

aleksey.stepanov
Committed to MODx
*****
Posts: 1,098



« Reply #3 on: Aug 14, 2007, 08:30 AM »

а вообще

Quote
update table_prefix_manager_users set password = md5('newpassword') where id=<user_id>
Logged

разработка под MODx любой сложности.
Segr
Full Member
***
Posts: 163


« Reply #4 on: Aug 14, 2007, 04:16 PM »

Плохо что хеш пароля хранится так, обработанный одним лишь md5
Logged
aleksey.stepanov
Committed to MODx
*****
Posts: 1,098



« Reply #5 on: Aug 14, 2007, 04:32 PM »

не вижу плохого.
Logged

разработка под MODx любой сложности.
Metaller
Committed to MODx
*****
Posts: 1,046



« Reply #6 on: Aug 14, 2007, 05:20 PM »

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

Подобрать пароль можно лишь перебором, что в случае стойкого пароля (вы ведь такие используете?) в любом случае достаточно длительное и геморойное занятие.
Logged

Segr
Full Member
***
Posts: 163


« Reply #7 on: Aug 15, 2007, 07:57 AM »

я не про подбор, а про то,  что чтобы его сменить нужно только доступ к базе. Это какие-то странные мысли не касающиеся конкретной   реализации...

Например, хеш  зависит не только от пароля пользователя, но и некоторой постоянно величины присущей только данному серверу. Тогда даже уперев базу нельзя будет с ней работать =) гоню?
Logged
aleksey.stepanov
Committed to MODx
*****
Posts: 1,098



« Reply #8 on: Aug 15, 2007, 08:53 AM »

теоретически не гон. но если уж человек имеет доступ к вашей базе, то уперев её и развернув у себя. его ничего не остановит вбить в пассворд свой пароль админа, от своей законно установленной системы. да и зачем ему доступ к системе через админку если он в базе как у себя дома. Smiley
Logged

разработка под MODx любой сложности.
Segr
Full Member
***
Posts: 163


« Reply #9 on: Aug 15, 2007, 12:28 PM »

Ну это как минимум избавит от подмены пароля через sql inject. Нам ведь чуть выше показали какой именно sql запрос надо выполнить чтобы подменить пароль.
Logged
antey
Sr. Member
****
Posts: 303


« Reply #10 on: Apr 02, 2008, 03:34 AM »

phpMyAdmin: окно ввода SQL
Code:
UPDATE modx_manager_users  SET username='псевдоним', password=md5('пароль') WHERE id=1;
Logged
Pages: [1]   Go Up
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP

Copyright © 2005-2008 MODxCMS, All rights reserved. Contact Us
Styles by ziworks.com

Powered by SMF 1.1.4 | SMF © 2005, Simple Machines LLC

Valid XHTML 1.0! Valid CSS!