SessionID in generierten Links von Benachrichtigungs-E-Mails

  • Betroffene App
    WoltLab Suite Core

    Hallo zusammen,

    ich bin mir nicht sicher, ob das so gewollt ist, aber ich habe soeben entweder einen mächtig großen Fehler bemerkt oder ein neues, un(gewolltes) Feature entdeckt.

    Wie ich das auch immer angestellt habe - ich weiß es nicht genau. Und zwar wollte ich in einer Konversation eine Antwort in meinem Forum verfassen. Die Antwort wurde dann aber nicht von meinem Benutzeraccount verfasst, sondern von dem des ursprünglichen Schreibers. Gleichzeitig habe ich bemerkt, dass ich mich auf seinem Account befand, sprich - ich konnte in die Shoutbox in SEINEM Namen schreiben und entsprechende Posts sowie Threads veröffentlichen.

    Klärt mich darüber mal bitte wer auf, ob das so gewollt ist oder ein schwerwiegender Fehler mit Sicherheitsrisiken ist? Bin gerade echt geflasht :S

  • Das könnte sein - nein, das ist es definitiv. Ja genau! In der PM ist eine lange ID mitgeschickt worden, die nach dem eigentlichen Konversationslink folgenden Zusatz hat: /?s=********************.

    Aber warum wird sowas automatisch mitgeschickt, @Alexander Ebert? Ich meine... nicht er hat mir den Link gegeben, sondern es war die automatische Benachrichtigungsfunktion (!) über einen Konversationseingang. Das ist doch extrem gefährlich! Ich stelle mir gerade vor, wie jemand in meinem Namen als Administrator schreibt, weil ich mit ihm eine Konversation führe. Sicherlich hätte er dann auch Adminrechte/Modrechte etc.

    2 Mal editiert, zuletzt von Eikju (27. Januar 2014 um 11:38)

    • Offizieller Beitrag

    Ich meine... nicht er hat mir den Link gegeben, sondern es war die automatische Benachrichtigungsfunktion (!) über einen Konversationseingang.


    Das ist Unsinn, die Texte werden nicht in der Datenbank abgelegt, sondern zur Laufzeit angezeigt. Anders formuliert steht der Text erst in dem Moment fest, in dem du die Benachrichtigung anzeigen lässt.

    Ich hatte auch schon vorgeschlagen die SessionID durch JS entfernen zu lassen. Wurde leider wieder abgelehnt. Ich sehe diese SessionID in der URL auch als sehr gefährlich an.


    Das ist aber auch unnötig: https://github.com/WoltLab/WCF/bl…l.class.php#L25


  • Das ist Unsinn, die Texte werden nicht in der Datenbank abgelegt, sondern zur Laufzeit angezeigt. Anders formuliert steht der Text erst in dem Moment fest, in dem du die Benachrichtigung anzeigen lässt.

    Ich habe die PM noch hier, in der die Session-ID mitgeliefert wurde. Auch habe ich die Konversation von MEINER Antwort, die aber in seinem Namen geschrieben wurde. Das alles kann ich dir gerne per Screenshot zusenden. Ich habe vielleicht keine Ahnung, was im Hintergrund abläuft (Rechte, Programmierung etc.). Aber ich kann wohl unterscheiden, ob in meinem Namen geschrieben wird oder ob ich in einem anderen Namen agiere. Dabei hatte ich jetzt keinen bösen Willen, sondern wollte nur auf eine Konversation antworten.

    *Edit*
    Das ist in etwa so, wenn du mit mir eine Konversation startest, @Alexander Ebert, ich eine Benachrichtung erhalte und daraufhin in DEINEM Namen agieren kann. Stell dir mal den Schaden vor, denn ich mit einer böswilligen Absicht hier im Forum verursachen könnte. Denn mein Text wird mit deinem Benutzeraccount geschrieben. Ein unterschied ist nicht feststellbar.

    Einmal editiert, zuletzt von Eikju (27. Januar 2014 um 12:10)

    • Offizieller Beitrag

    Meine Aussage bezog sich nicht mal im entferntesten auf die Tatsache, dass man mit einer fremden Session-ID als dieser Nutzer angemeldet ist. Ich bezog mich darauf, dass dieser Link dir garantiert nicht durch die Benachrichtigungsfunktion untergeschoben wurde, weil das technisch gar nicht möglich ist.

  • Meine Aussage bezog sich nicht mal im entferntesten auf die Tatsache, dass man mit einer fremden Session-ID als dieser Nutzer angemeldet ist. Ich bezog mich darauf, dass dieser Link dir garantiert nicht durch die Benachrichtigungsfunktion untergeschoben wurde, weil das technisch gar nicht möglich ist.

    Doch, genau das ist passiert :D. Eure Benachrichtungsfunktion hat mir als Konversationsteilnehmer die Session-ID des Benutzers mitgeliefert. Als ich auf diesen Link geklickt habe um zu antworten, war ich auf dem Benutzer eingeloggt. Gerade deshalb bin ich doch so verwundert, warum es eine solche offene Schnittstelle gibt.

  • Das hilft mir leider dennoch nicht weiter, warum ich im Namen eines anderen Benutzers schreiben konnte. Wie kann das passieren?

    Hier übrigens die Benachrichtigung via E-Mail:

  • Hallo!

    Ja, konnte ich gerade reproduzieren. Voraussetzung dafür ist, dass der Benutzer der die Nachricht verschickt keine Cookies akzeptiert und somit die SessionID per URL übergeben wird.

    MfG

  • Hallo!

    Ja, konnte ich gerade reproduzieren. Voraussetzung dafür ist, dass der Benutzer der die Nachricht verschickt keine Cookies akzeptiert und somit die SessionID per URL übergeben wird.

    MfG

    Danke dafür! Wie gesagt... ich bin nur ein einfacher Kunde, dem das aufgefallen ist. Ich besitze keine Programmierkenntnisse, aber irgendwie roch das Faul.

  • Darf ich fragen warum mein Beitrag kommentarlos und ohne Hinweis gekürzt wurde? (zumindest der Hinweis am Ende des Postings, dass der Beitrag von XY bearbeitet wurde, wäre doch fein gewesen).

    Auf die darin gepostete Idee wie man eine solche Sicherheitslücke ausnutzen kann wird jedes Scriptkiddy in 2 Minuten kommen (meine kreativen Ideen habe ich schon absichtlich nicht gepostet, auch nicht, wie man die SessionID-Nutzung in der URL bei einem fremden User provozieren könnte). Ich wollte damit aber schon deutlich machen, das diese Lücke sich nicht nur theoretisch ausnutzen lässt, sondern ganz praktisch eine reale Gefahr darstellt, besonders wenn eine Community genug aktive User hat.

  • Vermutlich sollte hier niemand verleitet werden, Deine recht konkret formulierte Idee mal auszuprobieren.


    Gruß norse

    Zugang zu meinen Arbeiten und dem dazugehörigen Support bekommt Ihr bei Interesse hier und hier.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!