[Решено] Не пускает в админку - Пустой пароль не допускается. Решено

  • 29 Ответов
  • 1325 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
Не могу войти в админку - Пустой пароль не допускается
Через фронт все нормально.
Версия Joomla 3.4.3

Пути к logs и tmp верные, права 755
В логах ошибок нет

В чем может быть дело?
« Последнее редактирование: 30.11.2015, 14:26:59 от b2z »

*

robert

  • Профи
  • ********
  • 4004
  • 371
Re: Пустой пароль не допускается
« Ответ #1 : 23.11.2015, 13:37:54 »
В чем, в чем, в том что пустой пароль не допускается, что за вопрос? Иначе ни о какой безопасности не может быть речи.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
Re: Пустой пароль не допускается
« Ответ #2 : 23.11.2015, 15:18:52 »
Логин и пароль вводятся, они правильные. Однако возникает такое сообщение. С теми же логин/паролем через фронт вхожу без проблем.
Я - супер администратор
Другие админы также не могут войти.
Проблема возникла, предполагаю, после обновления.
Расширений для закрытия админки не устанавливались.
Темы, связанные с данной проблемой, не дали решения. В частности, рецепт про права на logs и tmp  - выставлял 777, нет результата.

В консоли при отправке запроса вижу:
Request URL:http://site.ru/administrator/index.php
Request Method:POST
Status Code:303 See other
...
Form Data
username: **** (реальный логин)
passwd: **** (пароль)
lang:
option:com_login
task:login
return:aW5kZXgucGhw
b1bc4fd8f1b549b964e6e878084e3d27:1

в error.log ничего

Уже не знаю куда копать.
« Последнее редактирование: 23.11.2015, 15:36:08 от mocart »

*

b2z

  • Support Team
  • *****
  • 7450
  • 741
  • Разраблю понемногу

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
Откатился до последнего бекапа 3.4.1, смог войти, обновил сразу до 3.4.5 - вышел и зайти опять не могу

Warning
Empty password not allowed


в логах во время обновления:
PHP Warning:  require_once(1/platform.php) [<a href='function.require-once'>function.require-once</a>]: failed to open stream: No such file or directory in /home/n/*/*.ru/public_html/_NEW/libraries/import.legacy.php on line 42, referer: http://*.ru/_NEW/installation/index.php?view=finalise

PHP Fatal error:  require_once() [<a href='function.require'>function.require</a>]: Failed opening required '1/platform.php' (include_path='.:/usr/local/lib/php5:/usr/share/pear') in /home/n/*/*.ru/public_html/_NEW/libraries/import.legacy.php on line 42, referer: http://*.ru/_NEW/installation/index.php?view=finalise

