Avatar

Und noch ein Problem (German / Deutsch)

by Auge ⌂, Monday, September 13, 2010, 09:20 (4975 days ago) @ Birgit
edited by Auge, Sunday, December 12, 2010, 18:27

Hallo Birgit

Lesen kann ich den Quelltext schon, nur mit dem Verständnis hapert es gewaltig. ;-) Allerdings kann ich deine Ausführungen wenigstens nachvollziehen.

Schön, das ist wichtig für das Verständnis.

Ich habe ja zwei Foren bei demselben Webspaceanbieter. Ein Katzenforum und eben dieses "probelmatische". Das Katzenforum zeigt keine dieser Auffälligkeiten. Ich glaube also eher nicht, dass es am Provider liegt.

Das klingt einleuchtend. Wenn die Einstellungen beider Foren bezüglich der Versendung von Emails und dem Drumherum übereinstimmen, sollten sie as gleiche Verhalten zeigen.

Aber:
Gestern bekam ich eine Mail des Scriptschreibers meines Gästebuchs mit folgendem Inhalt:

Leider ist es einigen "Hackern" gelungen unter bestimmten
Server-Vorraussetzungen ein Sicherheitsloch in meinen Scripten ausfindig zu machen.
....

In Ihrem Fall müssten Sie die Datei: "gbook.php" von Ihren Gästebüchern bitte dort einmal "patchen" lassen.

Schon passiert?

Wenn Sie mal eine phpinfo Datei aufspielen und aufrufen, werden Sie sicherlich feststellen, dass eine oder gar mehrere Einstellungen der nun folgenden leider zutreffen werden.

register_globals = ON
allow_url_fopen = ON
allow_url_include = ON

Diese sollten eigentlich alle auf OFF stehen. Am wichtigsten dabei ist die "register_globals".

Kann das Problem evtl. darin begründet sein?

Wie sehen denn die Einstellungen konkret aus? Die Aussagen sind im Übrigen grundsätzlich zutreffend. register_globals sorgt dafür, dass man als Skriptschreiber Zugriff auf Variablen nimmt/gibt, deren Herkunft nicht geprüft wird.

Schickt man eine Anfrage (egal ob aus einem Formular oder als URL-Parameter) mit dem Feldnamen "email" an das Skript, kann man mit register_globals = on über $email darauf zugreifen. Das ist ohne Frage bequem. Allerdings kann der Wert für $email so auch aus irgendeiner anderen Quelle eingeschleust werden.

Mit der Verwendung der Superglobalen $_GET['email'] (für URL-Parameter), $_POST['email'] für POST-Anfragen (z.B. aus einem Formular) kann man zumindest den Weg, über den der Wert hereinkommt, sicherstellen. Das entbindet natürlich nicht von der Pflicht, den Wert auf Plausibilität zu prüfen. Dieses Vorgehen kann man im Übrigen auch dann anwenden, wenn register_globals mit on angegeben ist. MyLittleForum geht genau so vor[1].

Die anderen beiden Einstellungen betreffen die Möglichkeit, externen Code per include oder include_once in das Skript einzubinden bzw. Daten aus anderen Quellen zu laden (mit fopen). Normalerweise sollten so nur Daten aus dem lokalen Dateisystem des Servers zugänglich sein, damit man (zumindest theoretisch[2]) die Kontrolle über jene Daten behält. Mit den oben bemängelten Einstellungen wären sie auch über eine URL – also auch von anderen Servern aus – ladbar. Allerdings muss das Skript diese Methoden benutzen und der Wert der zu ladenden Ressourcen von Angaben des Nutzers abhängen.

Beispiel: Das Skript bindet PHP-Quelltexte über include ein.

include($extern_source);

Wird $extern_source im Skript fest vorgegeben, ist alles ok. Ist der in $extern_source vorgegebene Wert von Benutzereingaben abhänglig, kommt es auf die Art der Bereitstellung an, ob das Skript manipulierbar ist.

Kann der Benutzer den Wert direkt angeben, ist das Skript anfällig, übermittelt er einen Wert z.B. als Zahl, anhand derer das Skript fest vorgibt, welche Ressource $extern_source zugewiesen wird, ist es in Hinsicht auf Einschleusungen sicher. In MyLittleForum sind solche Vorgaben fest verdrahtet, also gibt es keine Einschleusungsmöglichkeiten[1].

Wenn meine Spekulation nicht zutrifft, bleibt nur übrig, dass bei der Anforderung eines neuen Passworts (Schritt 1) von vornherein die Daten des Admins anstatt der des betroffenen Benutzers von der DB zurückgegeben werden. Dann bekommst du als Admin die Email mit dem Link, der Benutzer aber keine Email. Ist das so?


Die Userin, die ein neues Passwort angefordert hat, muss es auch bekommen haben, denn sie hat sich danach wieder eingeloggt. Ich habe sowohl die Mail mit dem Link wie auch das Passwort leider auch bekommen. :-(

Wie gesagt, der Quelltext von mlf2 gibt, so, wie er hier heruntergeladen werden kann, keine Kopie an den Admin her. Woher kommen die also?

Mit den Mails, die über das Forum verschickt werden, verhält es sich genauso, ich bekomme sie auch.

Das ist als Admin normal, damit du kontrollieren kannst, was über dein Forum abgewickelt wird. Es sollte sich aber abstellen bzw. bezüglich der Übermittlung der Inhalte an dich ändern lassen.

Bisher habe ich die User nur gebeten, keine Mails mehr über das Forum zu verschicken, da es technische Schwierigkeiten gibt. Gerade das heikle Thema des Forums und die Sensibilität der einzelnen Leute macht es sehr schwer, mit völlig offenen Karten zu spielen.

Das "alte" Forum auf dem anderen Server ist übrigens auch noch installiert, falls dies weiterhelfen könnte. Und ich habe gerade meine Mail-Adresse anklickbar gemacht...

Dito. Ich schicke dir mal 'ne Mail, damit wir das wieder abstellen können.

[1] Meine Angaben zu mlf2 beziehen sich auf den mir bekannten Quelltext. Ich habe den allerdings nicht bis in den letzten Winkel gelesen.

[2] Wird der Server gehackt und so Schaddaten untergeschoben, ist das noch eine andere Geschichte.

Tschö, Auge

--
Trenne niemals Müll, denn er hat nur eine Silbe!


Complete thread:

 RSS Feed of thread