[3.3] Upd von 2.0.20 -> 3.3.2 User-Login "falsches Passwort angegeben"

Fragen rund um die Installation, Administration und Benutzung von phpBB.
Forumsregeln
Bitte im Thementitel den Präfix deiner phpBB-Version angeben
Sir.Nixx
Mitglied
Beiträge: 9
Registriert: 26.01.2021 16:34

[3.3] Upd von 2.0.20 -> 3.3.2 User-Login "falsches Passwort angegeben"

Beitrag von Sir.Nixx »

Hallo liebe phpBB3-Beta-Tester,

kann mir jemand bitte einmal unter die Arme greifen und weiterhelfen?

Ich verstehe nicht, was phpBB3 da warum und wieso mit meinen Passwort-Hashes macht.

Ich habe ein kleines phpBB2.0.20 mit 600 User und 20.000 Beiträge auf phpBB3.3.2 aktualisiert;

Alles soweit OK!

Nach dem konvertieren der phpBB2-DB funktionieren die ersten zwei Logins unterschiedlicher User im phpBB3 einwandfrei.

Danach gibt's bei weiteren User-Logins immer wieder sporadisch die Fehlermeldung:
Du hast ein falsches Passwort angegeben. Bitte prüfe dein Passwort und versuche es erneut. Wenn du weiterhin auf Probleme stößt, wende dich bitte an die Board-Administration.
Dazu gibt's hier im Forum zwei oder drei ähnliche Einträge - aber als Lösung kommt nur eher eine Kopfschmerztablette in der Art kurz im phpAdmin einen neuen Admin-Account anzulegen ... keine echt Ursachen/Problembeseitigung;

Die Passwörter sind bei mir hier jeweils 100% korrekt (garantiert! weil - mal gehen diese und mal eben nicht) - ich habe hier die letzten 3 Tage massig getestet (20 Datenbanken, Imports/Exports etc.pp) und versucht heraus zu bekommen, was ich falsch mache.

Ich habe das Forum gefühlt 20 mal neu "konvertiert"; Ich habe massig DB-Backup in unterschiedlichen Stufen erstellt und mit diesen Versionsständen gespielt ...

Nach vielen Tests bin ich nun soweit gekommen, daß ich das Problem lokalisiert bekommen habe.

Ich weiß nun nur noch nicht - ist das Problem ein Feature oder und Fehler; :cookie:

Der Passwort-Hashwert wird der zuvor konvertierten User-DB wiederholt verändert, so dass dieser im Anschluss ungültig wird.

Bei mir reproduzierbar.

Folgende Reihenfolge der Hashwerte in der phpbb_user im Field user_password nach der Konvertierung:
  1. -> phpBB2-User-Login: (md5)... (Login OK)
  2. -> phpBB3-User-Login: $CP$$H$9... (Login OK; -> Konvertierung nach $argon2id$ = Login OK)
  3. -> phpBB3 cron-job: $CP\2y$10... (Login fail!)
Im Detail:
  1. -> Also nach der Konvertierung von phpBB2 auf phpBB3.3.2 wird der Hash-Wert $CP$$H$9... gebildet.
    Mit diesem Hash-Wert können sich alle User anmelden!
    .
  2. -> Das Passwort wird sogleich mit dem Hash $argon2id$ gebildet und gespeichert - Login weiterhin OK.
    .
  3. -> Problem ist, dass bei jeder Anmeldung (im Abstand von >120 Sekunden) parallel im Hintergrund willkürlich weitere Passwörter in der DB (nur die mit $CP$$H$9) in 20er Schritten verändert werden und mit einem neuen Hash-Wert $CP\2y$10... versehen wieder gespeichert werden. Diese User mit nun diesem Hash-Wert $CP\2y$10... bekommen dann die Fehlermeldung "Du hast ein falsches Passwort angegeben..."
Verantwortlich dafür ist folgende Source-Stelle:

