Code mit 777-Berechtigung in PHP-Datei eingefügt

Code mit 777-Berechtigung in PHP-Datei eingefügt

Als ich aufwachte, stellte ich fest, dass alle Ordner in meinem gemeinsam genutzten Webhost mit der Berechtigung 777 zwei neue PHP-Dateien enthielten. Der Code in der Datei konnte nicht gelesen werden – hier ist die dekodierte Version:http://pastie.org/779226(Was zum...?) Dieser Code wurde sogar in einige PHP-Dateien eingefügt.

Ich bin ratlos, WIE jemand so etwas machen würde. Ich weiß, dass die Berechtigung 777 nicht die klügste Sache ist, aber wie sind sie überhaupt in mein Ordnersystem gelangt?

Ich bin nur ein Client-Programmierer und es wäre toll, wenn ich ein paar Tipps hätte, wie ich dies in Zukunft verhindern kann.

Prost.

Antwort1

Hier ist die entschlüsselte Version des Skripts:http://pastie.org/private/iobgt7aetg8mezoepucsg

Der Code scheint externen PHP-Code von einer anderen Website einzubinden und sammelt dabei Informationen über Ihre Besucher.

Dies könnte beispielsweise dadurch geschehen sein, dass Sie Datei-Uploads in ein von außen zugängliches Verzeichnis zulassen. Dies ohne ordnungsgemäße Validierung zu tun, ist gefährlich, da ein böswilliger Benutzer eine PHP-Datei (unter Verwendung Ihres Bild-Uploads) mit bösartigem Code hochladen kann. Wenn der Webserver nicht richtig konfiguriert ist, wird der Code bei Anforderung ausgeführt.

Um solche Probleme zu vermeiden, stellen Sie Folgendes sicher:

  • PHP-Prozesse werden von einem eingeschränkten Benutzer ausgeführt.
  • Dateien, die nicht bearbeitet werden müssen, sind so eingestellt, dass sie nur vom Eigentümer beschreibbar sind (0644 oder 0744, je nachdem, ob Sie das Ausführungsbit benötigen oder nicht).
  • Legen Sie nur das Upload-Verzeichnis auf beschreibbar fest.
  • Versuchen Sie, ein Upload-Verzeichnis zu verwenden, das sich außerhalb Ihres Webroots befindet. Verwenden Sie dannreadfile()um die Datei bereitzustellen.
  • Validieren Sie die Dateien. Wenn Ihr Formular nur Bilder zulassen soll, validieren Sie die magischen Teile und stellen Sie sicher, dass das Bild gültig ist. Dieser Schritt wird häufig übersehen. Dasselbe gilt für jedes andere Format. Verlassen Sie sich nicht auf die Dateierweiterung oder den vom Client gesendeten MIME-Typ. Überprüfen Sie den tatsächlichen Dateiinhalt.

Antwort2

Mir fallen da mindestens zwei Möglichkeiten ein:

  1. Sie haben Ihr FTP-Passwort gefunden
  2. Sie haben einen Fehler in Ihrer PHP-Software gefunden

So können Sie dies verhindern:

  1. Verwenden Sie ein komplexes Passwort (mindestens 9 Zeichen, Groß- und Kleinschreibung, Ziffern und Sonderzeichen)
  2. Lauf von 777, als wäre es die Nummer des Tieres; versuche, dem Webserver zu gebennicht mehrals Leseberechtigungen für Ihre Skripte und erteilen Sie den (hoffentlich seltenen) Ordnern/Dateien, in die geschrieben werden muss, spezielle Berechtigungen.

Wenn Sie Zugriff auf einige Protokolle haben (die Zugriffsprotokolle von Apache und die FTP-Protokolle von dem FTP-Server, auf dem Ihre Website läuft), könnte das hilfreich sein, um herauszufinden, was passiert ist.

Es ist zweifelhaft, dass sie trotz eines einfachen Fehlers in Ihren Skripten so viele Änderungen vornehmen konnten, es sei denn, es handelt sich um einen wirklich gravierenden Fehler (z. B. wenn Sie ein ungeschütztes Skript haben, das fopen() nur über das wickelt, was der Benutzer möchte). Ich würde also die FTP-Anmeldepriorität überprüfen.

verwandte Informationen