Выложу поновее.
Стать админом на CuteNews 1.4.6
Нужно: акк с правами journalist (журналист) и выше, или акк с доступом на сохранение настроек, знать логин админа.
Если разобрать файл inc/options.mdu то увидим в нём такой кусок кода:
Код:
foreach($old_user_db as $old_user_db_line){
$old_user_db_arr = explode("|", $old_user_db_line);
if(strtolower($username) != strtolower($old_user_db_arr[2])){
fwrite($new_user_db,"$old_user_db_line");
}
else{
if($editpassword != ""){
$old_user_db_arr[3] = md5($editpassword);
if($config_use_cookies == TRUE){ setcookie("md5_password", $old_user_db_arr[3]); }
$_SESSION['md5_password'] = $old_user_db_arr[3];
}
fwrite($new_user_db,"$old_user_db_arr[0]|$old_user_db_arr[1]|$old_user_db_arr[2]|$old_user_db_arr[3]|$editnickname|$editmail|$old_user_db_arr[6]|$edithidemail|$change_avatar|$old_user_db_arr[9]||\n");
$personal_success = TRUE;
}
}
Допустим на сайте есть админ с логином admin регистрируем пользователя ADMin (он сохраняется именно в таком виде), заходим под ним (с учётом регистра) - и... мы не более чем обычные пользователи, при проверке логина и пароля всё норм, но теперь идем в личные настройки и меняем пароль (не важно на какой). Из-за того что в коде стоит
Код:
strtolower($username) != strtolower($old_user_db_arr[2])
, то пароль поменяется для всех с ником admin не зависимо от регистра.
Разлогиниваемся и логинимся, только теперь логин пишем не ADMin, а admin и тот новый пароль, который поставили при смене и получаем права админа.
Внимание: учитывайте, что после всех этих действий админ не сможет зайти под своим аккаунтом - пароль, почта и т.д. - всё это поменяется. Единственное что можно сделать - это заранее запомнить почтовый адрес и уже с шелла, удалив нового админа (а палиться ни к чему), поставить старую почту настоящему админу.
Можно и не менять пароль админу, а изменить только почтовый ящик, для этого при редактирование данных пишем нужный нам email, далее разлогиниваемся и делаем восстановление пароля на email.
В результате чего на почту придёт линк подтверждения смены пароля, по нему не переходим, а берём из него хеш админа.
Код:
Код:
if($user_arr[2] == $user and $user_arr[5] == $email){ $sstring = "${user_arr[0]}${user_arr[3]}"; $found = TRUE; break;}
Пароль в чистом виде не нужен, хеша достаточно для авторизации - запихиваем его в куки и получаем акк админа.
© Grey
 |
Цитата: |
 |
|
|
|
|
|
|
|
Нужна возможность сохранять настройки, а такие права начинаются с journalist, |
|
 |
|
 |
|
Как заметили умные люди:
"ну вообще они (права journalist) судя по описаю двига должны быть у всех"
Код:
Commenters - when users from this level login, they are allowed only to change their passwords.
Я думаю что дальше делать Вы знаете)