Datei: \phpbb\cron\task\core\update_hashes.php
Zeile: 95ff

Code: Alles auswählen

/**
 * {@inheritdoc}
 */
public function run()
{
 if ($this->update_lock->acquire())
 {
  $sql = 'SELECT user_id, user_password
   FROM ' . USERS_TABLE . '
   WHERE user_password ' . $this->db->sql_like_expression('$H$' . $this->db->get_any_char()) . '
   OR user_password ' . $this->db->sql_like_expression('$CP$' . $this->db->get_any_char());
  $result = $this->db->sql_query_limit($sql, 20);

  $affected_rows = 0;

  while ($row = $this->db->sql_fetchrow($result))
  {
   $new_hash = $this->passwords_manager->hash($row['user_password'], array($this->default_type));

   // Increase number so we know that users were selected from the database
   $affected_rows++;

   $sql = 'UPDATE ' . USERS_TABLE . "
    SET user_password = '" . $this->db->sql_escape($new_hash) . "'
    WHERE user_id = " . (int) $row['user_id'];
   $this->db->sql_query($sql);
  }

  $this->config->set('update_hashes_last_cron', time());
  $this->update_lock->release();

  // Stop cron for good once all hashes are converted
  if ($affected_rows === 0)
  {
   $this->config->set('enable_update_hashes', '0');
  }
 }
}
Es scheint also gewollt (Feature?), dass die Hashes mit $CP$$H$9... in 20er Schritten nach $CP\2y$10 konvertiert werden. Aber warum sind dann die Hashes mit $CP\2y$10 alle am Login ungültig (Fehler?) ...

Was ist der genaue Grund des erneuten Hashes über den gerade erst gebildeten Hashes vom phpBB2-Konverter?

Wo kann ich an meinem Web-System bzw. an der phpBB-Konfiguration ansetzen, damit die $CP\2y$10 beim Login als korrekte Hashes angenommen werden.

Ist ggf. der Fehler in der Login-Routine oder im Passwords-Manager zu suchen?

So, dass waren jetzt 2 Tage im phpBB3 spielen bis ich verstanden habe - was das Problem ist ... zumindest weiss ich jetzt - dass es "handlebar" sein wird; Ggf. wird einfach diese Funktion ausdokumentiert oder ggf. reicht auch einfach in der DB ein enable_update_hashes=0 zu setzen? ;-)

Ich habe in den Changes nicht wirklich etwas dazu gefunden, ausser
[PHPBB3-16293] - Update hashes cron produces invalid hashes while updating from 3.0
[PHPBB3-16534] - Passwords converted from phpBB2 can have invalid hash

Danke - dass Du bis hier her gelesen hast :-)

Wenn jetzt noch Hinweise zu ähnliche Threads (hoffentlich mit Lösungsvorschläge) kommen - würde ich mich sehr freuen.

Herzliche Grüße
Harald

Testserver:
Version des Boards: 3.3.2
Datenbank-Server: MySQL(i) 5.0.67-community-log
PHP-Version: 7.3.26
Zend Engine: 3.3.26
Xdebug: 3.0.2
Sir.Nixx
Mitglied
Beiträge: 9
Registriert: 26.01.2021 16:34

Re: [3.3] Upd von 2.0.20 -> 3.3.2 User-Login "falsches Passwort angegeben"

Beitrag von Sir.Nixx »

Hallo,

hat wirklich niemand hier eine Idee, warum die Passwörter von $CP$$H$9... nach $CP\2y$10... konvertiert werden?

Was kann / soll ich dagegen machen?

Herzliche Grüße
Harald
Benutzeravatar
Crizzo
Administrator
Administrator
Beiträge: 12113
Registriert: 19.05.2005 21:45
Kontaktdaten:

Re: [3.3] Upd von 2.0.20 -> 3.3.2 User-Login "falsches Passwort angegeben"

Beitrag von Crizzo »

Hi,

