it-swarm.com.de

Ist es einem Hacker möglich, eine PHP-Datei herunterzuladen, ohne sie vorher auszuführen?

Ich habe eine PHP-Website, auf der sich alles im Ordner public_html\befindet, einschließlich eines Ordners includes mit Konfiguration und Klassen. Ich sagte meinem Entwickler, er solle es aus dem öffentlichen Ordner entfernen, aber er sagte, es bestehe kein Risiko, da Dateien PHP-Dateien sind und selbst wenn jemand den Browser eingibt

www.example.com/includex/config.php

alles, was sie bekommen, ist eine leere Seite.

Ist das korrekt? Gibt es keine Möglichkeit, dass jemand eine PHP-Datei herunterladen und sehen kann, was sich darin befindet, selbst wenn sich ein Hacker auf meinem Server anmeldet, um die Datei herunterzuladen oder sie mit XSS in eine PHP-Datei auf seinem Server aufzunehmen?

35
Petja Zaichikov

Zum Lesen von PHP Code benötigen Sie ein Directory Traversal Vulnerability . file_get_contents() oder ein anderes Dateisystemfunktionen, die ausgenutzt werden können =.

SQL Injection unter MySQL kann zum Lesen von Quellcode verwendet werden. Zum Beispiel:

select load_file("/var/www/index.php")

Um dies zu bekämpfen, stellen Sie sicher, dass file_privs sind für das von PHP verwendete MySQL-Benutzerkonto deaktiviert. Wenn display_errors = on In Ihrer PHP-Konfiguration kann ein Angreifer den Pfad zu Ihrem Webstamm abrufen und mithilfe von SQL-Injection oder Directory Traversal den Quellcode lesen.

Die Verwendung von FTP bedeutet, dass der Quellcode im Klartext übertragen wird. Verwenden Sie SFTP , und stellen Sie sicher, dass Sie ein sicheres Passwort haben - oder noch besser, richten Sie einen RSA-Schlüssel ein.

Achten Sie auf Sicherungsdateien, manchmal erstellen Editoren index.php~ oder index.php.orig Dateien, die mit erzwungenes Browsen entdeckt werden können.

22
rook

Neben serverseitigen Schwachstellen aller Art sind auch durchgesickerte FTP-Passwörter ein wichtiges Anliegen. Es gibt eine Klasse von clientseitigen Infektionen, die Ihre gespeicherten FTP-Kennwörter von Programmen wie CuteFTP, FileZilla und DreamWeaver abrufen und die Anmeldeinformationen an einen Angreifer senden. Dies ist sehr häufig. Ich habe persönlich Hunderte, vielleicht Tausende von Fällen gesehen, in denen dies passiert ist. Und normalerweise ist die Person, die die Passwörter unwissentlich durchgesickert ist, jemand, der sie sowieso nicht mehr haben muss.

Und wenn Sie sich fragen, ob ein Angreifer tatsächlich Ihre Konfigurationsdateien nach Passwörtern durchsucht, lautet die Antwort eindeutig " yes ". Normalerweise ist dies eines der ersten Dinge, die ein Angreifer innerhalb von Minuten nach dem Kompromittieren einer neuen Maschine tun wird.

13
tylerl

Es gibt zwei Möglichkeiten, wie ein Angreifer diese Datei als Text lesen kann, anstatt sie auszuführen.

  1. Wenn Ihr Webserver falsch konfiguriert ist, wird die PHP möglicherweise nicht ausgeführt. Sie müssen natürlich PHP installiert haben und serverseitig ausführen sowie einen Webserver haben, der dies unterstützt. Wenn aus irgendeinem Grund etwas mit Ihrer PHP-Installation schief geht, ist es theoretisch möglich, die PHP-Datei "raw" herunterzuladen. Dies ist jedoch unwahrscheinlich.

  2. Wenn dieses Skript (oder andere dynamische Seiten auf der Site) eine LFI-Sicherheitsanfälligkeit (Local File Inclusion) aufweist, kann eine Datei angezeigt werden, die sich auf dem Webserver befindet. Siehe die Wikipedia-Seite zu Sicherheitslücken bei der Aufnahme von Dateien, um zu sehen, wie dies aussehen würde.

Abgesehen davon ist es erwähnenswert, dass, um PHP Dateien überhaupt) zu verwenden, diese für erreichbar sein müssen Es gibt keine Möglichkeit, die Seite zu "verbergen", es sei denn, Sie haben ein anderes Skript, das sie an anderer Stelle ausführt.

4
dshaw

Durchgesickerte FTP-Passwörter sind alle sehr verbreitet und stellen eine der häufigsten Methoden dar, mit denen Quelldateien entfernt werden. Auf den Entwickler-Websites installierte Malware ist weit verbreitet .

Eine der nicht so gebräuchlichen Methoden und nach meinem Kenntnisstand ist nur einer bestimmten Anzahl von Personen bekannt. Wenn Sie Ihre Website jedoch auf dem Linux-Webserver entwickeln, auf dem die Website gehostet wird, kann es zu Problemen bei der Bearbeitung kommen Die Software speichert Backups von bearbeiteten Dateien, die in der Entwickleransicht verborgen sind, z.

Login.php ~

