Gestern war meine Seite enthalten. Der Angreifer ändert die index.php-Datei in ihre eigene (mit all ihren Ruhm Nachrichten und grüßen). Ich habe das Hosting-Unternehmen darüber informiert (wir laufen auf einem dedizierten Server), und ich versuche, alles zu beheben, was die Ursache zu sein scheint, denn ich kann immer noch nicht zeigen, wie genau wir es getan haben Der Server wurde angegriffen, aber ich glaube, ich habe bestimmte skriptbasierte Schlupflöcher gefunden, die möglicherweise der Schuldige sein könnten.
Unsere Seite hat ein Bild-Uploader-Formular, aber alle hochgeladenen Bilder werden überprüft, ob es sich tatsächlich um eine Bilddatei und nicht um einige Codes handelt, indem Sie die php getimagesize-Funktion verwenden. Nur wenn der Bildtyp IMAGETYPE_GIF oder IMAGETYPE_JPEG oder IMAGETYPE_PNG ist, werden sie akzeptiert. Anderenfalls können sie die Datei nicht hochladen. Allerdings habe ich festgestellt, dass eine hochgeladene Bilddatei ein PHP-Skript enthält! Sie können das Bild hier herunterladen. Es ist eine gültige Bilddatei, aber versuchen Sie, das Bild mit einem Texteditor zu öffnen, und Sie werden darin einen PHP-Code finden:
%Vor%Beispielsweise wird das Bild an diesen Ort hochgeladen (www.mysite.com/uploads/picodes.jpg). Beachten Sie, dass die Berechtigung zum Hochladen von Ordnern 755 ist. Gibt es irgendeinen Weg in der Welt, dass der Angreifer das System ausführen kann (oder irgendeinen anderen Befehl wie zB Pass-Thru, da wir ein anderes Bild gefunden haben, das denselben Code versteckt wie oben) , hat es passthru Befehl), indem Sie zum Beispiel www.mysite.com/uploads/picodes.jpg?cmd=some Befehl eingeben ?? Von meinem Wissen kann es nicht getan werden (wirklich schätzen, wenn jemand mich falsch erweisen kann), es sei denn, der Angreifer kann die JPG-Datei in php umbenennen, und selbst das sind diese Codes tief im Bild versteckt (siehe Bild im Inneren) Texteditor zu verstehen, was ich sagen will)
Vorsorglich habe ich diese PHP-Funktionen (exec, passthru, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, system) deaktiviert, indem ich sie zu den disable_functions in php.ini hinzufüge.
Wie auch immer, ich denke immer noch, dass der Angreifer Zugang nicht über das Internet erhält, sondern über den Server-Exploit, aber ich denke, meine Hosting-Firma denkt anders.
Bilddatei mit beliebigem PHP-Code kann nicht mit direkter Anfrage an sie ausgenutzt werden, z. http://www.mysite.com/uploads/image.jpg?cmd=somecode
.
Trotzdem kann es mit der Sicherheitsanfälligkeit für lokale Dateieinschlüsse verwendet werden.
Wenn Sie beispielsweise in index.php include('pages/' . $_GET['page'] . '.php');
verwenden, kann der Angreifer ein Bild mit PHP-Code hochladen und Befehle wie folgt ausführen: http://www.mysite.com/index.php?page=../upload/image.jpg?cmd=somecode%00
UPD: Datei in URL zu Seite
geändertDies ist möglicherweise keine Sicherheitslücke in Ihrem Code. Ich hatte das gleiche vor ein paar Wochen. Obwohl ALLE meine index.php Dateien entfernt wurden, sind auch solche nicht direkt im Web erreichbar. In meinem Fall war es ein Sicherheitsloch in Linux. Nichts mit meinem Code zu tun. Dies war die Antwort meines Hosting-Anbieters (A2Hosting) bezüglich des Problems. Nachdem ich sie davon überzeugt hatte, dass es nichts war, was ich tat, haben sie es ziemlich schnell herausgefunden.
"Ein neuer Exploit im Linux-Kernel war Wird verwendet, um administrativen (Root-) Zugriff auf Benutzer Verzeichnisse auf der Server. Der Angriff bestand darin, die in. Gefundenen Indexdateien zu entfernen Verzeichnisse und ersetzt sie durch den gewünschten Angreifer Inhalt: Eine schwarze Webseite mit dem Codenamen des Angreifers, "iSKORPiTX (Türkischer Hacker) ". Dieser Hack war massiv über das Internet und verwendet eine eine bisher unbekannte Schwachstelle, die unsere Fähigkeit einschränkt, sie zu verhindern. "
Meine Bilddatei Hochlader-Einstellung sind: Upload-Datei in Temp-Ordner, create neues Bild mit imagecreatefromjpeg oder imagecreatefrompng oder imagecreatefromgif und speichern, löschen hochgeladene Datei aus Temp-Ordner (all diese Dinge passiert innerhalb der gleichen Skript-Aktion, so Datei hochgeladen in temporärer Ordner existiert nicht lange)