Hallo,
ich habe für ein Controlpanel die Daten meiner passwd und shadow in eine Datenbank kopiert, um Kennwörter in einem Webscript zu überpfüfen. (PHP4)
Das funktioniert auf dem Suse Linux 7 System auch ganz wunderbar bei 90% der Kennwörter. Mit Crypt und dem Key der ersten beiden Zeichen kann ich die Kennwörter einfach und schnell überprüfen. Kennwörter sehen etwa so aus:
„IX9pW4rNPnJzg“
Leider sehen ca. 10% der Kennwörter anders aus, so daß ich die nicht überprüfen kann.
„$1$61629078$Q3qOmGwqFYEvEGNn6akM01“
Das komische ist, dass das System anscheinend damit umgehen kann, da ein System-Login möglich ist. Allerdings konnte ich in den letzten 3 Tagen nirgendwo einen Hinweis auf die Verschlüsselungsmethode finden und wie man das Passwort prüfen kann.
Wenn Sie eine Idee dazu haben, so währe ich Ihnen sehr dankbar, da hier im Moment nichts passiert:frowning:
Vielen vielen Dank schon ein mal im voraus!
Mit freundlichen Grüßen
Sebastian
Leider sehen ca. 10% der Kennwörter anders aus, so daß ich die
nicht überprüfen kann.
„$1$61629078$Q3qOmGwqFYEvEGNn6akM01“
Das komische ist, dass das System anscheinend damit umgehen
kann, da ein System-Login möglich ist. Allerdings konnte ich
in den letzten 3 Tagen nirgendwo einen Hinweis auf die
Verschlüsselungsmethode finden und wie man das Passwort prüfen
kann.
Bei diesem Verschluesslungsverfahren handelt es sich um MD5, erkennbar am $1$, und um zu pruefen, ob das angegebene Passwort richtig ist, machst du einfach crypt($plain_password, $encrypted_password) und wenn das Ergebnis dieser crypt Anweisung das gleiche ist wie $encrypted_password, dann ist $plain_password richtig.
Uebrigens ist es weder taktisch Apache auf einem Multiuser System als root laufen zu lassen (jeder User, der PHP Skripte ausfuehren darf, kann Dinge im System veraendern) noch die Shadow Datei lesbar zu machen.
Gruss
Patrick
Hi!
Es hat tatsächlich funktioniert. Endlich mal was positives:smile:)))
Zu dem Apache und den Root-Rechten:
Apache läuft natürlich nur als nobody. Ich habe das Userinterface getrennt, so daß dieses nur in eine Datenbank Jobs eintragen kann.
Ein Cron-Job arbeitet diese Jobs regelmäßig als root ab und führt die Änderungen durch. Da eine 2-Fache Kontrolle der Benutzernamen stattfindet und alle Systembenutzer niemald geändert werden dürfen (Script hat Liste dieser), Stufe ich das System als relativ sicher ein.
Eine Kopie der veränderten Daten wird natürlich vor jeder Änderung gemacht.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Apache läuft natürlich nur als nobody. Ich habe das
Userinterface getrennt, so daß dieses nur in eine Datenbank
Jobs eintragen kann.
Ein Cron-Job arbeitet diese Jobs regelmäßig als root ab und
führt die Änderungen durch. Da eine 2-Fache Kontrolle der
Benutzernamen stattfindet und alle Systembenutzer niemald
geändert werden dürfen (Script hat Liste dieser), Stufe ich
das System als relativ sicher ein.
Eine Kopie der veränderten Daten wird natürlich vor jeder
Änderung gemacht.
Achso, na dann ist es ja kein Problem, ich wollte dich nur auf eine eventuelle Sicherheitsluecke hinweisen, aber auf die Art und Weise, wie du das machst ist das voellig korrekt und ich persoenlich wuerde es auch als relativ sicher einschaetzen.