Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

Web-Sicherheitsaudit für CS6262: XSS, DOM-basierte Angriffe und Client-Side Persistenz

Lerne die Grundlagen eines Web-Sicherheitsaudits am Beispiel des CS6262-Projekts: Reflektiertes XSS, DOM-Manipulation, Promise-Timeout-Logik und clientseitige Persistenz moderner Web-Apps.

CS6262 Web Security XSS Tutorial Deutsch reflektiertes XSS erkennen DOM-based XSS clientseitige Persistenz Schwachstelle JavaScript Sicherheitsaudit Developer Tools Sicherheit setTimeout setInterval Sicherheit Promise Closure Fehler localStorage Angriff Penetrationstest Web App CS6262 Projekt 2 Lösung Web Sicherheit Studium Sicherheitsaudit Schritt für Schritt XSS Payload erstellen moderne Web App Sicherheit

Einführung in das Web-Sicherheitsaudit für CS6262

Die CS6262 Security Club-Website ist ein Content-Management-System (CMS) mit Funktionen wie Textsuche, Dark Mode und Rich-Text-Editor. Deine Aufgabe als neues Clubmitglied ist ein Penetrationstest, um Schwachstellen wie Cross-Site Scripting (XSS) und unsichere clientseitige Speicherung zu identifizieren. Diese Anleitung zeigt dir die wichtigsten Techniken, ohne die Lösung vorwegzunehmen.

1. Developer Tools als erstes Werkzeug

Moderne Browser bieten Entwicklertools (F12), mit denen du JavaScript ausführen, HTML inspizieren und Netzwerkverkehr analysieren kannst. Ein erster Schritt: Öffne die Konsole und gib console.log('deineGTID'); ein – so siehst du, ob die Seite auf Konsolenausgaben reagiert. Dies ist typisch für Debugging-Zwecke, aber Angreifer nutzen die Konsole, um Skripte zu testen.

2. JavaScript-Timer und Promises verstehen

Im Projekt wirst du aufgefordert, mit setInterval und setTimeout einen Zähler von 5 auf 0 zu reduzieren. Ein Beispiel mit setTimeout (rekursiv):

var counter = 5;
function countDown() {
  if(counter > 0) {
    counter--;
    setTimeout(countDown, 1000);
  }
}
countDown();

Solche Timer werden in Web-Apps häufig für Animationen oder Sitzungszeitüberschreitungen verwendet. Ein Angreifer könnte sie manipulieren, um wiederholte Aktionen auszulösen.

Das Promise-Beispiel aus der Aufgabenstellung zeigt eine asynchrone Schleife:

for (var i = 0; i < 3; i++) {
  const promise = new Promise((resolve, reject) => {
    setTimeout(resolve, 1000 + i*1000);
  });
  promise.then(() => alert(i));
}

Hier wird nach 1, 2 und 3 Sekunden jeweils ein Alert mit 3 ausgegeben, weil die Schleife bereits abgeschlossen ist, bevor die Promises aufgelöst werden. Das ist ein klassischer Closure-Fehler – in modernem Code mit let oder einer IIFE behebbar.

3. Reflektiertes XSS erkennen

Die Aufgabe verlangt, eine reflektierte XSS-Schwachstelle zu finden. Das bedeutet: Ein Parameter in der URL wird ungefiltert in die Seite eingefügt. Beispiel: https://cs6262.gtisc.gatech.edu/suche?q=<script>alert(1)</script>. Wenn die Seite den Wert von q direkt in den HTML-Code setzt, wird das Skript ausgeführt. Nutze die Entwicklertools, um zu prüfen, welche Parameter nicht escaped werden.

4. Von reflektiertem zu persistentem XSS

Einmaliges Klicken auf einen manipulierten Link ist riskant. Besser ist ein persistenter Angriff, bei dem der bösartige Code dauerhaft auf dem Client gespeichert wird. Viele moderne Web-Apps nutzen localStorage oder IndexedDB, um Benutzereinstellungen wie Dark Mode oder Editor-Theme zu speichern. Ein Angreifer könnte dort ein Skript hinterlegen, das bei jedem Seitenaufruf ausgeführt wird.

Ein aktuelles Beispiel: In einer KI-gestützten Lernplattform (wie ChatGPT oder Duolingo) werden Präferenzen clientseitig gespeichert. Wenn eine XSS-Lücke besteht, könnte ein Angreifer das Theme überschreiben und einen Keylogger einbetten. Ähnlich wie bei der CS6262-Website solltest du prüfen, ob die Dark-Mode-Einstellung unsicher gespeichert wird.

5. DOM-basierte Schwachstellen

Neben reflektiertem XSS gibt es DOM-based XSS, bei dem das Skript durch clientseitigen JavaScript-Code erzeugt wird, z. B. durch document.write oder innerHTML. Ein häufiger Fehler: Die Verwendung von location.hash oder location.search ohne Bereinigung. Beispiel: Wenn die Seite den Hash-Wert in den DOM einfügt, kann ein Link wie https://cs6262.gtisc.gatech.edu/#<img src=x onerror=alert(1)> den Angriff auslösen.

6. Praktische Übung: Sicherheitsaudit durchführen

  1. Informationssammlung: Analysiere die HTML-Struktur und identifiziere alle Eingabefelder (Suche, Login, Profil).
  2. Teste reflektiertes XSS: Füge in Parameter wie ?q=<script>alert('XSS')</script> ein und beobachte die Antwort.
  3. Prüfe clientseitige Speicher: Öffne die Entwicklertools unter „Application“ und durchsuche localStorage/sessionStorage nach unsicheren Werten.
  4. Dokumentiere die Funde: Erstelle einen Bericht mit den gefährdeten Endpunkten und möglichen Auswirkungen.

7. Verbindung zu aktuellen Trends

Im Jahr 2026 sind Web-Sicherheitsaudits relevanter denn je: KI-Chatbots, die in Websites eingebettet sind, speichern oft Konversationen im Client-Cache. Ein XSS-Angriff könnte diese Daten stehlen. Auch Electron-Apps (wie Discord oder Slack) sind anfällig, da sie auf Chromium basieren. Die Techniken aus CS6262 sind direkt auf solche Anwendungen übertragbar.

Fazit

Ein gründliches Sicherheitsaudit erfordert Verständnis von JavaScript-Timern, Promises, DOM-Manipulation und clientseitiger Persistenz. Mit den Entwicklertools und systematischen Tests kannst du Schwachstellen wie reflektiertes XSS und unsichere Speicherung aufdecken. Die CS6262-Website bietet eine ideale Übungsumgebung, um diese Fähigkeiten zu trainieren.