Session Fixation - Im Namen der ehrlichen Nutzer, Version 14

Alte Version

Dies ist eine alte Version des Inhalts in unserem Archiv. Besuchen Sie die aktuelle Version dieser Seite.

Diese Version wurde von David Danier am 25. Nov. 2010 um 09:22 Uhr erstellt.
Bemerkung des Bearbeiters: typo

Änderungen gegenüber vorheriger Version anzeigen


Verwandte Angriffe:

Kurze Beschreibung:

Austauschen der Session-ID eines Nutzers durch eine eigene bzw. eine gewünschte Session-ID. Nach der Anmeldung des Nutzers gilt die gefälschte Session-ID vom Nutzer und vom Angreifer für den Server als dieselbe.

Folgen:

Der Angreifer bekommt den Zugang in den personalen Nutzerbereich der Applikation solange wie die Session-ID gültig ist und kann somit die Nutzerdaten verändern und löschen oder auch im Namen des Nutzers die Funktionalität der Anwendung nutzen.

Funktionsweise:

Die Session-ID kann auf verschiedene Weisen ausgetauscht werden. Solche sind:

  • Durch Unterschieben der Session-ID über JavaScript, wenn eine Cross-Site Scripting Sicherheitslücke vorliegt
  • Durch Unterschieben einer präparierten URL, die der Nutzer aufrufen muss. Die Voraussetzung dafür ist die Akzeptanz der Session-ID als GET-Parameter durch den Server.
  • Durch das Hinterlegen der Session-ID im Browser des Nutzers, wenn man direkten physikalischen Zugriff zu dem Rechner dessen hat.
 
HTML
1
http://www.example.com/index.php?session=29sa7p3

Gegenmaßnahmen:

Maßnahmen gegen Session Fixation sind recht einfach umzusetzen, stellen den Angreifern aber eine wesentliche Hürde dar.

  • Mann sollte die Übermittlung der Session-ID per URL in den PHP-Einstellungen deaktivieren. Allerdings kann die Session immer noch über XSS manipuliert werden. Also die XSS-Lücken, wenn sie vorhanden sind, müssen geschlossen werden.
 
PHP
1
2
3
4
<?php
    ini_set('session.use_only_cookies', 1);
    session_start();
?>
  • Die Session-ID Regenerierung bringt einen erheblichen Schutz mit sich. Es wird nämlich die Session-ID bei jedem Einloggen neu generiert und zugewiesen, wodurch die alte für den Angreifer nicht mehr brauchbar ist.
 
PHP
1
2
3
  • Die Sessions sollten einen Timeout haben, d.h. nach einer bestimmten Zeit auslaufen
  • Die Assotiation der Session-ID mit einem weiteren Merkmal wie z.B. die IP-Adresse kann die Sicherheit auch verstärken, kann aber Probleme bei den dynamisch zugewiesenen IDs darstellen. Außerdem lassen sich die HTTP-Header manipulieren, was wiederum die Wirkung der Maßnahme schwächt.

Fazit:

Session Fixation ist ein nicht zu unterschätzender Angriff, der dem Angreifer einen breiten Spektrum von Möglichkeiten öffnet, im Namen des Opfers zu interagieren. Insbesondere schlimm ist es, wenn das Opfer die Administrationsrechte besitzt. Das kann ausgenutzt werden, um z.B. die wichtigen Daten zu manipulieren, und zwar nicht nur die des Opfers, sondern auch die vieler anderen Nutzern.

zurück zur Übersicht Web-Sicherheit