ich hab mal bei einem Entwickler (Marc) nachgehakt. Man schaut sich das mal an. Hätte aber gerne ein paar Infos.

Kannst du mal 2-3 Testuser in phpBB 2.0 erstellen und deren phpbb_users Einträge zur Verfügung stellen?

Weil so ganz passt der Eintrag der Passwörter mit dem was du gesagt hast, nicht dazu, was Default in phpBB 2.0 war.

Grüße
Sir.Nixx
Mitglied
Beiträge: 9
Registriert: 26.01.2021 16:34

Re: [3.3] Upd von 2.0.20 -> 3.3.2 User-Login "falsches Passwort angegeben"

Beitrag von Sir.Nixx »

Hallo Crizzo,

dank Dir.

Anbei wie gewünscht drei phpBB2-User gerade neu angelegt.

Jeweils Passwort = Username

mySQL5 Export inkl. Tabellestruktur ...

Code: Alles auswählen

--
-- Tabellenstruktur für Tabelle `phpbb_1users`
--

CREATE TABLE `phpbb_1users` (
  `user_id` mediumint(8) NOT NULL DEFAULT '0',
  `user_active` tinyint(1) DEFAULT '1',
  `username` varchar(25) NOT NULL DEFAULT '',
  `user_password` varchar(32) NOT NULL DEFAULT '',
  `user_session_time` int(11) NOT NULL DEFAULT '0',
  `user_session_page` smallint(5) NOT NULL DEFAULT '0',
  `user_lastvisit` int(11) NOT NULL DEFAULT '0',
  `user_regdate` int(11) NOT NULL DEFAULT '0',
  `user_level` tinyint(4) DEFAULT '0',
  `user_posts` mediumint(8) UNSIGNED NOT NULL DEFAULT '0',
  `user_timezone` decimal(5,2) NOT NULL DEFAULT '0.00',
  `user_style` tinyint(4) DEFAULT NULL,
  `user_lang` varchar(255) DEFAULT NULL,
  `user_dateformat` varchar(14) NOT NULL DEFAULT 'd M Y H:i',
  `user_new_privmsg` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
  `user_unread_privmsg` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
  `user_last_privmsg` int(11) NOT NULL DEFAULT '0',
  `user_emailtime` int(11) DEFAULT NULL,
  `user_viewemail` tinyint(1) DEFAULT NULL,
  `user_attachsig` tinyint(1) DEFAULT NULL,
  `user_allowhtml` tinyint(1) DEFAULT '1',
  `user_allowbbcode` tinyint(1) DEFAULT '1',
  `user_allowsmile` tinyint(1) DEFAULT '1',
  `user_allowavatar` tinyint(1) NOT NULL DEFAULT '1',
  `user_allow_pm` tinyint(1) NOT NULL DEFAULT '1',
  `user_allow_viewonline` tinyint(1) NOT NULL DEFAULT '1',
  `user_notify` tinyint(1) NOT NULL DEFAULT '1',
  `user_notify_pm` tinyint(1) NOT NULL DEFAULT '0',
  `user_popup_pm` tinyint(1) NOT NULL DEFAULT '0',
  `user_rank` int(11) DEFAULT '0',
  `user_avatar` varchar(100) DEFAULT NULL,
  `user_avatar_type` tinyint(4) NOT NULL DEFAULT '0',
  `user_email` varchar(255) DEFAULT NULL,
  `user_icq` varchar(15) DEFAULT NULL,
  `user_website` varchar(100) DEFAULT NULL,
  `user_from` varchar(100) DEFAULT NULL,
  `user_sig` text,
  `user_sig_bbcode_uid` varchar(10) DEFAULT NULL,
  `user_aim` varchar(255) DEFAULT NULL,
  `user_yim` varchar(255) DEFAULT NULL,
  `user_msnm` varchar(255) DEFAULT NULL,
  `user_occ` varchar(100) DEFAULT NULL,
  `user_interests` varchar(255) DEFAULT NULL,
  `user_plz` varchar(255) DEFAULT NULL,
  `user_actkey` varchar(32) DEFAULT NULL,
  `user_newpasswd` varchar(32) DEFAULT NULL,
  `no_report_popup` tinyint(1) NOT NULL DEFAULT '0',
  `refresh_report_popup` tinyint(1) NOT NULL DEFAULT '0',
  `no_report_mail` tinyint(1) NOT NULL DEFAULT '0',
  `user_regip` varchar(8) NOT NULL DEFAULT '0',
  `user_login_tries` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
  `user_last_login_try` int(11) NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Daten für Tabelle `phpbb_1users`
--

INSERT INTO `phpbb_1users` (`user_id`, `user_active`, `username`, `user_password`, `user_session_time`, `user_session_page`, `user_lastvisit`, `user_regdate`, `user_level`, `user_posts`, `user_timezone`, `user_style`, `user_lang`, `user_dateformat`, `user_new_privmsg`, `user_unread_privmsg`, `user_last_privmsg`, `user_emailtime`, `user_viewemail`, `user_attachsig`, `user_allowhtml`, `user_allowbbcode`, `user_allowsmile`, `user_allowavatar`, `user_allow_pm`, `user_allow_viewonline`, `user_notify`, `user_notify_pm`, `user_popup_pm`, `user_rank`, `user_avatar`, `user_avatar_type`, `user_email`, `user_icq`, `user_website`, `user_from`, `user_sig`, `user_sig_bbcode_uid`, `user_aim`, `user_yim`, `user_msnm`, `user_occ`, `user_interests`, `user_plz`, `user_actkey`, `user_newpasswd`, `no_report_popup`, `refresh_report_popup`, `no_report_mail`, `user_regip`, `user_login_tries`, `user_last_login_try`) VALUES
(629, 1, 'phpBB2Nr01', 'f39b23bbc9e2c101839c2b0ee7d00dd8', 0, 0, 0, 1612271052, 0, 0, '1.00', 3, 'german', 'D, d M Y H:i:s', 0, 0, 0, NULL, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, '', 0, 'phpBB2Nr01@xxx.tld', '', '', '', '', '', '', '', '', '', '', '', '', NULL, 0, 0, 0, '5667b0b0', 0, 0),
(630, 1, 'phpBB2Nr02', '6935c7dcf977bf4edfb4f808a118c695', 0, 0, 0, 1612271090, 0, 0, '1.00', 3, 'german', 'D, d M Y H:i:s', 0, 0, 0, NULL, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, '', 0, 'phpBB2Nr02@xxx.tld', '', '', '', '', '', '', '', '', '', '', '', '', NULL, 0, 0, 0, '5667b0b0', 0, 0),
(631, 1, 'phpBB2Nr03', '7ef2cf7f6ae6bdc2dd7c0ba3141b0c96', 0, 0, 0, 1612271121, 0, 0, '1.00', 3, 'german', 'D, d M Y H:i:s', 0, 0, 0, NULL, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, '', 0, 'phpBB2Nr03@xxx.tld', '', '', '', '', '', '', '', '', '', '', '', '', NULL, 0, 0, 0, '5667b0b0', 0, 0);
Herzliche Grüße
Harald
Benutzeravatar
marc1706
phpBB.com
Beiträge: 323
Registriert: 20.08.2008 11:11
Wohnort: München
Kontaktdaten:

Re: [3.3] Upd von 2.0.20 -> 3.3.2 User-Login "falsches Passwort angegeben"

Beitrag von marc1706 »

Ich hab mir jetzt schon ein bisschen angesehen wie es zu dem Problem kommt. Die Übergangslösung wäre vorerst tatsächlich den update hashes cron zu deaktivieren indem in der config enable_update_hashes auf 0 gesetzt wird.
Das Problem scheint aktuell zu sein, dass der Präfix für die Konvertierung von Passwörtern $CP$ beim Update Cron als Hash-Typ statt als Info dieses Passwort zu konvertieren gesehen wird.
Eine Lösung habe ich leider noch nicht, aber ich bleibe dran.
phpBB Lead Developer
Sir.Nixx
Mitglied
Beiträge: 9
Registriert: 26.01.2021 16:34

Re: [3.3] Upd von 2.0.20 -> 3.3.2 User-Login "falsches Passwort angegeben"

Beitrag von Sir.Nixx »

Hallo Marc,

OK, danke!

Wenn ich enable_update_hashes auf 0 setze, muss ich ggf. bei einem späteren Update dann etwas berücksichtigen?

edit: ... [delete - Lösungsvorschlag ist leider nicht zielführend gewesen...]

Herzliche Grüße
Harald
Benutzeravatar
marc1706
phpBB.com
Beiträge: 323
Registriert: 20.08.2008 11:11
Wohnort: München
Kontaktdaten:

Re: [3.3] Upd von 2.0.20 -> 3.3.2 User-Login "falsches Passwort angegeben"

Beitrag von marc1706 »

So, ich konnte das Problem jetzt denke ich etwas besser eingrenzen und ich denke ich habe für dich vorab eine Lösung.
Zunächst solltest du vor der Konvertierung von phpBB2 die Dateien in der 3.3 gemäß dieser diff anpassen:
https://gist.github.com/marc1706/d99600 ... 06a4a46f17

Danach dann die Konvertierung von phpBB2 durchführen. Im Anschluss sollte es möglich sein Benutzer die bereits durch den Cron Task konvertierte Passwörter haben einzuloggen, als auch solche dessen Hash durch den Cron noch nicht angepasst wurde.
phpBB Lead Developer
Sir.Nixx
Mitglied
Beiträge: 9
Registriert: 26.01.2021 16:34

Re: [3.3] Upd von 2.0.20 -> 3.3.2 User-Login "falsches Passwort angegeben"

Beitrag von Sir.Nixx »

Hallo Marc,

super - Bugfix funktioniert zu 100%. Danke!
  1. -> phpBB2-User-Login: (md5)... (Login OK)
  2. -> phpBB3-User-Login: $CP$$H$9... (Login OK; -> Konvertierung nach $argon2id$ = Login OK)
  3. -> phpBB3 cron-job: $H\2y$9... (Login OK; -> Konvertierung nach $argon2id$ = Login OK)
600+ Passwörter konvertiert und mehrere Stichproben per User-Logins durchgeführt - alles OK;

Noch kurz der Vollständigkeit halber die Anmerkung:
Eine gleiche Konvertierung der Passwörter ist auch noch in der Datei .\phpbb\console\command\fixup\update_hashes.php in der Funktion execute() ab Zeile 100ff vorhanden.

Ich weiss zwar "noch" nicht, wann diese Funktion aufgerufen wird, aber ich gehe davon aus, dass hier ähnliche Probleme bestehen/entstehen könnten.

Herzliche Grüße
Harald
Benutzeravatar
Crizzo
Administrator
Administrator
Beiträge: 12113
Registriert: 19.05.2005 21:45
Kontaktdaten:

Re: [3.3] Upd von 2.0.20 -> 3.3.2 User-Login "falsches Passwort angegeben"

Beitrag von Crizzo »

Man kann das Re-hashen auch über die Command-line starten und muss nicht auf den Cronjob warten. Daher ist die Funktion dort auch noch vorhanden.
Sir.Nixx
Mitglied
Beiträge: 9
Registriert: 26.01.2021 16:34

Re: [3.3] Upd von 2.0.20 -> 3.3.2 User-Login "falsches Passwort angegeben"

Beitrag von Sir.Nixx »

Hallo Crizzo,

OK, danke für Deine Info.

Dann sollte diese Funktion ggf. ebenfalls angepasst werden.

Herzliche Grüße
Harald
Antworten

Zurück zu „Support-Forum“