javascript injection tutorial
Was ist Javascript-Injektion?
Javascript ist eine der beliebtesten Technologien und wird am häufigsten für Webseiten und Webanwendungen verwendet.
Es kann zur Realisierung verschiedener Website-Funktionen verwendet werden. Diese Technologie kann jedoch einige Sicherheitsprobleme mit sich bringen, die Entwickler und Tester berücksichtigen sollten.
Javascript kann nicht nur für gute Zwecke verwendet werden, sondern auch für einige böswillige Angriffe. Eines davon ist Javascript Injection. Die Essenz von JS Injection besteht darin, den Javascript-Code einzufügen, der von der Clientseite ausgeführt wird.
In diesem Tutorial erfahren Sie mehr darüber, wie Sie überprüfen können, ob Javascript Injection möglich ist, wie JS Injection durchgeführt werden kann und welche Konsequenzen JS Injection haben kann.
Was du lernen wirst:
- Risiken der JavaScript-Injektion
- Warum ist es wichtig, JS Injection zu testen?
- Vergleich mit anderen Angriffen
- Überprüfen auf JavaScript-Injektion
- Parameteränderung
- Designänderung der Website
- Testen gegen JavaScript-Injektion
- Möglicher Schutz gegen diesen Angriff
- Fazit
- Literatur-Empfehlungen
Risiken der JavaScript-Injektion
JS Injection bietet einem böswilligen Benutzer viele Möglichkeiten, das Design der Website zu ändern, Website-Informationen abzurufen, die angezeigten Website-Informationen zu ändern und mit den Parametern (z. B. Cookies) zu manipulieren. Daher kann dies zu ernsthaften Schäden an der Website, Informationslecks und sogar Hack führen.
Der Hauptzweck von JS Injection besteht darin, das Erscheinungsbild der Website zu ändern und die Parameter zu bearbeiten. Die Folgen von JS Injection können sehr unterschiedlich sein - von der Beschädigung des Website-Designs bis zum Zugriff auf das Konto eines anderen.
Warum ist es wichtig, JS Injection zu testen?
Viele würden fragen, ob das Testen auf JS Injection wirklich notwendig ist.
Das Überprüfen auf JS Injection-Schwachstellen ist Teil der Sicherheitstests. Sicherheitstests werden normalerweise nur durchgeführt, wenn sie in die Projektplanung einbezogen wurden, da dies Zeit, viel Aufmerksamkeit und die Überprüfung mehrerer Details erfordert.
Mir ist aufgefallen, dass es während der Realisierung des Projekts durchaus üblich ist, Tests gegen mögliche Angriffe - einschließlich JS Injection - zu überspringen. Auf diese Weise versuchen die Teams, Zeit für das Projekt zu sparen. Diese Praxis endet jedoch sehr oft mit Beschwerden des Kunden.
Es sollte bekannt sein, dass Sicherheitstests dringend empfohlen werden, auch wenn sie nicht in den Projektplänen enthalten sind. Es sollte nach möglichen Hauptangriffen gesucht werden. Gleichzeitig muss nach möglichen JS Injection-Schwachstellen gesucht werden.
Einfaches Javascript verlassen Schwachstellen bei der Injektion Das Produkt kann die Qualität des Produkts und den Ruf des Unternehmens kosten. Immer wenn ich gelernt habe, gegen mögliche Angriffe und allgemeine Sicherheitstests zu testen, überspringe ich diesen Teil des Testens nie. Auf diese Weise bin ich mir der Qualität des Produkts nur sicherer.
Vergleich mit anderen Angriffen
Es sollte erwähnt werden, dass JS Injection nicht so riskant ist wie SQL-Injektion , da es auf der Clientseite ausgeführt wird und die Systemdatenbank nicht erreicht, wie dies während eines SQL Injection-Angriffs der Fall ist. Außerdem ist es nicht so riskant wie ein XSS-Angriff.
Während dieses Angriffs kann zeitweise nur das Erscheinungsbild der Website geändert werden, während der Hauptzweck des XSS-Angriffs darin besteht, andere Anmeldedaten zu hacken.
JS Injection kann jedoch auch schwerwiegende Schäden an der Website verursachen. Es kann nicht nur das Erscheinungsbild der Website zerstören, sondern auch eine gute Grundlage für das Hacken der Anmeldedaten anderer Personen sein.
Überprüfen auf JavaScript-Injektion
Wenn Sie mit dem Testen gegen JS Injection beginnen, sollten Sie zunächst prüfen, ob JS Injection möglich ist oder nicht. Das Überprüfen auf diese Art der Injektionsmöglichkeit ist sehr einfach. Wenn Sie zur Website navigieren, müssen Sie den Adress-Barcode des Browsers wie folgt eingeben:
Javascript: alert (‘Executed!’);
Wenn ein Popup-Fenster mit der Meldung 'Ausgeführt!' Angezeigt wird, ist die Website für JS Injection anfällig.
Anschließend können Sie in der Adressleiste der Website verschiedene Javascript-Befehle ausprobieren.
Es sollte erwähnt werden, dass JS Injection nicht nur über die Adressleiste der Website möglich ist. Es gibt verschiedene andere Elemente der Website, die möglicherweise für JS Injection anfällig sind. Das Wichtigste ist, genau zu wissen, welche Teile der Website von Javascript Injection betroffen sein können und wie man sie überprüft.
Typische JS-Injektionsziele sind:
- Verschiedene Foren
- Kommentarfelder des Artikels
- Gästebücher
- Alle anderen Formulare, in die Text eingefügt werden kann.
Um zu testen, ob dieser Angriff für das Textspeicherformular möglich ist, geben Sie Javascript-Code wie unten beschrieben ein, speichern Sie den Text im Formular und aktualisieren Sie die Seite.
Javascript: alert (‘Executed!’);
Wenn die neu geöffnete Seite ein Textfeld mit der Meldung 'Ausgeführt!' Enthält, ist diese Art von Injektionsangriff für das getestete Formular möglich.
Wenn auf beide Arten ein Textfeld mit der Nachricht angezeigt wird, können Sie versuchen, die Website mit schwierigeren JS Injection-Methoden zu unterbrechen. Anschließend können Sie verschiedene Einspritzarten ausprobieren - Parameteränderung oder Konstruktionsänderung.
Natürlich wird die Änderung von Parametern als riskanter angesehen als die Änderung des Designs. Daher sollte beim Testen der Änderung der Parameter mehr Aufmerksamkeit gewidmet werden.
Es sollte auch berücksichtigt werden, dass die anfälligeren Teile der Website für Javascript Injection Eingabefelder sind, in denen alle Arten von Daten gespeichert werden.
Parameteränderung
Wie bereits erwähnt, ist eine der möglichen Schäden an der Javascript-Injektion die Änderung von Parametern.
Während dieses Injektionsangriffs kann ein böswilliger Benutzer Parameterinformationen abrufen oder einen beliebigen Parameterwert ändern( Beispiel ,Cookie-Einstellungen). Dies kann sehr ernsthafte Risiken verursachen, da ein böswilliger Benutzer vertrauliche Inhalte erhalten kann. Eine solche Art der Injektion kann mit einigen Javascript-Befehlen durchgeführt werden.
Denken Sie daran, dass der Javascript-Befehl, der das aktuelle Sitzungscookie zurückgibt, entsprechend geschrieben ist:
Javascript: alert (document.cookie);
Wird in die URL-Leiste des Browsers eingegeben, wird ein Popup-Fenster mit aktuellen Sitzungscookies zurückgegeben.
Wenn die Website Cookies verwendet, können wir Informationen wie die Server-Sitzungs-ID oder andere in den Cookies gespeicherte Benutzerdaten lesen.
Es muss erwähnt werden, dass anstelle von alert () jede andere Javascript-Funktion verwendet werden kann.
Zum Beispiel ,Wenn wir eine anfällige Website gefunden haben, speichert diese die Sitzungs-ID im Cookie-Parameter 'session_id'. Dann können wir eine Funktion schreiben, die die aktuelle Sitzungs-ID ändert:
Javascript: void (document.cookie = “session_id =<>');
Auf diese Weise wird der Sitzungs-ID-Wert geändert. Es sind auch andere Möglichkeiten zum Ändern von Parametern möglich.
Zum Beispiel, Ein böswilliger Benutzer möchte sich als andere Personen anmelden. Um eine Anmeldung durchzuführen, ändert der böswillige Benutzer zunächst die Einstellungen für Autorisierungscookies auf true. Wenn die Cookie-Einstellungen nicht als 'true' festgelegt sind, kann der Cookie-Wert als 'undefined' zurückgegeben werden.
am besten kostenlos youtube to mp3 converter online
Um diese Cookie-Werte zu ändern, führt ein böswilliger Benutzer gemäß dem Befehl Javascript in der URL-Leiste des Browsers Folgendes aus:
Javascript: void (document.cookie = 'authorisation = true');
Im Ergebnis wird der aktuelle Cookie-Parameter authorisation = false in authorisation = true geändert. Auf diese Weise kann ein böswilliger Benutzer auf vertrauliche Inhalte zugreifen.
Es muss auch erwähnt werden, dass Javascript-Code manchmal sehr vertrauliche Informationen zurückgibt.
Javascript: alert (document.cookie);
Zum Beispiel, Wenn der Entwickler einer Website nicht vorsichtig genug war, kann er auch Namen und Werte der Benutzernamen- und Kennwortparameter zurückgeben. Diese Informationen können dann zum Hacken der Website oder zum Ändern des Werts des vertraulichen Parameters verwendet werden.
Zum Beispiel, Mit dem folgenden Code können wir den Benutzernamen ändern:
Javascript: void (document.cookie = ”username = otherUser”);
Auf diese Weise können auch andere Parameterwerte geändert werden.
Designänderung der Website
Javascript kann auch verwendet werden, um das Formular einer Website und im Allgemeinen das Design der Website zu ändern.
Zum Beispiel, Mit Javascript können Sie alle auf der Website angezeigten Informationen ändern:
- Angezeigter Text.
- Hintergrund der Website.
- Erscheinungsbild des Website-Formulars.
- Erscheinungsbild des Popup-Fensters.
- Das Erscheinungsbild eines anderen Website-Elements.
Zum Beispiel, Um die auf der Website angezeigte E-Mail-Adresse zu ändern, sollte der entsprechende Javascript-Befehl verwendet werden:
Javascript: void (document.forms (0) .email.value = 'Test@test.com') ;;
Es sind auch nur wenige andere komplizierte Manipulationen am Design der Website möglich. Mit diesem Angriff können wir auch auf die CSS-Klasse der Website zugreifen und diese ändern.
Zum Beispiel, Wenn wir das Hintergrundbild der Website mit JS Injection ändern möchten, sollte der Befehl entsprechend ausgeführt werden:
Javascript: nichtig (Dokument. Hintergrundbild: URL ('other-image.jpg');
Ein böswilliger Benutzer kann auch Javascript Injection-Code schreiben, der unten im Formular zum Einfügen von Text aufgeführt ist, und ihn speichern.
Javascript: void (Warnung („Hallo!“));
Jedes Mal, wenn eine Seite geöffnet wird, wird ein Textfeld mit der Meldung „Hallo!“ Angezeigt.
Das Design der geänderten Website mit Javascript Injection ist weniger riskant als die Änderung von Parametern. Wenn jedoch das Design der Website auf böswillige Weise geändert wird, kann dies den Ruf des Unternehmens kosten.
Testen gegen JavaScript-Injektion
Es kann auf folgende Arten getestet werden:
- Manuell
- Mit Testwerkzeugen
- Mit Browser-Plugins
Mögliche Javascript-Schwachstellen können manuell überprüft werden, wenn Sie genau wissen, wie sie ausgeführt werden sollen. Es kann auch mit verschiedenen Automatisierungstools getestet werden.
Zum Beispiel, Wenn Sie Ihre Tests auf API-Ebene mit dem SOAP UI-Tool automatisiert haben, können Sie auch Javascript Injection-Tests mit ausführen SOAP-Benutzeroberfläche .
Ich kann jedoch nur aus eigener Erfahrung sagen, dass Sie wirklich gute Kenntnisse über das SOAP UI-Tool haben sollten, um es für JS Injection zu testen, da alle Testschritte fehlerfrei geschrieben werden sollten. Wenn ein Testschritt falsch geschrieben ist, kann dies auch zu falschen Sicherheitstestergebnissen führen.
Außerdem finden Sie verschiedene Browser-Plugins, mit denen Sie mögliche Angriffe überprüfen können. Es wird jedoch empfohlen, nicht zu vergessen, manuell gegen diesen Angriff zu prüfen, da er normalerweise genauere Ergebnisse liefert.
Ich möchte sagen, dass ich mich durch manuelles Testen mit Javascript Injection sicherer und sicherer über die Sicherheit der Website fühle. Auf diese Weise können Sie sicher sein, dass beim Testen kein Formular übersehen wurde und alle Ergebnisse für Sie sichtbar sind.
Um gegen Javascript Injection zu testen, sollten Sie allgemeine Kenntnisse über Javascript haben und wissen, welche Teile der Website anfälliger sind. Beachten Sie außerdem, dass die Website möglicherweise vor JS Injection geschützt ist, und versuchen Sie beim Testen, diesen Schutz aufzuheben.
Auf diese Weise können Sie sicher sein, ob der Schutz vor diesem Angriff stark genug ist oder nicht.
Möglicher Schutz gegen diesen Angriff
Um diesen Angriff zu verhindern, sollte zunächst jede empfangene Eingabe validiert werden. Die Eingabe sollte jedes Mal überprüft werden und nicht nur, wenn die Daten zum ersten Mal akzeptiert werden.
Es wird dringend empfohlen, sich nicht auf die clientseitige Validierung zu verlassen. Es wird auch empfohlen, eine wichtige Logik auf der Serverseite auszuführen.
Viele versuchen, sich vor Javascript Injection zu schützen, indem sie die Anführungszeichen in double ändern, und Javascript-Code sollte nicht auf diese Weise ausgeführt werden.
Zum Beispiel, Wenn Sie etwas mit Anführungszeichen in das Kommentarfeld schreiben würden, werden diese Anführungszeichen durch double - ersetzt.<>...<>. Auf diese Weise wird der eingegebene Javascript-Code nicht ausgeführt.
Ich habe festgestellt, dass das Ersetzen von Anführungszeichen durch doppelte Anführungszeichen eine weit verbreitete Praxis ist, um mögliche JS Injection-Angriffe zu vermeiden. Es gibt jedoch einige Möglichkeiten, die Anführungszeichen zu codieren, damit JS Injection-Code ausgeführt wird. Daher ist das Ändern von Anführungszeichen in Double kein perfekter Schutz vor diesem Angriff.
Fazit
Es sollte immer bedacht werden, dass Javascript Injection einer der möglichen Angriffe auf Websites ist, da Javascript eine der am häufigsten verwendeten Technologien für Websites ist. Daher sollte beim Testen von Websites oder anderen Webtechnologien nicht vergessen werden, gegen diesen Angriff zu testen.
Bei der Durchführung von Sicherheitstests sollte JS Injection nicht vergessen werden. Einige Leute betrachten diesen Test als weniger riskanten Angriff, da er auf der Client-Seite durchgeführt wird.
Es ist jedoch der falsche Ansatz und wir sollten uns immer daran erinnern, dass Javascript Injection schwerwiegende Schäden an der Website verursachen kann, z. B. das Auslaufen vertraulicher Informationen, das Ändern von Parametern oder das Hacken der Benutzerkonten.
Daher sollten wir dies als einen wichtigen Teil des Testens betrachten und es ist ein Teil der Investition für den guten Ruf von Produkten und Unternehmen.
Das Testen auf JS-Injektion ist nicht sehr schwierig. Zunächst sollten Sie über allgemeine Kenntnisse in Javascript verfügen und wissen, wie Sie überprüfen können, ob dieser Angriff für die aktuelle Weblösung möglich ist oder nicht.
Auch beim Testen sollten Sie bedenken, dass eine Website Schutz gegen diese Art von Angriff bieten kann, aber möglicherweise zu schwach ist - sie sollte auch überprüft werden. Ein weiterer wichtiger Punkt ist, dass es verschiedene Arten von Javascript-Injektionsangriffen gibt und keiner von ihnen zum Testen vergessen werden sollte.
Haben Sie Javascript Injection Testing durchgeführt? Wir würden uns freuen, von Ihnen zu hören. Teilen Sie uns Ihre Erfahrungen im Kommentarbereich unten mit.
Literatur-Empfehlungen
- Ausführliche Eclipse-Tutorials für Anfänger
- So richten Sie das Node.js-Testframework ein: Node.js-Lernprogramm
- HTML Injection Tutorial: Typen & Prävention mit Beispielen
- Tutorial zum Testen von SQL-Injektionen (Beispiel und Verhinderung von SQL-Injektionsangriffen)
- Java Reflection Tutorial mit Beispielen
- SVN Tutorial: Quellcodeverwaltung mit Subversion
- Python DateTime Tutorial mit Beispielen
- Schildkröte SVN Tutorial: Überarbeitungen im Code Repository