Privatsphären-Problem - dringend! (German / Deutsch)

by Birgit ⌂, Sunday, September 05, 2010, 08:51 (4983 days ago)

Guten Morgen zusammen,

eben bekam ich über das Forum eine Mail, die nicht für mich bestimmt war! Eine Userin wollte einer anderen etwas schreiben, klickte dazu auf das Mail-Icon neben dem Usernamen - und die Mail/Nachricht landete bei mir Admin)! Das geht natürlich überhaupt nicht, kann mir jemand sagen, woran das liegt und wie ich es ändern kann?

--
Best wishes,
Birgit

Noch ein großes Problem

by Birgit ⌂, Sunday, September 05, 2010, 08:59 (4983 days ago) @ Birgit

Hallo nochmal,

ich sehe gerade auch, dass ich unter "Administration » Einstellungen" keine Daten verändern kann. Die Homepage zum Forum hat eine neue Adresse, ich kann zwar alle Neuerungen eintippen, aber nach dem Klick auf "OK - Einstellungen übernehmen" sind wieder die alten Daten da. Auch das Löschen des Caches bringt nichts.
Hiiilfe! ;-)

--
Best wishes,
Birgit

Problem 2 ist behoben...

by Birgit ⌂, Sunday, September 05, 2010, 09:44 (4983 days ago) @ Birgit

... ich habe mich in die Datenbank gewagt und die Daten dort korrigiert. Problem 1 besteht aber leider noch, da habe ich einfach keine Idee, wie sowas passieren kann.

--
Best wishes,
Birgit

Hat denn niemand eine Idee?

by Birgit ⌂, Sunday, September 05, 2010, 14:38 (4983 days ago) @ Birgit

Hallo nochmal,

normalerweise bin ich nicht so ungeduldig, aber eben bekam ich wieder eine Mail, diesmal wurde ein neues Passwort angefordert, das MIR zugeschickt wurde! Das geht doch so nicht...

--
Best wishes,
Birgit

Avatar

Hat denn niemand eine Idee?

by Auge ⌂, Sunday, September 05, 2010, 19:00 (4983 days ago) @ Birgit

Hallo

normalerweise bin ich nicht so ungeduldig, aber eben bekam ich wieder eine Mail, diesmal wurde ein neues Passwort angefordert, das MIR zugeschickt wurde! Das geht doch so nicht...

Das steht ja auch so nicht im Quelltext des Skripts. Das gilt sowohl für die 2.1.x als auch für die aktuelle Version 2.2.6. Hast du irgendwelche Anpassungen am Skript vorgenommen/vornehmen lassen? Selbst meine erste Vermutung, dass du als Admin eine Kopie erhältst, lässt sich im Quelltext des Skripts nicht bestätigen.

Tschö, Auge

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

Hat denn niemand eine Idee?

by Birgit ⌂, Monday, September 06, 2010, 06:49 (4982 days ago) @ Auge

Hallo Auge,

dankeschön für deine Antwort! Ich habe die Version 2.2.6 und das Forum bzw. die gesamte Website ist vor wenigen Tagen von einer .com-Domain zu einer .info-Domain umgezogen. Leider weiß ich nicht, ob die Problematik schon bei der .com-Domain bestand, denn der Provider dort ließ keine PHP-Mails zu.
Da dieses Forum ein sehr privates ist und die User unbedingt geschützt werden müssen, kann ich auch keinen öffentlichen Testaccount einrichten. Behoben werden muss das Problem aber auf jeden Fall, es ist ja mehr als peinlich...

--
Best wishes,
Birgit

Und noch ein Problem

by Birgit ⌂, Thursday, September 09, 2010, 15:08 (4979 days ago) @ Birgit

Hallo zusammen,

tja, die Mails kommen immer noch falsch an und ich warte immer noch auf einen Hinweis, woran dies liegen bzw. wie ich es abstellen könnte.

