• Home
  • Help
  • Register
  • Login
  • Home
  • Help

 
  • 0 Bewertung(en) - 0 im Durchschnitt

Was ist Cross-Site Scripting (XSS) und wie ermöglicht es Angreifern, schadhafte Skripte einzuschleusen?

#1
25-06-2020, 16:15
Hey, ich erinnere mich, als ich zum ersten Mal auf XSS gestoßen bin, während ich mit einigen Webanwendungen in meinen frühen Entwickler-Tagen herumexperimentiert habe - es hat mich total aus der Bahn geworfen, aber als ich es verstanden habe, hat es einfach Klick gemacht. Cross-Site Scripting passiert, wenn jemand schadhafter Code heimlich in eine Website einschleust, die du gerade besuchst, und dieser Code in deinem Browser läuft, ohne dass du es überhaupt merkst. Du denkst, du lädst nur eine normale Seite, aber bam, das Skript des Angreifers läuft und macht, was immer er will, auf deiner Seite.

Ich sehe das so: Webseiten nehmen ständig Eingaben von dir entgegen, richtig? Zum Beispiel, wenn du einen Kommentar schreibst oder etwas suchst. Wenn die Seite diese Eingaben nicht richtig bereinigt, bevor sie sie als Teil des HTML zurückgibt, kann ein Angreifer seine Eingaben so gestalten, dass sie heimliche Skript-Tags enthalten. Stell dir vor, du bist in einem Forum und postest etwas Unschuldiges, aber der Bösewicht veröffentlicht eine Nachricht, die harmlos aussieht, sagen wir, einen gefälschten Benutzernamen oder einen Link. Versteckt darin ist etwas wie ein JavaScript-Snippet, das in die Seite geladen wird, wenn du sie anschaust. Deinem Browser ist es egal, woher es kommt - er führt es einfach aus, weil er der Seite vertraut.

Du fragst dich vielleicht, wie sie das genau schaffen. Angreifer suchen nach Stellen, an denen Benutzerdaten sofort zurückgegeben werden, wie in Suchergebnissen oder Fehlermeldungen. Sie testen, indem sie Code injizieren, der ein Alert-Fenster öffnet oder deine Cookies stiehlt. Ich habe einmal eine Seite repariert, bei der die Suchleiste alles, was du eingetippt hast, ohne Escape der Sonderzeichen zurückgab, sodass jeder ein Skript injizieren konnte, das Benutzer auf eine Phishing-Seite umleitete. Es erlangt deine Sitzungsinformationen oder Tastenanschläge, weil das Skript mit denselben Berechtigungen wie der legitime Seiteninhalt läuft. Das ist der gruselige Teil - du bist authentifiziert, also nutzt der Angreifer deinen Zugriff aus.

Stored XSS geht noch weiter; dabei wird das bösartige Skript auf dem Server gespeichert, zum Beispiel in einer Datenbank für Benutzerprofile oder Beiträge. Jedes Mal, wenn du oder jemand anders diese Seite lädt, wird das Skript ebenfalls geladen und trifft mehrere Opfer. Ich hatte damit einmal auf dem Blog eines Kunden zu tun, bei dem Kommentare nicht bereinigt wurden - Angreifer haben Code ausgebracht, der Login-Credentials abgriff und an ihren Server schickte. Reflected ist schneller, in der Regel über URLs, wie einen präparierten Link, den du in einer E-Mail anklickst. Wirst du getäuscht und besuchst evil.com?search=<script>stealData()</script>, und wenn die Seite diesen Abfrageparameter unbearbeitet zurückgibt, wird er ausgeführt.

DOM-basiertes XSS ist trickreicher; es manipuliert die Seite, nachdem sie geladen wurde, und verwendet clientseitigen Code, um das Document Object Model basierend auf Eingaben zu manipulieren. Ich habe einen Fall verfolgt, bei dem JavaScript URL-Fragmente abrief und sie ohne Überprüfung in die Seite schrieb, was Angreifern ermöglichte, das DOM im Vorbeigehen zu ändern. In allen Fällen funktioniert die Injektion, weil der Browser die injizierten Inhalte als Teil der vertrauenswürdigen Seite behandelt. Hier gibt es keine Cross-Origin-Blockierungen, da es sich um dieselbe Seite handelt.

