[BUG?] Sicherheitsloch: Session von Contenido entführbar?!
[BUG?] Sicherheitsloch: Session von Contenido entführbar?!
Soeben habe ich durch Zufall festgestellt, das die Session in Contenido entführbar ist.Ich habe im Firefox einen Link aus dem Adminbereich kopiert, und diesen dann in meinem Konqueror (Browser) eingegeben.
Davon abgesehen, das meine htaccess-Passwortabfrage angeschlagen hat, konnte ich mich mit dem kopierten String aus der Adresszeile ohne Probleme einloggen.
Dies kann insbesondere eine Gefahr darstellen, wenn man von seinem Adminbereich auf eine andere Webseite wechselt. Wenn diese Seite ein Script nutzt, welches den Referer ausließt, ist der Zugang zu Eurer Seite schon geknackt... ohne das der Angreifer Eurer Passwort zu kennen muss.
Ein Lösungsansatz wäre entweder ein weiteres Cookie auf dem Clientrechner abzulegen, das in regelmäßigen Zeitabständen erneuert wird und die Session validiert, oder im Sessionhandling ein Refferer-Check einzubauen (so nach dem Motto, wenn der User die ganze Zeit von IP 1.2.3.4 gekommen ist, und jetzt von 2.3.4.5 kommt, lass ihn lieber nochmal neu einloggen).
Also die Empfehlung - wie sie ja immer gegeben wird ... verwendet htaccess zusätzlich zum Contenido-Passwortschutz!
Davon abgesehen, das meine htaccess-Passwortabfrage angeschlagen hat, konnte ich mich mit dem kopierten String aus der Adresszeile ohne Probleme einloggen.
Dies kann insbesondere eine Gefahr darstellen, wenn man von seinem Adminbereich auf eine andere Webseite wechselt. Wenn diese Seite ein Script nutzt, welches den Referer ausließt, ist der Zugang zu Eurer Seite schon geknackt... ohne das der Angreifer Eurer Passwort zu kennen muss.
Ein Lösungsansatz wäre entweder ein weiteres Cookie auf dem Clientrechner abzulegen, das in regelmäßigen Zeitabständen erneuert wird und die Session validiert, oder im Sessionhandling ein Refferer-Check einzubauen (so nach dem Motto, wenn der User die ganze Zeit von IP 1.2.3.4 gekommen ist, und jetzt von 2.3.4.5 kommt, lass ihn lieber nochmal neu einloggen).
Also die Empfehlung - wie sie ja immer gegeben wird ... verwendet htaccess zusätzlich zum Contenido-Passwortschutz!
Could I help you... you can help me... buy me a coffee ☕. (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )
xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung
Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung
Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
eigentlich muss ich sagen, das ist ne bekannte sache...
verschoben...
verschoben...
*** make your own tools (wishlist :: thx)
-
- Beiträge: 3626
- Registriert: Di 12. Okt 2004, 20:00
- Wohnort: Voerde (Niederrhein)
- Kontaktdaten:
Abfragen der IP-Adresse und des Referers sind IMO nicht sinnvoll. Die IP-Adresse kann sich bei manchen Nutzern auch schon mal bei jedem einzelnen Aufruf ändern (habe ich schon bei Firmen- oder Universitätsproxies erlebt). Da leidet dann etwas die Bedienbarkeit.
Mehr dazu:
http://www.php-faq.de/q/q-sessions-ip.html
Und Referer werden ja auch nicht von jedem Browser gesendet.
Das mit dem Cookie fände ich da auch am besten. Das lässt sich im Übrigen auch jetzt schon nutzen. In der "conlib/local.php" kann man in der Klasse "Contenido_Session":
umstellen auf:
So sollte dann die SessionID nicht mehr an die URL angehängt werden. Ob das Backend dann aber zu 100% funktioniert, kann ich nicht sagen. Ich werde das aber selbst mal testen.
Mehr dazu:
http://www.php-faq.de/q/q-sessions-ip.html
Und Referer werden ja auch nicht von jedem Browser gesendet.
Das mit dem Cookie fände ich da auch am besten. Das lässt sich im Übrigen auch jetzt schon nutzen. In der "conlib/local.php" kann man in der Klasse "Contenido_Session":
Code: Alles auswählen
var $mode = "get"; ## We propagate session IDs with cookies
Code: Alles auswählen
var $mode = "cookie"; ## We propagate session IDs with cookies
Naja, das mit dem Cookie war eigentlich anders gedacht, da man ja auch Cookies entführen kann.
Die Session nur als Cookie auszulagern bringt da meines erachtens nicht viel.
Ich dachte mehr daran, dass es ein Cookie als Validierungs-Flag genutzt wird.
Also die sessino weiter über GET, dann ein Cookie, das mit einer Zerfallszeit von xy belegt ist. Danach wird es erneuert.
Die Session in Verbindung mit dem Cookie ist valide.. wenn jetzt jemand versucht die Session zu kapern (SessionHijacking), und das System sieht, das kein Validierungs-Cookie da ist, wird die Session direkt abgeschossen.
Soweit zumindest zum teoretischen Ansatz
Die Session nur als Cookie auszulagern bringt da meines erachtens nicht viel.
Ich dachte mehr daran, dass es ein Cookie als Validierungs-Flag genutzt wird.
Also die sessino weiter über GET, dann ein Cookie, das mit einer Zerfallszeit von xy belegt ist. Danach wird es erneuert.
Die Session in Verbindung mit dem Cookie ist valide.. wenn jetzt jemand versucht die Session zu kapern (SessionHijacking), und das System sieht, das kein Validierungs-Cookie da ist, wird die Session direkt abgeschossen.
Soweit zumindest zum teoretischen Ansatz
Could I help you... you can help me... buy me a coffee ☕. (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )
xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung
Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung
Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType
-
- Beiträge: 3626
- Registriert: Di 12. Okt 2004, 20:00
- Wohnort: Voerde (Niederrhein)
- Kontaktdaten:
Nur: dein Szenario oben war ja, dass jemand anders deine SessionID aus der URL auslesen kann. Das wird durch die Umstellung auf Session-Cookies wohl schon verhindert.rethus hat geschrieben:Naja, das mit dem Cookie war eigentlich anders gedacht, da man ja auch Cookies entführen kann.
Die Session nur als Cookie auszulagern bringt da meines erachtens nicht viel.
-
- Beiträge: 184
- Registriert: Fr 17. Aug 2007, 12:15
- Kontaktdaten:
Ich denke solangsam das es so schon gut ist wie es ist.
Wenn mann sich an die Standard Funktinen hält: Einloggen und AUSLOGGEN.
Ist es gut.
@delinquent:
Dodger77's Post ist ein schon fertiger weg für den Referer und keine neue Idee. Zu den Grundregeln gehört bei mir nicht nur das ausloggen sondern auch wer mit einem CMS arbeitet sollte JS und Cookies akzeptieren.
(Bei Website's für den Endbenutzer/User finde ich JS immer noch nicht gut)
Wenn mann sich an die Standard Funktinen hält: Einloggen und AUSLOGGEN.
Ist es gut.
@delinquent:
Dodger77's Post ist ein schon fertiger weg für den Referer und keine neue Idee. Zu den Grundregeln gehört bei mir nicht nur das ausloggen sondern auch wer mit einem CMS arbeitet sollte JS und Cookies akzeptieren.
(Bei Website's für den Endbenutzer/User finde ich JS immer noch nicht gut)
Zuletzt geändert von OliverL am Fr 10. Okt 2008, 21:29, insgesamt 1-mal geändert.
-
- Beiträge: 184
- Registriert: Fr 17. Aug 2007, 12:15
- Kontaktdaten:
Ja, ich weiß, dessen bin ich mir schon bewusst. Das ist nur immer ein Für und Wider. Immerhin bedeutet sowas immer mehr Support im Forum und Erklärungen, wenn Neulinge (nicht abwertend gemeint) eben durch solche Einstellungen in die Falle tappen. Ich meine nur, dass alles eben zwar präventiv ist, aber kein Allerheilmittel.
Aber keine permanent-Cookies! Die gehören sowieso verboten.OliverL hat geschrieben:... wer mit einem CMS arbeitet sollte JS und Cookies akzeptieren.
Solange wie es bei temporären Cookies bleibt spricht nichts dagegen.
JS muß man leider akzeptieren, da es keine andere sinnvolle Technik gibt die Funktionalität zu erreichen.