Was mir noch aufgefallen ist: Wenn ich als Admin in die Foren-Einstellungen gehe und etwas verändern möchtem, dies dann abspeichere, tut sich gar nichts. Alles, was geändert werden soll, muss direkt in der Datenbank geändert werden, sonst funktioniert es nicht. Vielleicht hängt das ja mit dem Mail-Problem zusammen?

Ich hoffe wirklich sehr, dass mir jemand helfen kann, besonders die fehlgeleiteten Mails sind ja kein Zustand!

--
Best wishes,
Birgit

Avatar

Und noch ein Problem

by Auge ⌂, Sunday, September 12, 2010, 00:34 (4976 days ago) @ Birgit
edited by Auge, Sunday, September 12, 2010, 01:16

Hallo

tja, die Mails kommen immer noch falsch an und ich warte immer noch auf einen Hinweis, woran dies liegen bzw. wie ich es abstellen könnte.

Wie ich schon sagte, im Originalquelltext ist das nicht nachvollziehbar. Dehalb noch einmal die Frage: Hast du irgendwelche Anpassungen am Skript vorgenommen/vornehmen lassen?

Was mir noch aufgefallen ist: Wenn ich als Admin in die Foren-Einstellungen gehe und etwas verändern möchtem, dies dann abspeichere, tut sich gar nichts. Alles, was geändert werden soll, muss direkt in der Datenbank geändert werden, sonst funktioniert es nicht. Vielleicht hängt das ja mit dem Mail-Problem zusammen?

Unwahrscheinlich, wenn auch nicht unmöglich. Das einzige, was diese beiden Fehlerbilder auf den ersten Blick verbindet, ist die Datenbank. Im einen Fall muss aus ihr gelesen werden, um die Emailadresse des vom Passwortverlust betroffenen Benutzers zu ermitteln, im anderen soll in die Datenbank geschrieben werden. Ansonsten fallen mir keine Berührungspunkte deiner Beobachtungen ein.

[edit]Du hattest das Problem der Nichtspeicherung deiner Einstellungen ja schon angesprochen. Wo du immer wieder den vollzogenen Umzug deines Forums ansprichst, kommt mir in diesem Zusammenhang der Gedanke, dass du mal deine Datenbankverbindungseinstellungen überprüfen solltest (config/db_settings.php), nicht, dass du die eins-zu-eins vom alten Forum mitgenommen hast und irgendwas fehlkonfiguriert ist.[/edit]

Das Forum braucht ganz offensichtlich einen Debug-Mode, in dem die PHP- wie auch etwaige MySQL-Meldungen an den Admin durchgereicht werden (Error Log entweder am Bildschirm oder als Datei).

Ich hoffe wirklich sehr, dass mir jemand helfen kann, besonders die fehlgeleiteten Mails sind ja kein Zustand!

Ich kann deine Ungeduld als Anwender der Software verstehen. Bedenke aber bitte, dass das Projekt in Alex' Freizeit stattfindet. Warum auch immer Alex momentan nicht hier ist, er ist der richtige Ansprechpartner. Ich werde mir dennoch den Quelltext noch einmal zu Gemüte führen, um der Sache auf die Schliche zu kommen (womit wir wieder bei der oben stehenden Frage nach etwaigen Anpassungen wären).

Tschö, Auge

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

Und noch ein Problem

by Birgit ⌂, Sunday, September 12, 2010, 07:59 (4976 days ago) @ Auge

Hallo Auge,

Wie ich schon sagte, im Originalquelltext ist das nicht nachvollziehbar. Dehalb noch einmal die Frage: Hast du irgendwelche Anpassungen am Skript vorgenommen/vornehmen lassen?

Sorry, die Frage hatte ich vergessen zu beantworten. Nein, ich habe nichts am Script geändert oder ändern lassen.

Unwahrscheinlich, wenn auch nicht unmöglich. Das einzige, was diese beiden Fehlerbilder auf den ersten Blick verbindet, ist die Datenbank. Im einen Fall muss aus ihr gelesen werden, um die Emailadresse des vom Passwortverlust betroffenen Benutzers zu ermitteln, im anderen soll in die Datenbank geschrieben werden. Ansonsten fallen mir keine Berührungspunkte deiner Beobachtungen ein.

