Also ich habe mir Deine, diesmal hinreichend sachliche Kritik ernst genommen und eine neue Version aufgelegt.
Im Einzelnen:
Das Skript, um das es hier geht, gibt in der Standard-Konfiguration den Inhalt der .htpasswd-Datei aus.
Ja, das vorzukonfigurieren war natürlich ein Fehler.
[v]
Nichjt die Konfiguration, sondern diese Anzeige überhaupt habe ich vollständig entfernt.
Wenn man dann noch dem Link am Seitenende zu http://www.fastix.org folgt, wird die URL des Skripts als Referrer an den Seitenbetreiber übertragen.
[v]
Entfernt.
Er kann das nutzen, um die Passwort-Hashes auszulesen oder sich einen eigenen Benutzer anzulegen.
Hinter dem „kann“ stand allerdings die relativ unwahrscheinliche Voraussetzung, dass der Benutzer den Schutz nicht aktiviert und vorher auf den Link klickt…
Wenn man außerdem die Option FTX_USE_BCRYPT auf 0 setzt, wird ein Pseudozufallsgenerator zur Erzeugung des Salts benutz.
[v]
Ich habe daran folgendes geändert: Diese Option gibt es nicht mehr. Es wird jetzt ausschießlich analog zu
htpasswd -BbnC10 foo passwort
gehasht. Also bcrypt, 2^10 Runden ($2y$10$…).
Der Pseudozufallsgenerator ist damit weg. Allerdings muss ich hier einwenden, dass bei der alten Hashmethode des Apache (htpasswd ohne die Option -B), bekannt als „Apache-MD5“, die Problematik des schlechten Zufalls wohl um einiges hinter anderen Unzulänglichkeiten zurück tritt (bzw. trat)
Außerdem ist das Skript anfällig für XSS-Angriffe. Die Funktion PrintUserList maskiert an einer Stelle die Variable $strUser nicht kontextgerecht.
[v]
Erledigt.
Übigens konnte das nur funktionierten, wenn der Admin sich selbst abschoss.
Ein Angreifer kann sich das zu Nutze machen und einen Keylogger einschleusen um so an die Passworte im Klartext kommen. In Kombination mit der ersten Sicherheitslücke ist das die perfekte Hintertür.
Das müsste dann aber schon je nach Verwendung einer der konfigurierten Benutzer (die - je nach Verwendung - selbst Admin sind) oder sogar nur der Admin selbst gewesen sein...
ToDo:
Noch ist nicht alles konfigurierbar (e.g. Mindestlänge des Benutzernamens, Erlaubte Zeichen in diesem, ggf. - der Apache nutzt selbst „nur“ 2^10 Runden muss es dann ja auch verstehen- Bcrypt-Runden).