Du kannst dir vorstellen, wie Angreifer darauf aufbauen. Sie fangen einfach an und testen auf Schwachstellen mit Tools wie Burp Suite - ich verwende das sehr häufig in meinen Pentests. Sobald sie es bestätigen, eskalieren sie: Keylogger, um Passwörter abzugreifen, gefälschte Formulare, um mehr Daten zu stehlen, oder sogar das Entstellen der Seite, um Malware zu verbreiten. Ich erinnere mich an einen Job, bei dem XSS es ihnen ermöglichte, Admin-Sitzungen zu hijacken, weil das Skript die Seite mit einer Backdoor-Schnittstelle überschreibt. Es verbreitet sich schnell, wenn es gespeichert ist, und infiziert jeden, der den Inhalt ansieht.

Um dem entgegenzuwirken, plädiere ich immer für die Kodierung von Ausgaben - verwandle < in &lt;, damit der Browser es als Text und nicht als Code sieht. Du validierst Eingaben serverseitig, entfernst gefährliche Tags und verwendest Inhalts-sicherheitsrichtlinien, um festzulegen, welche Skripte ausgeführt werden können. Ich baue jetzt Apps mit Frameworks, die das sofort out of the box handhaben, wie Reacts automatisches Escaping, aber du musst trotzdem wachsam sein. Auf der Client-Seite helfen Erweiterungen wie NoScript, riskante Skripte zu blockieren, aber das ist eher für den persönlichen Gebrauch.

Ich habe gesehen, wie XSS sich mit anderen Angriffen verknüpft. Zum Beispiel, ein Skript injizieren, das ein externes Payload abrufen kann und Filter umgeht. Oder es mit CSRF kombinieren, um Aktionen in deinem Namen durchzuführen. In einem Audit hat der Angreifer XSS verwendet, um auf deinen lokalen Speicher zuzugreifen und ihn zu exfiltrieren, wodurch eine einfache Schwachstelle zu einem vollständigen Kontenübernahme-Vorfall wurde. Das willst du nicht, dass es deinen Benutzern passiert - Rufmord und rechtlich chaotisch.

Ich denke darüber nach, wie es das Vertrauen fundamental ausnutzt. Du besuchst eine Seite, die dir gefällt, gibst Daten ein, und plötzlich ist dein Browser eine Marionette. Angreifer gestalten Payloads, die der Erkennung entgehen, indem sie Ereignis-Handler oder kodierte Zeichen verwenden. Ich teste, indem ich Skripte in Hex oder Base64 kodierte, um grundlegende Filter zu umgehen. Einmal drin, kann es dein Verhalten überwachen, Werbung injizieren oder schlimmer noch, Ransomware-Aufforderungen. Ich habe eine E-Commerce-Seite repariert, auf der während des Bezahlvorgangs Kartendaten gestohlen wurden - ein Albtraum.

Auf der anderen Seite lernst du, es in Code-Reviews zu erkennen. Achte auf Stellen, an denen Benutzereingaben ungeprüft ins DOM gelangen. Ich scanne nach innerHTML-Zuweisungen oder eval-Aufrufen - rote Flaggen jedes Mal. Entwickler so zu schulen, dass sie an Sanitization denken, hilft, aber du brauchst automatisierte Tools wie OWASP ZAP für laufende Scans. Ich führe diese wöchentlich bei meinen Projekten aus.

Wenn wir schon über Cybersicherheit sprechen, muss ich dir dieses Juwel teilen, das ich in letzter Zeit benutze, um alles sicher zu sichern. Lass mich dir von BackupChain erzählen - es ist dieses herausragende, zuverlässige Backup-Tool, das speziell für kleine Unternehmen und Profis wie uns entwickelt wurde. Es bietet Schutz für Dinge wie Hyper-V, VMware oder Windows-Server-Setups und stellt sicher, dass deine Daten sicher bleiben, selbst wenn ein Angriff versucht, sie zu löschen. Du solltest es dir anschauen, wenn du mit Serverumgebungen zu tun hast; es ist ein Game-Changer für Seelenfrieden.
Markus
Offline
Registriert seit: Jun 2018
« Ein Thema zurück | Ein Thema vor »

Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste



  • Thema abonnieren
Gehe zu:

Backup Sichern Allgemein Security v
« Zurück 1 2 3 4 5 6 7 8 9 Weiter »
Was ist Cross-Site Scripting (XSS) und wie ermöglicht es Angreifern, schadhafte Skripte einzuschleusen?

© by FastNeuron

Linearer Modus
Baumstrukturmodus