Ich denke auch, dass es mit der Datenbank zusammenhängt, da die Fehler ja erst mit dem Umzug aufgetreten sind. Und jetzt eben fällt mir etwas ein: Soweit ich mich entsinne, lief das "alte" Forum, also das, welches umgezogen ist, noch mit einer älteren Software-Version! Auf dem Server, auf den es dann umgezogen ist, hatte ich aber schon die jetzige Version installiert. Kann es vielleicht daran liegen?

[edit]Du hattest das Problem der Nichtspeicherung deiner Einstellungen ja schon angesprochen. Wo du immer wieder den vollzogenen Umzug deines Forums ansprichst, kommt mir in diesem Zusammenhang der Gedanke, dass du mal deine Datenbankverbindungseinstellungen überprüfen solltest (config/db_settings.php), nicht, dass du die eins-zu-eins vom alten Forum mitgenommen hast und irgendwas fehlkonfiguriert ist.[/edit]

Ich habe gerade nachgesehen, da stimmen alle Angaben.

Das Forum braucht ganz offensichtlich einen Debug-Mode, in dem die PHP- wie auch etwaige MySQL-Meldungen an den Admin durchgereicht werden (Error Log entweder am Bildschirm oder als Datei).

Was bedeutet das?

Ich kann deine Ungeduld als Anwender der Software verstehen. Bedenke aber bitte, dass das Projekt in Alex' Freizeit stattfindet. Warum auch immer Alex momentan nicht hier ist, er ist der richtige Ansprechpartner. Ich werde mir dennoch den Quelltext noch einmal zu Gemüte führen, um der Sache auf die Schliche zu kommen (womit wir wieder bei der oben stehenden Frage nach etwaigen Anpassungen wären).

Ich habe dafür wirklich vollstes Verständnis und möchte auch gar nicht drängend wirken. Es geht mir einzig um den Schutz der User des Forums, ich schreibe dir gleich noch einen Satz dazu an deine Mailadresse.
Dankeschön für deine Hilfsbereitschaft, ich weiß das sehr zu schätzen!

--
Best wishes,
Birgit

Und noch ein Problem

by Birgit ⌂, Sunday, September 12, 2010, 08:01 (4976 days ago) @ Birgit

Das mit der persönlichen Nachricht über die Mailfunktion geht nicht, sorry, ich hatte nicht gesehen, dass deine Mail-Adresse nicht anklickbar ist.

--
Best wishes,
Birgit

Avatar

Und noch ein Problem

by Auge ⌂, Sunday, September 12, 2010, 15:01 (4976 days ago) @ Birgit

Hallo

Wie ich schon sagte, im Originalquelltext ist das nicht nachvollziehbar. Dehalb noch einmal die Frage: Hast du irgendwelche Anpassungen am Skript vorgenommen/vornehmen lassen?


Sorry, die Frage hatte ich vergessen zu beantworten. Nein, ich habe nichts am Script geändert oder ändern lassen.

Gut, dann wäre das geklärt.

Unwahrscheinlich, wenn auch nicht unmöglich. Das einzige, was diese beiden Fehlerbilder auf den ersten Blick verbindet, ist die Datenbank. Im einen Fall muss aus ihr gelesen werden, um die Emailadresse des vom Passwortverlust betroffenen Benutzers zu ermitteln, im anderen soll in die Datenbank geschrieben werden. Ansonsten fallen mir keine Berührungspunkte deiner Beobachtungen ein.


Ich denke auch, dass es mit der Datenbank zusammenhängt, da die Fehler ja erst mit dem Umzug aufgetreten sind. Und jetzt eben fällt mir etwas ein: Soweit ich mich entsinne, lief das "alte" Forum, also das, welches umgezogen ist, noch mit einer älteren Software-Version! Auf dem Server, auf den es dann umgezogen ist, hatte ich aber schon die jetzige Version installiert. Kann es vielleicht daran liegen?

