Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Erklärung zur alten XSS-Lücke in phpBB2

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Erklärung zur alten XSS-Lücke in phpBB2

    Mir geht es hier um eine Verständnisfrage.

    In der damaligen phpBB2 Version 17 wurde der URL-Filter von Blacklist auf Whitelist umgestellt:
    phpBB • View topic - phpBB 2.0.17 released

    D.h. die vorherige Filterung nach Double Quotes war nicht ausreichend. cback hatte damals einen schnellen Bugfix angeboten, in denen er Single Quotes und Backticks auf die Blacklist gesetzt hat.

    Verstehe ich das nun richtig, dass die damalige IE-Version so ausgenutzt wurde, dass der href="{URL}" auf diese Art gesprengt werden konnte? Mich wundert das, weil ich hier keine Lücke finde, die dokumentiert, dass sowas möglich ist:
    XSS (Cross Site Scripting) Cheat Sheet

    Im Grunde hätte das ja ca. so aussehen müssen:
    Code:
    href="http://example.org`onload=`alert('xss')"
    Kommt mir irgendwie spanisch vor
    meine PHP Scripte

  • #2
    Soweit ich weiß akzepiert der IE das hier ´ als Begrenzer von Attributen.
    Trozdem komisch ^^
    Signatur:
    PHP-Code:
    $s '0048656c6c6f20576f726c64';
    while(
    $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

    Kommentar


    • #3
      Ja als Begrenzer akzeptiert der IE back ticks. Aber ich kann doch nicht mit einem back tick ein Double oder Single Quote durchbrechen. Zumindest war das mein bisheriger Wissensstand dazu.

      Hier steht auch:
      Properly quoted attributes can only be escaped with the corresponding quote.
      meine PHP Scripte

      Kommentar


      • #4
        Es geht ja auch immer darum, mit einem Begrenzer gleichartige Begrenzer zu "durchbrechen" (genauer beenden). Wenn ' oder ` als Attributbegrenzer benutzt werden können, wird es immer Individualisten geben, die das dann auch nutzen (müssen).
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          Ok, ich habe einen String, der durch geschickte Verschachtelung von BBCodes wohl zur XSS-Attacke führte. Den habe ich jetzt mal mit phpBB2.0.16 getestet und die Ausgabe an den entsprechenden Stellen abgebrochen:
          http://www.programmierer-forum.de/tx...2.0.16-xss.txt

          Was ich da allerdings nicht verstehe ist das Verhalten vom "[ url="-Pattern. Der sagt eindeutig, dass Double-Quotes verboten sind:
          PHP-Code:
              // [url=http://www.phpbb.com]phpBB • Creating Communities Worldwide[/url] code.. (no xxxx:// prefix).
              
          $patterns[] = "#\[url\]((www|ftp)\.[^ \"\n\r\t<]*?)\[/url\]#is";
              
          $replacements[] = $bbcode_tpl['url2'];

              
          // [url=www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
              
          $patterns[] = "#\[url=((www|ftp)\.[^ \"\n\r\t<]*?)\]([^?\n\r\t].*?)\[/url\]#is";
              
          $replacements[] = $bbcode_tpl['url4']; 
          Wie kann es dann sein, dass er die Double Quotes, die aus dem [ url ]-Tag Replace resultieren, trotzdem schluckt? Oder passiert das Ersetzen quasi "gleichzeitig", so dass der zweite Pattern-Durchlauf, den ersten noch gar nicht enthält?

          EDIT:
          Ok ich habs. Die Beschreibung ist das Problem. Diese erlaubt Double Quotes. Dadurch landet das <a href="" aus dem ersten Replace in der Beschreibung des zweiten Replace. Es hätte also völlig gereicht die Double Quotes in der Beschreibung zu verbieten. Macht ja Sinn, da phpBB2 intern bereits die Double Quotes in &quot; ersetzt hat.

          Fazit:
          Wenn mehrere Replaces stattfinden, immer im Hinterkopf behalten, dass im String auch wieder unsichere Quotes aus einem vorangegangenen Replace enthalten sein könnten.
          meine PHP Scripte

          Kommentar

          Lädt...
          X