Leser wie Sie helfen, MUO zu unterstützen. Wenn Sie über Links auf unserer Website einen Kauf tätigen, erhalten wir möglicherweise eine Affiliate-Provision. Weiterlesen.

Datei-Upload-Module sind eines der schwächsten Glieder in Webanwendungen. Jeder Fehler, selbst wenn Sie ihn für klein halten, könnte dazu führen, dass die Serverkontrolle direkt in die Hände eines Cyberangreifers fällt. Aus diesem Grund müssen Softwareentwickler die häufigsten Fehler und einige Angriffsmethoden kennen, die auftreten können.

Was also ist clientseitige Manipulation? Wie können Sie dagegen ankämpfen, um Ihre Websites und Ihre Benutzer zu schützen?

Was ist clientseitige Manipulation?

Clientseitige Manipulation ist das Grundkonzept von Angriffen auf Webanwendungen als Ganzes. Einfach ausgedrückt bedeutet dies, dass Sie den Daten, die Sie an den Benutzer senden, nicht mehr vertrauen können. Darüber hinaus ist die clientseitige Manipulation eine der Grundlagen der sicheren Anwendungsentwicklung. Wenn Sie das Datei-Upload-Modul untersuchen, mit dem Sie es zu tun haben, und eine clientseitige Manipulation in Betracht ziehen, gehören zu den Daten, denen Sie nicht vertrauen können, folgende:

instagram viewer

  • Der Name der hochgeladenen Datei.
  • Der Inhaltstyp der hochgeladenen Datei.

Diese beiden Artikel sind wo Sie haben die Möglichkeit zur Whitelist als Softwareentwickler. Die Namensdaten der hochgeladenen Datei können alles enthalten, was manipuliert werden kann. Mit den Content-Type-Daten der hochgeladenen Datei, selbst wenn der Angreifer eine .exe-Datei hochlädt, kann diese Datei als Bild/JPEG im System erscheinen.

Dateierweiterung und Whitelist

Bei der Entwicklung von Datei-Upload-Modulen ist das erste, was zu tun ist den Whitelisting-Prozess für die Dateierweiterung. Ein Benutzer möchte beispielsweise eine Datei mit dem Namen "muo.jpeg" hochladen. Sie müssen sicherstellen, dass diese Dateierweiterung, die der Benutzer hochladen möchte, .jpeg ist. Dazu sollte das System die hochgeladene Datei prüfen und prüfen, ob es sich um eine der zulässigen Dateierweiterungen handelt. Um zu verstehen, wie Sie dies tun können, untersuchen Sie den folgenden einfachen PHP-Code:

$file_parts = pathinfo($filename);
schalten($file_parts['extension'])
{
Fall "jpg":
brechen;

Fall "Schläger": // Oder exe, dll, so usw.
brechen;

Fall "":
FallNULL: // Keine Dateierweiterung
brechen;
}

Sie können dies mit einem ähnlichen Codeblock wie dem obigen tun, oder Sie können die Klassen und Funktionen verwenden, die von dem von Ihnen verwendeten Framework bereitgestellt werden.

Achten Sie darauf, keine Dateierweiterungsdaten zu erstellen, indem Sie den Dateinamen anhand des Punktzeichens (.) analysieren, da der Angreifer diesen Prüfschritt mit einem Dateinamen wie "muo.jpeg.php" umgehen kann.

Was sind Inhaltstypinformationen?

Informationen zum Inhaltstyp sind Informationen, die in der HTTP-Anforderung für jeden Datei-Upload gesendet werden. Der Internetbrowser erkennt diese Informationen und fügt sie der gesendeten Anfrage hinzu. Der Angreifer kann versuchen, die Informationen durch clientseitige Manipulation zu ändern und serverseitige Validierungen zu umgehen. In dieser Phase benötigen Entwickler einen Kontrollmechanismus, um Validierungen über die Content-Type-Informationen vorzunehmen. Dies allein wird nicht ausreichen; Dennoch ist es ein wichtiges Thema, auf das Entwickler achten müssen.

Angenommen, Sie codieren einen Mechanismus, um die Dateierweiterung korrekt zu überprüfen, und Sie akzeptieren nur Dateien mit der Erweiterung .jpeg. Zusätzlich zu diesem Vorsichtsmechanismus können Sie die Informationen zum Inhaltstyp einfach überprüfen Fall und akzeptieren nur Dateien mit Bild-/JPEG-Informationen, eine zusätzliche Schutzebene gegen Cyberangriffe

SWF-Flash-Dateien und Angriffsschritte