Welche Version war denn auf dem alten Server installiert? Das Changelog gibt Auskunft über die Änderungen der einzelnen Versionen, ich möchte aber nicht alles durchsuchen müssen um etwaige Änderungen an den relevanten Stellen zu finden.

[edit]Du hattest das Problem der Nichtspeicherung deiner Einstellungen ja schon angesprochen. Wo du immer wieder den vollzogenen Umzug deines Forums ansprichst, kommt mir in diesem Zusammenhang der Gedanke, dass du mal deine Datenbankverbindungseinstellungen überprüfen solltest (config/db_settings.php), nicht, dass du die eins-zu-eins vom alten Forum mitgenommen hast und irgendwas fehlkonfiguriert ist.[/edit]


Ich habe gerade nachgesehen, da stimmen alle Angaben.

Nun gut. Wäre auch zu einfach gewesen. :-)

Das Forum braucht ganz offensichtlich einen Debug-Mode, in dem die PHP- wie auch etwaige MySQL-Meldungen an den Admin durchgereicht werden (Error Log entweder am Bildschirm oder als Datei).


Was bedeutet das?

Während der Entwicklung von PHP-Skripten arbeitet man am besten mit der Anzeige aller Meldungen, die PHP einem liefert. So spürt man von Parsing-Fehlern bis zur nicht initialisierten Variable alle Fehler, die dem PHP-Interpreter aufstoßen, auf. Die Meldungen werden im Browser ausgegeben. Das geschieht mit folgendem Code am Anfang eines jeden direkt aufzurufenden Skripts.

ini_set('display_errors', 1);
error_reporting(E_ALL);

Im laufenden Betrieb ist das aber kontraproduktiv. Einerseits sollten dann keine solchen Meldungen erscheinen, weil man deren Ursachen beseitigt hat, andererseits verunsichern sie die einen Benutzer und geben anderen (den "Bösen") Anhaltspunkte für Angriffsszenarien. Deshalb landen dennoch anfallende Meldungen dann in einer Datei auf dem Server außerhalb der DocRoot, wo nur du als Admin (z.B. per FTP) Zugriff hast. Für Meldungen, die von MySQL stammen, gilt das Gleiche. Während der Entwicklung gehören sie in die Browserausgabe, danach in die Logdatei.

In deinem Fall liegt die Sache etwas anders. Das nicht erfolgende Speichern der Einstellungen fällt in die oben beschriebene Kategorie, das Senden bestimmter Emails an die falsche Adresse aber nicht.

Die Email wird an das in der php.ini angegebenen Emailserverprogramm übergeben, es gibt also keinen PHP-Fehler. Es müsste also über die versendeten Emails Buch geführt werden. Da gehört, so angegeben, der Absender, der oder die Empfänger und der Zweck/Betreff der Email rein, nicht aber der Text. Somit ließe sich feststellen, dass z.B. eine Passwortreminder-Email gesendet wurde und an wen die Email ging.

So, um mal den Code durchzuarbeiten:

Der Vorgang der Neuvergabe eines Passworts setzt sich aus mehreren Schritten zusammen. Als erstes sagt man an, dass man sein Passwort vergessen hat. Es wird ein vorübergehend gültiger Code generiert und eine Email gesendet. Als Betroffener muss man nun einen Link in dieser Email betätigen, um ein neues Passwort zu vergeben. Dabei wird der Code aus der DB mit dem aus der Email verglichen, um den Betätiger des Links zu authentifizieren.

Das läuft in mlf2 so (siehe includes/login.inc.php). Im Abschnitt case "pw_forgotten_submitted" wird die erste Email mit dem zu betätigenden Link generiert und gesendet, im folgenden Abschnitt case "activate" wird der Link aus der ersten Email ausgewertet und eine zweite Email gesendet, in der das neue Passwort steht.