Auf diese Datei kann durch Eingabe zugegriffen werden, da sie nicht vom Webserver ausgeführt wird

Dies würde die Quelle der Datei backup login.php offenlegen, um dies zu verhindern. Sie müssten entweder Ihren Site-Code entwickeln und auf den Server hochladen oder sicherstellen, dass keine Sicherungsdateien in einem Verzeichnis gespeichert sind, über das die Öffentlichkeit verfügt Zugriff auf.

Quelle: 2600 Magazin

Was passiert, wenn ein Angreifer darauf zugreifen konnte?

databaseConnection.php ~

Dann bist du wirklich ein verdammter Bach

3
Bratislava Bob

Wie andere antworteten, sollte dies nicht möglich sein. Sie können jedoch nicht sagen, dass es für einen Angreifer absolut unmöglich ist, Ihren PHP Quellcode) zu lesen.

Beispielsweise kann es eine Sicherheitsanfälligkeit geben, die es einem Angreifer ermöglicht, Dateien auf dem Webserver anzuzeigen, einschließlich Raw-Code PHP). Oder ein Angreifer kann möglicherweise Ihr FTP-Kennwort ermitteln, was auch möglich ist Dies geschieht auf viele Arten, einschließlich Man-in-the-Middle-Angriffe und Social Engineering . Es gibt viele Möglichkeiten. Im Folgenden habe ich einige Schwachstellen aufgeführt, die dies ermöglichen könnten. Aber unter dem Strich sollte es kein Risiko für sich sein, nur PHP Dateien im Ordner public_html) zu haben.


Eine download.php Datei, die einen GET/POST-Parameter mit dem Namen der herunterzuladenden Datei verwendet und Benutzereingaben nicht richtig filtert, könnte das Herunterladen des Rohcodes von a ermöglichen Datei auf der Website, indem Sie auf eine Adresse wie diese zugreifen: http://www.example.com/files/download.php?file=../index.php . Siehe this .

Ein weiteres Beispiel: Wenn es eine Sicherheitsanfälligkeit gibt, die es einem Angreifer ermöglicht, Code auf Ihrem Server auszuführen, z. B. Local/Remote File Inclusion , Sicherheitsanfälligkeiten beim Hochladen von Dateien und andere, es könnte ihm auch möglich sein, Code auszuführen, mit dem er Ihren PHP Quellcode) lesen kann.

0
mds

Solange die Dinge auf dem Server korrekt eingerichtet sind, sollten PHP -Dateien als Skripte registriert und vom Webserver von PHP auf Anfrage und nur auf diese Weise interpretiert werden) Zeigen Sie die Ergebnisse dieser Interpretation an.

Eine beliebige Anzahl von Problemen kann jedoch dazu führen, dass Dateien verfügbar gemacht werden. Einige dieser Probleme können auch Daten verfügbar machen, unabhängig davon, ob sie sich in einem öffentlichen Ordner befinden oder nicht. Es ist immer wichtig sicherzustellen, dass Ihr Server ordnungsgemäß konfiguriert ist, um nur die Anforderungen zuzulassen, die Sie benötigen. Dies reduziert die für Angriffe verfügbare Oberfläche und hilft, mögliche Fehlerprobleme zu vermeiden, die zu einem Verstoß führen können.

Ist es eine gute Idee, eine Konfigurationsdatei in einem öffentlichen Ordner zu haben? Solange der Server so konfiguriert ist, dass die Datei nicht ohne Verarbeitung ausgegeben wird, ist sie wahrscheinlich nicht viel weniger sicher als jeder andere Punkt auf dem System. Es besteht nur eine geringe Wahrscheinlichkeit, dass ein Fehler im Webserver verwendet wird, um die Ausführung durch die Scripting-Engine zu verhindern. Die wahrscheinlicheren Angriffe sind jedoch Angriffe, die aus einer anderen Richtung wie SQL, FTP oder einer Code-Injektion in einem privaten Ordner erfolgen wäre gleichermaßen ausgesetzt.

Die Kehrseite der Frage ist jedoch, warum man sie nicht woanders hinstellt. Die sicherste Option wäre, es an einen Ort zu bringen, an dem nur der Benutzer, auf dem die Instanz PHP PHP) ausgeführt wird, über einen anderen Mechanismus (z. B. den FTP-Benutzer oder) auf die Datei zugreifen und den Zugriff darauf verweigern kann andere öffentlich genutzte Benutzer.) Dies ist jedoch ziemlich schwierig zu konfigurieren und zu verwalten, sodass eine Entscheidung getroffen werden muss, ob die zusätzliche Sicherheit erforderlich ist oder nicht.

Es ist ein Wurf, der am besten ist. Es ist eine Menge zusätzlicher Arbeit, alle Pfade, Berechtigungen und Benutzer zu verwalten, um dieses Sicherheitsniveau aufrechtzuerhalten. Auf der anderen Seite sollten Sie, solange der Server gepatcht und ordnungsgemäß konfiguriert ist, nur für Zero-Day-Exploits anfällig sein, die auf einer sehr niedrigen Ebene angreifen und vor nahezu allen gängigen Angriffen geschützt sind, selbst wenn die Konfigurationsdatei aktiviert ist der öffentliche Ordner.

0
AJ Henderson