Jump to content
Froxlor Forum
  • 0
martinr

Login funktioniert nicht

Question

Hallo,

 

habe vor Kurzem Froxlor auf einem Debian 8 mit PHP7 installiert. Soweit so gut, bis auf Let's Encrypt läuft auch alles (habe gesehen, dass es hier viele Threads zu gibt, aber noch keine Zeit gehabt, dem nachzugehen).

 

Nun ist es geschehen, dass ich mich auf einmal nicht mehr einloggen kann (mit meinem Admin).

 

Habe 2 Mal das Passwort zurückgesetzt (Link via Mail), nichts. Schaue ich in den Code und folgendes passiert: (in validatePasswordLogin)

$pwd_check = crypt($password, $pwd_salt);

Liefert immer "*0" (ohne Anführungszeichen). Habe $pwd_salt ausgelesen und lokal crypt damit ausgeführt, bei jedem Passwort kriege ich dieses Ergebnis.

 

$pwd_salt hat den Wert "$2y$07$".

 

Als Verschlüsselungsmethode ist BLOWFISH gewählt und password_verify mit dem in der Datenbank gespeicherten Wert liefert auch das gewünschte Ergebnis

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0

BLOWFISH is buggy in manchen PHP versionen, setz das auf SHA256 oder so...nicht BLOWFISH...dann gehts auch

Share this post


Link to post
Share on other sites
  • 0

Ich glaube, so wie das mit crypt aktuell implentiert ist, fehlt der salt - die Methode funktioniert auf keiner PHP-Version laut 3v4l (Link).

 

Sehe gerade nicht, wie man den Salt aus dem Hash auslesen kann (letzte Zeichen fehlt, hier Salt "..yxc", im Hash nur "..yx", also geht substr(..)+22 nicht). Aber wenn man den Salt weiß, funktioniert es so (Link) oder eben - wie auch von der Doku vorgeschlagen - mittels password_hash / password_verify. Kann mir das die Tage gerne mal genauer ansehen und evtl. einen Pull Request machen dann.

 

Gerade im StackOverflow-Chat gewesen (Chat-Log):

crypt($pwd, $hashed_pwd) === $hashed_pwd