Allerdings wirst du, so du PHP-Quelltexte lesen kannst, feststellen, dass in keinem der beiden Abschnitte eine Email an den Admin generiert wird. Nach dem Lesen der Benutzerdaten, dem Generieren des vorübergehend notwendigen Codes bzw. des neuen Passworts und deren Hinterlegung in der DB wird der Text der Emails zusammengesetzt und an die Funktion my_mail übergeben. In beiden Fällen wird als erster Parameter der Empfänger der Email ($field['user_email']), der aus der jeweils ersten Abfrage der Benutzerdaten im konkreten Block stammt, übergeben.

Ermittelt werden die Benutzerdaten über die eingegebene Emailadresse (case "pw_forgotten_submitted") bzw. bei case "activate" über die in der ersten gesendeten ersten Email angegebene user-ID (GET-Parameter activate).

Auch die aufgerufene Funktion my_mail (siehe functions.inc.php) enthält keinen Hinweis auf eine Kopie an den Admin. Es wird aber zwingend ein Header eingefügt, der den Absender der Email enthält. Der enthält entweder einen im Skript an die Funktion übergebenen Absender oder, so dieser nicht an die Funktion übergeben wurde, die Forumsemailadresse, die typischerweise mit der des Admins übereinstimmt.

<spekulation>Vorstellen könnte ich mir, dass die Konfiguration des Emailaccounts bei deinem Webspaceanbieter so aussieht, dass du eine Kopie aller über den Emailaccount gesendeten Emails erhältst.</spekulation>

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?

Tschö, Auge

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

Und noch ein Problem

by Birgit ⌂, Monday, September 13, 2010, 07:12 (4975 days ago) @ Auge
edited by Birgit, Monday, September 13, 2010, 07:36

Hallo Auge,

Welche Version war denn auf dem alten Server installiert? Das Changelog gibt Auskunft über die Änderungen der einzelnen Versionen, ich möchte aber nicht alles durchsuchen müssen um etwaige Änderungen an den relevanten Stellen zu finden.

Tja, schon wieder ein Irrtum. Es war die gleiche Version installiert wie die jetzige. Ich wusste das nicht, da ich das Forum damals nicht selbst installiert hatte und mir gesagt wurde, dass es schon eine Nachfolge-Version gibt.

Nun gut. Wäre auch zu einfach gewesen. :-)

Stimmt. ;-)

Während der Entwicklung von PHP-Skripten arbeitet man am besten mit der Anzeige aller Meldungen, die PHP einem liefert. So spürt man von Parsing-Fehlern bis zur nicht initialisierten Variable alle Fehler, die dem PHP-Interpreter aufstoßen, auf. Die Meldungen werden im Browser ausgegeben. Das geschieht mit folgendem Code am Anfang eines jeden direkt aufzurufenden Skripts.

ini_set('display_errors', 1);
error_reporting(E_ALL);

Im laufenden Betrieb ist das aber kontraproduktiv. Einerseits sollten dann keine solchen Meldungen erscheinen, weil man deren Ursachen beseitigt hat, andererseits verunsichern sie die einen Benutzer und geben anderen (den "Bösen") Anhaltspunkte für Angriffsszenarien. Deshalb landen dennoch anfallende Meldungen dann in einer Datei auf dem Server außerhalb der DocRoot, wo nur du als Admin (z.B. per FTP) Zugriff hast. Für Meldungen, die von MySQL stammen, gilt das Gleiche. Während der Entwicklung gehören sie in die Browserausgabe, danach in die Logdatei.

In deinem Fall liegt die Sache etwas anders. Das nicht erfolgende Speichern der Einstellungen fällt in die oben beschriebene Kategorie, das Senden bestimmter Emails an die falsche Adresse aber nicht.

