Passwort verifizieren

Macs

Member
Hallo,

ich habe jetzt den Erweiterter Sicherheitsmodus von Plesk 11.0.9 aktiviert. Bisher habe ich mit einer eigenen Anwendung den Benutzernamen und das Passwort über die api abgefragt und so die Richtigkeit überprüft. Stimmten beide, war alles ok.

Nun ist das Passwort aber verschlüsselt. Kann mir jemand sagen, wie ich die eingegebene Kombination von Benutzernamen und Passwort überprüfen kann?

Grüße
Der Macs
 
Last edited by a moderator:
Wie du bisher die Plesk API benutzt hast, können wir nur erraten.

Bitte etwas mehr Informationen und ein Codebeispiel.
 
Die Plesk Api hat damit nichts zu tun.
Die Frage ist, werden die Passwörter gesalzen und gehashed und welches Verfahren wird benutzt?
 
Mittlerweile habe ich herausgefunden, dass die Passwörter nach AES-128-CBC cipher verschlüsselt werden.
Im Format $AES-128-CBC$1234567890123456789012==$1234567890123456789012==

einmal in `psa`.`accounts` und einmal in `psa`.`smb_users`

noch jemand eine Idee?
 
crypt() mit CRYPT_SHA256 wird auch verwendet.

//EDIT:
In deinem Falls ist das schon richtig erkannt, der Hash des gesalzenen Passworts wird mit AES-128-CBC erzeugt.

Welches Problem hast du jetzt? Wie du Passwörter mit gesalzenen Hashes überprüfst? Wie du mcrypt_... verwendest?
Wie hast du es denn probiert? zeige bitte mal Code. ;)
 
Last edited by a moderator:
Bisher habe ich über curl das Passwort ausgelesen und mit der Eingabe überprüft, war ja Klartext.
Jetzt würde ich direkt auf die psa Datenbank zugreifen und den Benutzer+Passworthash auslesen. Ich müsste nur wissen wie man das eingegeben Passwort "salzt" und dann hashed und wo das genutze Salt steht.
 
So wie ich das bei PSA verstehe:
Der Aufbau des Passworts ist $CIPHER$SALT....$PASSWORD....
wobei SALT und PASSWORD im Falle von PSA als Base64 kodiert sind.

Um an SALT und PASSWORD zu kommen, musst du halt die Zeichenkette bei $ aufsplitten und die beiden erhaltenen Strings mit base64_decode dekodieren.

Ungetestet zum dekodieren:
$decrypted = mcrypt_decrypt ( MCRYPT_RIJNDAEL_128, $salt, $password, 'cbc');

//EDIT: Vielleicht klappt ja auch:
http://serverfault.com/a/425129

Es sei denn Plesk macht noch intern etwas mehr.
Oder es wurschtelt mit MySQLs Funktionen AES_ENCRYPT() and AES_DECRYPT() herum.
ich kenn die Interna nicht.
 
Last edited by a moderator:
Die Funktion auf der servervault Seite hatte ich auch schon gesehen. Leider klappt dies auch nicht. Bisher habe ich folgendes probiert:

PHP:
$hash = explode('$', '$AES-128-CBC$1234567890123456789012==$123456789012345678901 2==');
$salt1 = base64_decode($hash[2]);
$salt2 = $hash[2];
$pw1 = base64_decode('PasswordImKlartext');	
$pw2 = 'PasswordImKlartext';
$decrypted1 = base64_encode(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $salt1, $pw1, 'cbc'));
$decrypted2 = base64_encode(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $salt2, $pw1, 'cbc'));
$decrypted3 = base64_encode(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $salt1, $pw2, 'cbc'));
$decrypted4 = base64_encode(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $salt2, $pw2, 'cbc'));
echo $decrypted1.'<br>'.$decrypted2.'<br>'.$decrypted3.'<br>'.$decrypted4.'<br><br>';

Ich habe dann auch mal den Salt und das Password von $hash getauscht, aber alles ohne Erfolg. Das Passwort wird übrigens in der `psa`.`smb_users` geändert. Wozu die `psa`.`accounts` ist....wer weiß.
Ich werde sonst mal direkt bei Parallels anfragen. Ich werde ja wohl nicht der einzige sein, der externe Anwendungen hat, die als Authentifizierung das Plesk-Login benutzen.
 
ähnliches Problem bei mir.
Ich brauche in einem zentralen Verzeichnis einen .htaccess Schutz mit einer Passwortdatei sämtlicher Domains mit Logins und Kennwörter.

In den alten Plesk Installationen waren die Kennwörter in der Datenbank psa plain abgespeichert und ich konnte mit einer MySQL Abfrage die Kennwörter auslesen und über htpasswd einen Passwortdatei für den .htaccess Schutz genieren. Mit den crypt Kennwörtern funktioniert das jetzt leider nicht mehr.

Ich bin bei meiner Suche nach der Lösung meines Problems auf die Datei "d..httpdocs@plesk-stat" gestossen die im Verzeichnis \pd jedes vhosts abgelegt wird. Dort ist das Kennwort genau in der Form vorhanden wie ich es für meine Sammelpasswortdatei benötigen würde. Leider bin ich kein Scripter und nicht in der Lage mit jetzt ein Perl Script zu klimpern das durch alle vhosts rennt und mit die jeweiligen Zeilen auf der "d..httpdocs@plesk-stat" in einer neuen Datei sammelt.

Kann mir hier jemand helfen?

Zum Thema decodieren der crypt Plesk Kennwörter habe ich im Netz noch keine Lösung gefunden.
 
@Onkel_Tom
Du liegst einem Irrtum auf. Passwörter, die mit crypt kodiert sind, können nicht entschlüsselt werden. crypt erzeugt sogenannte Hashes von Passwörtern, das sind quasi spezielle Prüfsummenmuster. bei einem Passwortvergleich wird das zu testende Passwort mit crypt kodiert und dann mit dem gespeicherten verglichen.


@macs
Ja, ich habe jetzt festgestellt, dass mcrypt da versagt bei dekodieren. Kann sein, dass Plesk da viel mehr im Hintergrund macht, als so über die schnelle Blickanalyse des Hashes möglich ist.
Mal sehen, ob Parallels es verrät wie es kodiert ist, schließlich sind das ja möglicherweise für die Sicherheitsbedenken, das preiszugeben.
 
Last edited by a moderator:
Naja...ich hoffe mal nicht, dass es Sicherheitsbedenken gibt. Schließlich bleibt ja alles so wie es ist und der Login prüft ja auch nur das Passwort mit den Hash. Mehr will ich ja gar nicht.
Ich habe mal nach den Quellcode geschaut, aber der ist ja auch codiert. Gibt es da eine Möglichkeit, den anzuzeigen? Es spricht halt immer wieder alles gegen Closed Software.
Wenn ich eine Info habe, werde ich es euch mitteilen...
 
Back
Top