gilt, man kann also den kompletten Hash nehmen und braucht das str_replace(substr(strrchr( garnicht (nur getestet mit Blowfish). Generell wird aber zu password_verify() geraten anstatt normalen == Vergleich. Und für Kompabilität gibt es password_compat

Share this post


Link to post
Share on other sites
  • 0

so ganz ohne bezug auf unsere code ist es schwer dir hier zu folgen.
 
- warum sollte ein salt fehlen? -> wir rufen beim erstellen crypt() mit zweitem Parameter auf, also dem $salt
 
- klar kann man den salt aus dem hash auslesen, siehe: https://github.com/Froxlor/Froxlor/blob/master/lib/functions/validate/function.validatePasswordLogin.php#L51
 
- password_hash / password_verify fallen raus, PHP >=5.5

 

- password_comapt -> sieht ganz nett aus, könnte man sich anschauen

 

- das crypt als salt den kompletten passwort-hash frisst kannte ich nicht, werd ich mal testen müssen

Share this post


Link to post
Share on other sites
  • 0

Okay, verstehe, dass das wirr war. Versuche es deutlicher auszudrücken: (habe das nur für den Blowfish-Fall getestet)

 

Ein gehashtes Passwort sieht zB folgendermaßen aus: "$2y$10$4YfB.o57aeHFiFKqZYBT0e1vSc3/Rp/hyeX0G11RtzjHusRqfOyBi".

$pwd_salt = str_replace(substr(strrchr($pwd_hash, "$"), 1), "", $pwd_hash);

Das ist Froxlor-Code (wie du verlinkt hast), $pwd_salt hat nun den Wert "$2y$10$". Wenn man nun (Froxlor-Code)

$pwd_check = crypt($password, $pwd_salt);

macht, kommt immer "*0" raus ("failure string"). Das liegt daran, dass "$2y$10$" nicht den ganzen Salt enthält. Zitat aus der Doku

 

CRYPT_BLOWFISH - Blowfish hashing with a salt as follows: "$2a$", "$2x$" or "$2y$", a two digit cost parameter, "$", and 22 characters from the alphabet "./0-9A-Za-z"

 

Man hat also $2y$ ("alles gut") und 10$ (cost parameter und $), aber nicht die 22 characters, die den Rest des Salts bilden.

 

Leider scheint folgendes nicht zu funktionieren

substr(strrchr($pwd_hash, "$")+22

da (bei meinen Tests) der letzte character des Salts nicht im gehashten Passwort war (zumindest nicht offensichtlich).

 

Lösung wäre, wie vorgeschlagen folgendes

$pwd_check = crypt($password, $pwd_hash);

Oder (bevorzugt) das benutzen von password_verify()

 

---

Kann das gerne als Bug posten, bevor das hier aus dem Ruder läuft.

Share this post


Link to post
Share on other sites
  • 0

Ne passt schon, danke für die Info :) und wie gesagt, ein PR mit password_compat wäre auch gern gesehen :)

Share this post


Link to post
Share on other sites
  • 0

Muss erstmal bis Samstag für einen Kunden durchpowern, dann schaue ich mir das an. Bin nicht so Community-/Open Source-erfahren (1 PR auf GitHub bisher ..), würde wenn ich es habe nochmal auf dich/euch zurückkommen, damit ich alles richtig & nichts kaputt mache

Share this post


Link to post
Share on other sites
  • 0

jo am besten im IRC vorbeischauen, da geht das mit der kommunikation auch besser

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By LukasH
      Ich hab mal wieder ein Problem bzw. einen Fehler mit unguten Auswirkungen begangen und bekomme es nicht mehr gerade gebügelt.
      Und zwar habe ich nach anfänglichem Testen mittlerweile auch mein privates Mailkonto auf einen neuen Server mit Froxlor gezogen.
      Ich hatte wie erwähnt bereits vorher einen Umzug mit Website, daher auch Datenbanken so wie Mailadressen erfolgreich durchgeführt. Der Umzug lief auch relativ glatt und auch meine privaten Mails liegen auf dem neuen Server, senden funktioniert, alle Websites sind via https erreichbar (Letsencrypt Zertifikate erfolgreich gezogen) und alles könnte eigentlich besser nicht sein. 
      Nun kann ich mich allerdings von Extern nicht mehr am smtp Server anmelden mit meiner privaten Mail-Adresse. Und zwar wollte ich in meiner noch Unwissenheit (das ist mein erstes "eigenes" Serverprojekt, meine ersten Server wurden durch andere eingerichtet und ich habe nur zugekuckt/mitgeschrieben) SSL Zertifikate für den Mailserver bekommen, Outlook hat nämlich die überaus nervige Angewohnheit bei jedem Start Zertifikatsfehlermeldungen auszugeben (bei Selbstsignierten) und auch das Speichern in den vertrauenswürdigen Zertifikatsspeicher von Windows bringt hier scheinbar keine Lösung.
      Nun dachte ich, ist ja einfach, einfach in Froxlor für jede Domain welche auch Mailadressen hat noch die Subdomain "mail.*" und "smtp.*" anlegen, LetsEncrypt anschmeißen und fertig, den Verweis stelle ich einfach auf den Ordner in welchem der Webmailer liegt. Soweit so gut, nun hat er hier allerdings keine Zertifikate gezogen sondern nur am laufenden meter PHP Errors ausgegeben. Diese hatte ich vorher immer wenn der PHP Flag für eine Domain nicht richtig gesetzt war, also mit dem admin in Froxlor eingelogt, Domain aufgerufen und gespeichert und... nichts. Gleicher Fehler. PHP Funktioniert (Webmailer wird korrekt aufgerufen) nur werden keine Zertifikate gezogen. 
      Also wollte ich erst einmal alles rückgängig machen und habe alle Subdomains (mail.* & smtp.*) wieder gelöscht. So und nun habe ich den Salat, seltsamerweise kann noch sämtliche Mailkonten von extern ansteuern, auch den jeweiligen smtp nur bei meiner privaten Mailadresse mit eigener Domain geht es nicht, auch nicht mehr bei der meiner Frau mit gleicher Domain. Outlook fragt nach den SMTP Zugangsdaten und nimmt Mailadresse + Passwort nicht, Thunderbird sagt er findet das Passwort nicht, iPhone & Android bringen ebenfalls diese Fehler. 
      ALLE anderen Domains bzw. verbundenen Mailkonten funktionieren (bis auf den Punkt mit dem Zertifikatsfehler) problemlos. Nur die meiner Hauptdomain nicht. 
      Das ganz komische ist aber, dass mein Webmailer noch ganz normal Empfangen und vor allem auch Senden kann, dieser erreicht den SMTP Server ohne Probleme und hat auch keine Login Probleme. 
      Ports sind Frei in der Windows eigenen Firewall, Ping an smtp.* geht problemlos durch, ich habe auch keinen Speedport mit vertrauenswürdiger E-Mail Liste sondern eine Fritz!Box. Bis vor 2 Stunden lief auch noch alles. Und ganz kurios ist auch, dass Outlook den smtp Server bei einer anderen Domain auf "smtpauth.*" geändert hat, Thunderbird geht allerdings via "smtp.*" ran. 
      Nun noch Screenshots von meinem Webmailer (Rainloop) und der dort voll funktionalen Konfiguration welche aber von Extern (egal ob mein Heimnetz (Unitymedia) oder Handynetz (Telekom & O2)) nicht laufen will:




    • By H4nSolo
      Hallo Liebe Froxlor Community,
       
      derzeitig beschäftige ich mich mit einem sehr koriosen Problem was mich, je länger ich damit zu kämpfen habe, zur Weisglut bringt.
      Aktuell benutze ich die letzte Froxlor Github Version und muss mich permanent neu einloggen.
      Dabei spielt es keine Rolle ob ich mich als Admin oder Kunde anmelde.
      Der automatische Logout kommt nach einer unbestimmten Zeit und egal welcher Aktion

      Beispiel Ablauf:
      - Logge mich als Admin ein
      - Bearbeite die Domains
      - Werde gewzungen mich neu anzumelden und  vorherige eingegebene Daten sind verschwunden bzw nicht gesichert worden
      - Logge mich erneut ein
      - Wähle Kundenverwaltung
      - Klicke auf Kunde
      - Werde gewzungen mich neu anzumelden...

      Ja ich habe schon die Sessiontime für die Logins erhöht und weitere einstllungen probiert, jedoch ist dies nicht mein Fehler bzw ändern nichts an dem permanenten wiederanmelden.
      Ich habe auch schon in den Webserver logs nach Fehlern geschaut aber da wird sowohl in den access als auch im Error Log keinerlei Fehlemeldung angezeigt.
      Bei mir spielt es ausserdem auch keine Rolle welche Browser ich benutze da bei allen (sowohl aktuellster FireFox als auch Chrome / Opera Browser) das selbe Phenonem auftritt.

      Daten:
      Root: OVH Dedicated Root (4kerne, 64gb Ram 2TB HHD)
      OS: Ubuntu 16.04 LTS
      Webserver: apache2 (version 2.4)
       
      Ich hoffe das ihr mir weiterhelfen könnt.

      Sollte ich etwas an Informationen vergessen haben, bitte bescheid geben.


      lg H4nSolo
    • By tt33tt
      Hallo alle zusammen,
       
      bei SMTP Auth holt sich bei mir der Postfix die Zugangsdaten aus der Datenbank. Standardmäßig greift er über sql_select: SELECT password FROM mail_users WHERE username='%u@%r' OR email='%u@%r' zu.
      Allerdings ist die Spalte password leer und somit kann man sich ohne Passwort-Eingabe am SMTP authentifzieren (sicherheitshalber habe ich die Authentifzierung aber auf den localhost beschränkt). Das eigentliche Passwort des Mail-Users ist in der Spalte password_enc. Wenn ich in der smtdp.conf aber password_enc als Spalte nehmen würde, dann könnte er das nicht entschlüsseln.
      Ist password_enc FROM mail_users ein Hash-Wert? Kann ich in Postfix einen Hash-Wert verarbeiten? Wie habt ihr das eingerichtet?
    • By cronosdev
      Hallo Froxlor Forum,
       
      kämpfe nun seit einigen Tagen mit einem Problem auf einem neu aufgesetzten Ubuntu 14.04 Server. Habe Froxlor zuerst per apt installiert und anschließend per Webinterface konfiguriert. Wenn ich nun einen neuen Kunden anlege und versuche mich mit diesem per FTP zu verbinden erhalte ich folgende Fehlermeldung:
       
      Status: Verbinde mit [sERVER_IP]
      Antwort: fzSftp started, protocol_version=5
      Befehl: open "[KUNDEN_NAME]@[sERVER_IP]" 22
      Befehl: Pass: *********
      Fehler: Authentifizierung fehlgeschlagen.
      Fehler: Kritischer Fehler: Herstellen der Verbindung zum Server fehlgeschlagen
       
      auth.log sagt folgendes;
       
        h2568842 sshd[15198]: input_userauth_request: invalid user [KUNDEN_NAME][preauth] h2568842 sshd[15198]: pam_unix(sshd:auth): check pass; user unknown h2568842 sshd[15198]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=[MEINE_IP] h2568842 sshd[15198]: Failed password for invalid user [KUNDEN_NAME] from [MEINE_IP] port 39808 ssh2 h2568842 sshd[15198]: error: Received disconnect from [MEINE_IP]: 13: Unable to authenticate [preauth]   Kunde wurde ordnungsgemäß in der Froxlor Database unter ftp_users angelegt.   Jemand ne Idee wie das Problem gelöst werden kann.   MFG            
    • By senya
      I've installed Froxlor on Debian 8 and followed all of the instructions in the configuration section of the management panel
      I've created a new customer and create a domain under them
      I've logged in as the customer and created a new email address and made it an account
      I've installed afterlogic webmail in the domain's document root
      Afterlogic (webmail) gives the error "incorrect username or password" when I try to log in
       
      I've tried adding the account in an email client (mail on windows 10), same error
      My DNS and MX settings are correct
       
      It seems like the mail account is just not there, even though it's set up in froxlor
       
      The username and password have been created in MySQL database "froxlor" in table "mail_users"
       
      I don't know what to do next, or even what question to ask
      Any suggestions on how I should proceed with troubleshooting
×
×
  • Create New...