Die Email wird an das in der php.ini angegebenen Emailserverprogramm übergeben, es gibt also keinen PHP-Fehler. Es müsste also über die versendeten Emails Buch geführt werden. Da gehört, so angegeben, der Absender, der oder die Empfänger und der Zweck/Betreff der Email rein, nicht aber der Text. Somit ließe sich feststellen, dass z.B. eine Passwortreminder-Email gesendet wurde und an wen die Email ging.

So, um mal den Code durchzuarbeiten:

Der Vorgang der Neuvergabe eines Passworts setzt sich aus mehreren Schritten zusammen. Als erstes sagt man an, dass man sein Passwort vergessen hat. Es wird ein vorübergehend gültiger Code generiert und eine Email gesendet. Als Betroffener muss man nun einen Link in dieser Email betätigen, um ein neues Passwort zu vergeben. Dabei wird der Code aus der DB mit dem aus der Email verglichen, um den Betätiger des Links zu authentifizieren.

Das läuft in mlf2 so (siehe includes/login.inc.php). Im Abschnitt case "pw_forgotten_submitted" wird die erste Email mit dem zu betätigenden Link generiert und gesendet, im folgenden Abschnitt case "activate" wird der Link aus der ersten Email ausgewertet und eine zweite Email gesendet, in der das neue Passwort steht.

Allerdings wirst du, so du PHP-Quelltexte lesen kannst, feststellen, dass in keinem der beiden Abschnitte eine Email an den Admin generiert wird. Nach dem Lesen der Benutzerdaten, dem Generieren des vorübergehend notwendigen Codes bzw. des neuen Passworts und deren Hinterlegung in der DB wird der Text der Emails zusammengesetzt und an die Funktion my_mail übergeben. In beiden Fällen wird als erster Parameter der Empfänger der Email ($field['user_email']), der aus der jeweils ersten Abfrage der Benutzerdaten im konkreten Block stammt, übergeben.

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

Ermittelt werden die Benutzerdaten über die eingegebene Emailadresse (case "pw_forgotten_submitted") bzw. bei case "activate" über die in der ersten gesendeten ersten Email angegebene user-ID (GET-Parameter activate).

Auch die aufgerufene Funktion my_mail (siehe functions.inc.php) enthält keinen Hinweis auf eine Kopie an den Admin. Es wird aber zwingend ein Header eingefügt, der den Absender der Email enthält. Der enthält entweder einen im Skript an die Funktion übergebenen Absender oder, so dieser nicht an die Funktion übergeben wurde, die Forumsemailadresse, die typischerweise mit der des Admins übereinstimmt.

<spekulation>Vorstellen könnte ich mir, dass die Konfiguration des Emailaccounts bei deinem Webspaceanbieter so aussieht, dass du eine Kopie aller über den Emailaccount gesendeten Emails erhältst.</spekulation>

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. 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.

Trotzdem sollten Sie zusätzlich einmal den Server aufsuchen und ggf. versuchen, ihn abzusichern. Evtl. laufen dort ja auch noch weitere Scripte, wo so ebenfalls Möglichkeiten zum Angriff gegeben werden.

