Session Fixation - Im Namen der ehrlichen Nutzer
Anzeige Hier werben
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.
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.
- 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.
- 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
Diese Seite kann von jedem registrierten Benutzer bearbeitet werden. Bisher haben 3 Personen an der Seite "Session Fixation - Im Namen der ehrlichen Nutzer" mitgewirkt.
Sie haben einen Fehler entdeckt oder möchten etwas ergänzen? Dann können Sie nach der Anmeldung "Session Fixation - Im Namen der ehrlichen Nutzer" hier bearbeiten.
-
Student der Fakultät Informatik an der HS Augsburg im 5. Fachsemester
-
Computer Scientologe im 7. Semester an der HS Augsburg. Schreibt gerade an seiner Bachelorarbeit im Bereich neue Webtechnologien und arbeitet als Werksstudent bei Team23. Nebenbei betreibt er noch seinen Blog www.gironimo.org
-
David Danier arbeitet seit mehr als neun Jahren im Bereich Web Programmierung und ist unter anderem Geschäftsführer der Webagentur Team23 sowie Webmasterpro.de.


Weitere Sicherheitsmöglichkeiten
Könnte man nicht zusätzlich zur Session ID einfach ein Cookie erzeugen, dessen Name und Inhalt jeweils immer unterschiedlich ist, dieser in der DB zur zugehörigen session abgespeichert und abgefragt wird.
Also stimmt die Session, wird der Cookiename mit session2 geladen und geschaut, ob dieser Cookie überhaupt existiert und diese Session beinhaltet...
So könnte man doch nämlich diese zweite "Session" nicht klauen bzw. nachmachen und wär sicher vor Session-Dieben, auch, wenn man mal dummerweise schlampig programmiert hat...
Oder gibt es mit js eine Funktion, mit der man alle Cookies auslesen kann, ohne deren Namen zu kennen?