Session Fixation - Im Namen der ehrlichen Nutzer, Version 7

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 17. Nov. 2010 um 14:56 Uhr erstellt.
Bemerkung des Bearbeiters: Code-FIx#

Änderungen gegenüber vorheriger Version anzeigen


Session Fixation - Im Namen der erlichen Nutzern - Teil 1

Verwandte Angriffe:

Kurze Beschreibung:

Austauschen von 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 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 sollen 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 ID Probleme 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. Insbesonders schlimm ist es, wenn der 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.