Diese Sicherheitslücke entsteht dadurch, dass es leider immer noch
Server/Hoster gibt, die eine derart unsichere Einstellung auf Ihren Servern fahren, dass dieser Angriff überhaupt möglich wurde.

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?

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. :-( Mit den Mails, die über das Forum verschickt werden, verhält es sich genauso, ich bekomme sie auch. 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...

Danke nochmals für deine ausführlichen Erklärungen und Hilfestellungen!

--
Best wishes,
Birgit

Avatar

Und noch ein Problem

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!

Und noch ein Problem

by Birgit ⌂, Monday, September 13, 2010, 10:48 (4975 days ago) @ Auge

Hallo Auge,

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

Ich hoffe es jedenfalls...

Schon passiert?

Ja, das habe ich gestern erledigt. Es war ein Link in der Mail, über den ich meine Dateien patchen lassen konnte. Die neuen Dateien habe ich dann hochgeladen.

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.

Es steht alles auf "ON" und ich kann es auch nicht selbst ändern. Da müsste ich wohl den Provider kontaktieren, oder?

In MyLittleForum sind solche Vorgaben fest verdrahtet, also gibt es keine Einschleusungsmöglichkeiten[1].

Also kann es daran auch nicht liegen, verstehe ich das richtig?

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

Ich habe keine Ahnung! Ich bin da wirklich komplett ratlos. Den Umzug des Forums hat die Firma gemacht, von der ich auch die Gästebücher habe. Ich bin mir sicher, dass dort alles in Ordnung ist. Und ich selbst habe noch nie irgendwas am Quelltext verändert, kann ich ja gar nicht.

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.

Ah, das hatte ich bisher noch in keinem der Foren, aber wenn man es abstellen kann, ist es ja okay.

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

Dankeschön!

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

Das wäre auch etwas viel verlangt.

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

Daran möchte ich gar nicht denken...

--
Best wishes,
Birgit

Avatar

Und noch ein Problem

by Auge ⌂, Monday, September 13, 2010, 16:45 (4975 days ago) @ Birgit

Hallo Birgit

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

Ich hoffe es jedenfalls...

Die Einstellungen kannst nur du vergleichen.

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.

Es steht alles auf "ON" und ich kann es auch nicht selbst ändern. Da müsste ich wohl den Provider kontaktieren, oder?

Da dein Hoster confixx/plesk anbietet, könnte es sein, dass du da selbst Hand anlegen kannst. Mein Hoster bietet mir jedenfalls an, einige Einstellungen für PHP selbst festzulegen. Darunter fallen sowohl Dinge wie register_globals oder magic_quotes (auch so ein Kandidat für zerschossene Daten bei entsprechender Programmierung) als auch die Wahl zwischen PHP4 und PHP5[1]. Ansonsten ist tatsächlich dein Hoster am Zug.

In MyLittleForum sind solche Vorgaben fest verdrahtet, also gibt es keine Einschleusungsmöglichkeiten[1].

Also kann es daran auch nicht liegen, verstehe ich das richtig?

Unter Berücksichtigung der Fußnote: ja.

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

Ich habe keine Ahnung!

Das war eine rhetorische Frage. :-)

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.

Ah, das hatte ich bisher noch in keinem der Foren, aber wenn man es abstellen kann, ist es ja okay.

Zur Konkretisierung: Abstellen lassen funktioniert, die Email für den Admin auf Absender, Adressaten und Zweck der Email zu beschränken ist ein Feature Request.

[1] Wobei ich mich frage, warum PHP4 überhaupt noch angeboten wird. Die letzte Sicherheitsaktualisierung ist schon über zwei Jahre her.

Tschö, Auge

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

Und noch ein Problem

by Birgit ⌂, Monday, September 13, 2010, 18:19 (4975 days ago) @ Auge

Hallo Auge,

Die Einstellungen kannst nur du vergleichen.

Ich sehe da auf Anhieb keine Unterschiede, aber für mich sind das alles ja auch chinesische Schriftzeichen. ;-)

Da dein Hoster confixx/plesk anbietet, könnte es sein, dass du da selbst Hand anlegen kannst. Mein Hoster bietet mir jedenfalls an, einige Einstellungen für PHP selbst festzulegen. Darunter fallen sowohl Dinge wie register_globals oder magic_quotes (auch so ein Kandidat für zerschossene Daten bei entsprechender Programmierung) als auch die Wahl zwischen PHP4 und PHP5[1]. Ansonsten ist tatsächlich dein Hoster am Zug.

Ich habe so eine PHP-Test-Datei erstellt, die dann auf den Server hochgeladen und eine Art "Flyer" zu sehen bekommen mit allen möglichen Einstellungen. An der Stelle kann ich jedenfalls nichts ändern, da werde ich dann morgen mal den Provider um Hilfe bitten.

In MyLittleForum sind solche Vorgaben fest verdrahtet, also gibt es keine Einschleusungsmöglichkeiten[1].

