Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.19 veröffentlicht (11.09.18)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Wie hashed mybb
#1
Hallo zusammen,

da ich mich momentan mit den Sicherheitsaspekten befasse möchte ich gerne wissen, wie mybb das Passwort hashed.

Gefunden habe ich folgende Zeile:

$hash = md5(md5($salt).md5($password))

Nur für mich zum Verständnis:

Es wird das Salt genommen und als MD5 Hash gespeichert.
Dann wird das Passwort genommen und als MD5 Hash gespeichert.
Danach wird dann, der Hashwert vom Salt vor dem Hashwert des Passworts gesetzt und dieser Wert nochmals mit MD5 verschlüsselt.

Ist das so richtig, oder habe ich ein Denkfehler?

Vielen Dank und Gruß Smile
Zitieren
#2
Ja, ist nix besonderes.
Zitieren
#3
Hm komisch.. wenn ich genau diesen Vorgang mit dem in der Datenbank gespeicherten Salt nachstelle, kommt am Ende bei mir ein anderer Hash raus :/
Zitieren
#4
Das gewürzte Passwort, wie es in der Datenbank gespeichert steht (*_users.password), wird genau so generiert, wie du es geschrieben hast:

md5(md5($salt).md5($password))

Salz und Klartext-PW hashen und beide separaten Hashwerte aneinanderhängen und nochmals hashen. Das Ergebnis steht in der Datenbank.

Einige Methoden zur Passwort-Generierung findest du z.B. in der ./inc/functions_user.php

[ExiTuS]
Zitieren
#5
Wie stellst du es denn nach? Falls du auf der Shell mit echo arbeiten solltest, denk an den Zeilenumbruch (echo -n statt echo) und sonstige Sonderzeichen die da verschluckt werden ( \\ statt \ ).

Beispiel:

Code:
Hash: d2c70bcac3008379d4e1a2aa4464ad4b
Salz: hJkdoYKA
Klartext: dampfkochtopf

Code:
$ echo -n hJkdoYKA | md5sum
16cbfd28c82dccaa6e62fb952f8c19b3  -
$ echo -n dampfkochtopf | md5sum
dbb3a4d1c620ca77eb09030b2c38ba0d
$ echo -n 16cbfd28c82dccaa6e62fb952f8c19b3dbb3a4d1c620ca77eb09030b2c38ba0d | md5sum
d2c70bcac3008379d4e1a2aa4464ad4b
Zitieren
#6
Vielen Dank für die Antwort....

Ich verstehe nur nicht, wieso dann, wenn ich das so nachmache, ein anderer Hashwert am Ende rauskommt, wie in der Datenbank.... Big Grin

Ich stelle das so nach:

Ich nehme mein Passwort und veschlüssel es als MD5. Danach nehme ich den Salt und verschlüssele diesen mit md5....

Danach stelle kopiere ich den md5hash von meinem Salt und füge dahinter den MD5hash von meinem Passwort ein und jage das durch einen Online Crypter....

Das war am Ende rauskommt ist aber nicht der Hash, der in der DB steht....

Habe mehrere OnlineCrypter getestet, das Ergebnis war immer das gleiche, aber nicht das richtige Big Grin
Zitieren
#7
Also der erste "Online Crypter" den ich gefunden habe, gibt den Hash direkt mal mit A-F statt a-f aus (Groß- statt Kleinschreibung), das verändert dann natürlich das Ergebnis.

Das mal abgesehen davon, daß man sein reales Passwort nie auf irgendwelchen Webseiten in Formulare klopfen sollte. Ein md5 Hash Tool kann man sich wirklich offline zulegen...
Zitieren
#8
Egal ob ich onlinecrypter nehme oder meinen eigenen gecodeten.... Der HashWert ist immer unterschiedlich :/..

Keine Sorge das ist ein Test-Account mit keinem Passwort was ich wirklich benutze.
Zitieren
#9
Ich habe die Funktion jetz mal extrahiert und in ein eigenes Script gepackt. Wenn ich dies, mit den Daten ausfülle, müsste doch das gleiche rauskommen, wie in der Datenbank steht oder?


PHP-Code:
<?php

$salt 
"salz";
$password "passwort";

$hash md5(md5($salt).md5($password));


echo 
$hash;

?>

Selbst hier kommt ein anderes Ergebnis raus....
Zitieren
#10
Tja, und was bekommst du da so und was erwartest du?

Code:
$ php -a
Interactive shell

php > echo md5(md5("hJkdoYKA").md5("dampfkochtopf"));
d2c70bcac3008379d4e1a2aa4464ad4b

Sonderzeichen oder Umlaute im Passwort? Dann kann es auch noch ein Problem mit dem Quoting ( \\ -> \ usw.) oder mit dem Zeichensatz an sich sein.

Ganz andere Möglichkeit wäre, daß du ein Plugin im Spiel hast, welches den Passworthash verändert.
Zitieren