PHP Fatal error:  Call to undefined method ContentViewArticle::close() in /home/n/*/*.ru/public_html/_NEW/libraries/legacy/application/application.php on line 409, referer: http://*.ru/_NEW/installation/index.php?view=finalise

Хотя, вроде как все обновилось, админка работала, я просто вышел

Спустя пару минут...
Перезалил на всякий пожарный все файлы из пакета Joomla_3.4.x_to_3.4.5-Stable-Patch_Package, вдруг чего не залилось, но это не дало результата
« Последнее редактирование: 24.11.2015, 16:25:56 от mocart »


*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
Восстановил, загрузил пакет Joomla_3.4.1_to_3.4.2-Stable-Patch_Package.zip через менеджер расширений, показало успешную установку, предложило обновляться дальше до 3.4.5 - не стал. Вышел из админки и войти после этого не могу опять :)
Опять же ошибок в error.log никаких. :( Только то же сообщение - Warning Empty password not allowed.

php 5.3.29
при восстановлении через Akeeba заметил что Register globals - нет
прописал в htaccess
php_flag register_globals on

Потом еще пробовал включить php 5.4 тоже самое всё
« Последнее редактирование: 25.11.2015, 00:17:07 от mocart »


*

robert

  • Профи
  • ********
  • 4004
  • 371
Хм, откройте /administrator/components/com_login/models/login.php. В самом начале есть функция protected function populateState(), в ней замените строку
Код: php-brief
$method = $input->getMethod();
на
Код: php-brief
$method = 'POST';
и проверьте.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
robert, всё также.
Включил еще отладку, показывает 9 запросов

Спойлер
[свернуть]

В консоли браузера также видно, что POST запрос с логином и паролем отправляется, но в ответ приходит 303

Ерунда какая-то...
Сам впервые с таким сталкиваюсь...
« Последнее редактирование: 25.11.2015, 00:40:14 от mocart »

*

SmokerMan

  • Профи
  • ********
  • 5329
  • 689
303 - это редиректится куда-то
либо сами что-то намудрили с защитаой админки, может плагин какой поставили или еще чего
или хостинг чего-то намудрил, как вариант для защиты от брута

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
303 - это редиректится куда-то
либо сами что-то намудрили с защитаой админки, может плагин какой поставили или еще чего
или хостинг чего-то намудрил, как вариант для защиты от брута
Само собой, если ввести неверный пароль, то тоже будет 303, разве нет?
Для защиты админки ничего не ставилось,htaccess из дистрибутива.
Прежде чем писать на форум, писал и звонил хостеру, тот божится, что ничего от брута не ставили, POST GET не блокируют

*

robert

  • Профи
  • ********
  • 4004
  • 371
Откройте /administrator/components/com_login/controller.php. В public function login() после
Код: php-brief
$credentials = $model->getState('credentials');
добавьте
Код: php-brief
if(empty($credentials['password'])){
$app->redirect('index.php','No password');
}else{
$app->redirect('index.php',$credentials['password']);
}
и попробуйте авторизоваться.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

SmokerMan

  • Профи
  • ********
  • 5329
  • 689
да тупанул, перепутал с 301 :)
это кэш
тогда проверить можно очень просто
1 в administrator/index.php в начале прописать
Код
<?php die('test'); ?>
если в админке вместо входа увидите эту надпись "test", смотрите что происходит дальше
2 в administrator/components/com_login/login.php
пропишите вначале тоже самое при нажатии на кнопку войти должна появиться та же надпись

если не увидели значит чего-то где кэшируется или что-то не так)

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
Откройте /administrator/components/com_login/controller.php. В public function login() после
Код: php-brief
$credentials = $model->getState('credentials');
добавьте
Код: php-brief
if(empty($credentials['password'])){
$app->redirect('index.php','No password');
}else{
$app->redirect('index.php',$credentials['password']);
}
и попробуйте авторизоваться.

Message
No password

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
да тупанул, перепутал с 301 :)
это кэш
тогда проверить можно очень просто
1 в administrator/index.php в начале прописать
Код
<?php die('test'); ?>
если в админке вместо входа увидите эту надпись "test", смотрите что происходит дальше
2 в administrator/components/com_login/login.php
пропишите вначале тоже самое при нажатии на кнопку войти должна появиться та же надпись

если не увидели значит чего-то где кэшируется или что-то не так)
1,2 вижу "test"

*

SmokerMan

  • Профи
  • ********
  • 5329
  • 689
а если тут administrator/components/com_login/login.php прописать
Код
<?php die( var_dump($_POST['passwd']) ); ?>
пароль выводиться после нажатия на войти?

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
а если тут administrator/components/com_login/login.php прописать
Код
<?php die( var_dump($_POST['passwd']) ); ?>
пароль выводиться после нажатия на войти?
Да, выводится мой пароль

*

robert

  • Профи
  • ********
  • 4004
  • 371
То же самое, но теперь после
Код: php-brief
$credentials = $model->getState('credentials');
добавьте
Код: php-brief
if(isset($_POST) && !empty($_POST)){
$app->redirect('index.php',$_POST['passwd']);
}else{
$app->redirect('index.php','No POST');
}
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

SmokerMan

  • Профи
  • ********
  • 5329
  • 689
тогда хз)
надо смотреть на месте
смотрите какие плагины были установлены системные или группы user до обновления или после, может какой-то плагин не совместим с последней версией
в общем причин может быть много)

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
robert, вывелся мой пароль, который я ввел

*

robert

  • Профи
  • ********
  • 4004
  • 371
Тогда, либо плагины какие-то, либо настройки сервера (случайно не nginx?). На локалке проверяли?
Хотя нет, старая версия работала же.

P.S. А если вместо
Код: php-brief
$credentials = $model->getState('credentials');
напрямую прописать
Код: php-brief
$credentials = array(
'username' => $_POST['username'],
'password' => $_POST['passwd'],
'secretkey' => $_POST['secretkey']
);
?
« Последнее редактирование: 25.11.2015, 01:21:59 от robert »
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
На локалке не проверял, на другом сервере тоже..
Версия базы данных   5.5.40-36.1
Кодировка базы данных   utf8_general_ci
Версия PHP   5.4.45
Веб-сервер   Apache/2.2.29
Интерфейс между веб-сервером и PHP   cgi-fcgi


Список всех плагинов
Спойлер
[свернуть]
И 2 компонента - com_rsform, com_akeeba, которые я пробовал также удалять перед обновлением и это ничего не дало (
« Последнее редактирование: 25.11.2015, 01:27:02 от mocart »

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
Тогда, либо плагины какие-то, либо настройки сервера (случайно не nginx?). На локалке проверяли?
Хотя нет, старая версия работала же.

P.S. А если вместо
Код: php-brief
$credentials = $model->getState('credentials');
напрямую прописать
Код: php-brief
$credentials = array(
'username' => $_POST['username'],
'password' => $_POST['passwd'],
'secretkey' => $_POST['secretkey']
);
?
Я успешно авторизовался :)

*

robert

  • Профи
  • ********
  • 4004
  • 371
Только это еще не все: вы только немного сузили круг, надо найти причину и вылечить, нельзя так оставлять. Почему-то модель не кладет данные в сессию.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
Я также пробовал очищать таблицу сессий в БД. После пробую авторизоваться - говорит ваша сессия истекла, введите заново логин и пароль. Заново ввожу и мне снова - Пустой пароль не допускается


Только это еще не все: вы только немного сузили круг, надо найти причину и вылечить, нельзя так оставлять. Почему-то модель не кладет данные в сессию.
Я уже рад :) Теперь согласен на что угодно, любые идеи, давайте доведем до конца.

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
robert, если оставить так, чем-то грозит?

*

frantzev.serezha

  • Новичок
  • *
  • 4
  • 0
robert, если оставить так, чем-то грозит?
грозит что возможен взлом твоего сайта, поскольку некоректно работает система, я уверен что тем самы на сайте есть уязвимость.

*

Tavol

  • Осваиваюсь на форуме
  • ***
  • 83
  • 3
Я бы на Вашем место рискнул бы установить чистую 3.4.5 и на нее прикрепить базу уже.
CMS Joomla? - Не, не слышал!

*

mocart

  • Осваиваюсь на форуме
  • ***
  • 112
  • 9
Проблема вроде бы решилась. Всё время перезаливал патч Joomla_3.4.x_to_3.4.5-Stable-Patch_Package по ftp, предполагая, что какие-то файлы во время автоматического обновления не обновлялись. Потом решил полный пакет установки Joomla_3.4.5-Stable-Full_Package распаковать в корень и авторизация стала проходить успешно. Других проблем не обнаружено пока.

Для информации: этот сайт был мигрирован в свое время с последней 2.5 до 3 версии стандартным инструментом обновления.

Всем спасибо!