Also kann es daran auch nicht liegen, verstehe ich das richtig?


Unter Berücksichtigung der Fußnote: ja.

Das ist zwar gut, aber nun muss weitergeforscht werden, was wieder nicht so gut ist...

Das war eine rhetorische Frage. :-)

Ach so. :-D

Zur Konkretisierung: Abstellen lassen funktioniert, die Email für den Admin auf Absender, Adressaten und Zweck der Email zu beschränken ist ein Feature Request.

Verstehe, aber Abstellen reicht ja erstmal.

[1] Wobei ich mich frage, warum PHP4 überhaupt noch angeboten wird. Die letzte Sicherheitsaktualisierung ist schon über zwei Jahre her.

Dir Frage kann ich dir leider nicht beantworten, aber ich reiche sie morgen an den Provider weiter. Muss nur mal sehen, wie ich das formuliere, damit er mich auch versteht. ;-)
Danke für deine Geduld!

--
Best wishes,
Birgit

Avatar

Und noch ein Problem

by Alfie ⌂, Vienna, Austria, Wednesday, September 15, 2010, 12:43 (4973 days ago) @ Birgit

Hallo Birgit!

Ich habe so eine PHP-Test-Datei erstellt, die dann auf den Server hochgeladen und eine Art "Flyer" zu sehen bekommen mit allen möglichen Einstellungen.

Passt schon. Du solltest die Ausgabe nach den üblichen Verdächtigen (siehe Auge's Posts) wie register_globals = on durchsuchen. Die Datei solltest du unbedingt wieder vom Server löschen (kann ja von außen eingesehen werden und liefert jedem potentiellen Angreifer detailierte Informationen über deine Einstellungen).

An der Stelle kann ich jedenfalls nichts ändern,...

Ja, ist nur eine Abfrage der Einstellungen.

... da werde ich dann morgen mal den Provider um Hilfe bitten.

Falls er nicht gewillt ist die Einstellungen zu ändern, ist noch nichts verdorben. Vermulich hast du eine .htaccess in deinem document-root Verzeichnis. Falls ja, füge einfach diese Zeile ein:

# Uebergabe von globalen Variablen an Skripte aus (PHP default: on)
php_flag register_globals off

Falls nicht, erstelle so eine Datei mit einem Texteditor - und achte darauf, dass sie keine Dateiendung hat (der Windows-Editor z.B. fügt automatisch die Endung .txt an).

--
Cheers,
Alfie (Helmut Schütz)
BEBA-Forum (v1.8β)

Und noch ein Problem

by Birgit ⌂, Wednesday, September 15, 2010, 14:32 (4973 days ago) @ Alfie

Hallo Alfie,

dankeschön für die Hilfestellung! Eine .htaccess-Datei habe (oder finde?) ich leider nicht, trotzdem meine ich, sowas schonmal gesehen zu haben, hm...

Ich habe gestern von meinem Provider folgende Auskunft bekommen:

Es ist mit unseren Webhosting Produkten möglich, sowohl PHP4 (standardmäßig aus
Kompatibilitätsgründen aktiv) als auch PHP5 zu nutzen.

Bitte beachten Sie hierzu folgenden FAQ-Beitrag:

http://faq.netclusive.de/80_245_de.html

Um entsprechende PHP-Direktiven abzuändern beachten Sie bitte folgenden FAQ-Beitrag:

http://faq.netclusive.de/80_259_de.html

Bei weiteren Fragen stehen wir Ihnen gerne zur Verfügung.

Mit freundlichen Grüßen aus Montabaur

Noch habe ich mich aber nicht rangetraut, mit sowas fühle ich mich schnell überfordert. Auge hat aber jetzt schon ein paar grobe Fehler herausgefunden, und ich bin dabei sie zu beseitigen, Dzu gehört z.B. die Entfernung doppelter settings-Einstellungen in der Datenbank, wie auch immer die zustande kamen...

--
Best wishes,
Birgit

RSS Feed of thread