Die Dateierweiterung und die Content-Type-Daten haben für Internetbrowser, die Plug-Ins wie Adobe Flash Player unterstützen, keine Bedeutung. Obwohl die Unterstützung für diesen Player nicht mehr verfügbar ist, ist es immer noch möglich, diese zugehörigen Dateien auf vielen Systemen zu installieren. obwohl Flash ein Sicherheitsrisiko bleibt. In einem System, das nicht die entsprechenden Vorkehrungen getroffen hat, ist es möglich, eine Flash-Datei mit der aufzurufen -Tag, unabhängig von seiner Erweiterung. Dies wird ein weiteres ernsthaftes Sicherheitsproblem verursachen.

Um Maßnahmen ergreifen zu können, müssen Entwickler die Wege kennen, die Cyberkriminelle einschlagen können. So kann es passieren:

  1. Der böswillige Angreifer lädt eine SWF-Datei (ein Adobe Flash-Dateiformat) mit dem Namen „image.jpeg“ auf die Zielwebsite hoch. Während des Upload-Vorgangs wird in der Whitelisting-Überprüfung bestätigt, dass die vom Angreifer hochgeladene Datei die Erweiterung .jpeg hat. Die Überprüfung des Inhaltstyps wird durch clientseitige Manipulation umgangen. Stellen Sie sich vor, diese vom Angreifer hochgeladene Datei geht zu „www (dot) target-site (dot) com/images/images.jpeg“.
  2. Angenommen, der Angreifer hat eine Website namens attacker (dot) com. Der Angreifer ruft die auf die Zielseite hochgeladene image.jpeg-Datei auf dieser Website auf, indem er die -Tag mit der Typzuordnung Anwendung/x-shockwave-flash.
  3. Ein unschuldiger Benutzer meldet sich bei attacker (dot) com an. Diese Site ruft die SWF-Datei unter www (Punkt) Ziel-Site (Punkt) com/images/image.jpeg auf und führt die an die SWF übergebenen Befehle aus.
  4. Dadurch kann der Cyberangreifer HTTP-Anforderungsaktionen für die Zielseite (Punkt) com-Adresse erstellen, ohne dass normale Benutzer dies bemerken. Mit diesen Anfragen nutzt der Angreifer die Sitzung des unschuldigen Benutzers und umgeht sie der CSRF-Check.

Um dieses Angriffsszenario besser zu verstehen, betrachten Sie den folgenden Code als im HTML enthalten Inhalt, der vom Angreifer (dot) com an den Benutzer gesendet wird:

Stil="Höhe: 1px; Breite: 1px;" Daten="www.target-site.com/images/image.jpeg" Typ="Anwendung/x-Shockwave-Flash" allowscriptaccess="stets" flashvars="c=lesen&u = etwas"

Eine der besten Lösungen ist der Zugriff auf die hochgeladenen Dateien mit Datei-Upload über eine andere Subdomain. Im oben genannten Szenario können Sie auf statische Dateien nicht von derselben Domäne, sondern von einer anderen Subdomäne wie folgt zugreifen: „http (Doppelpunkt)//Datei.Ziel-Site (Punkt) com/images/image.jpeg“.

Eine andere Lösung ist das Hinzufügen Inhaltsdisposition: Anhang Informationen zur HTTP-Antwort, wenn Sie eine Anfrage für den Zugriff auf die Dateien erhalten, die Sie hochladen möchten.

Treffen Sie Vorsichtsmaßnahmen für Sicherheitslücken beim Hochladen von Dateien

Jeder Datei-Upload, den Benutzer auf eine Website vornehmen können, ist gefährlich, daher ist dies eines der Probleme, denen Entwickler die größte Aufmerksamkeit schenken sollten. Wenn Angreifer eine solche Schwachstelle entdecken, können sie eine Shell innerhalb der Site öffnen und die Informationen auf dem Server einfach ausnutzen. Es ist äußerst wichtig, alle von Benutzern hochgeladenen Dateien zu kontrollieren, Whitelist-Methoden anzuwenden und den Speicherort des hochgeladenen Verzeichnisses nach Möglichkeit zu verbergen.

Und natürlich gibt es viele weitere zusätzliche Schritte, die Sie unternehmen müssen, um Ihre Website zu schützen, selbst wenn Sie alle empfohlenen Vorsichtsmaßnahmen zum Hochladen von Dateimodulen treffen. Die Verwendung von HTTP-Sicherheitsheadern ist ein solcher Schritt, den Sie unternehmen können.