radio button isset ?

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

  • #16
    Doch, ich (wenigstens letzteres).

    Bitte erleuchte mich
    ich glaube

    Kommentar


    • #17
      http://example.org/script.php/%3Cb%3Ehuhu%3C/b%3E

      - so, und jetzt lasse in script.php mal $_SERVER['PHP_SELF'] mittels einfachem echo ausgeben ...
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #18
        Naja, soweit schon klar, aber wo genau ist denn nun die Sicherheitslücke?

        Das $_SERVER-Array ist fälschbar, aber was hätte jemand jetzt davon, dass das Formular oder ein Link auf http://example.org/script.php/<b>huhu</b> bzw. auf http://example.org/script.php/<script>bösefunction();</script>verweist?

        Nicht mehr, als wenn er auf andere gefälschte Adressen verweist, die man mit htmlentities auch nicht verhindern kann. Oder doch?
        ich glaube

        Kommentar


        • #19
          Original geschrieben von ministry
          Das $_SERVER-Array ist fälschbar, aber was hätte jemand jetzt davon, dass das Formular oder ein Link auf http://example.org/script.php/<b>huhu</b> bzw. auf http://example.org/script.php/<script>bösefunction();</script>verweist?
          Na dass er dann Code in deine Seite einschleusen kann, der in deren Kontext ausgeführt wird - bspw., um per Javascript die Cookieinhalte deiner Nutzer, in denen du Logindaten abgelegt hast, zu klauen.
          Nicht mehr, als wenn er auf andere gefälschte Adressen verweist,
          Wenn ich auf deine Seite verweise - dann vertrauen deine Nutzer der, die kennen sie schliesslich. Sie werden aber nicht auf viel mehr als auf die Domain achten - dass in den mit % kodierten Sonderzeichen schädlicher Code stecken könnte, welcher Nutzer weiss sowas schon?
          die man mit htmlentities auch nicht verhindern kann. Oder doch?
          Mit htmlentities/-specialchars verhinderst du die Interpretation von HTML, und damit auch Scriptcode.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #20
            Original geschrieben von wahsaga
            Na dass er dann Code in deine Seite einschleusen kann, der in deren Kontext ausgeführt wird - bspw., um per Javascript die Cookieinhalte deiner Nutzer, in denen du Logindaten abgelegt hast, zu klauen.
            [...]
            Mit htmlentities/-specialchars verhinderst du die Interpretation von HTML, und damit auch Scriptcode.
            Das Prinzip ist klar.

            Trotzdem, wenn ich
            PHP-Code:
            echo("<a href=\"" $_SERVER['PHP_SELF'] . "/%3Cscript%3Ealert('test');%3C/script%3E\">test</a>"); 
            parsen lasse, wird nix ausgeführt. In welchem Zusammenhang könnte das eine Rolle spielen? Sowas wie
            PHP-Code:
            echo("Sie befinden sich auf " $_SERVER['PHP_SELF']); 
            ?

            (Ja, klar, ich habs jetzt händisch an den Link gehängt und nicht mein Serverarray gefälscht. Macht das den Unterschied?)
            Zuletzt geändert von ministry; 23.03.2007, 00:44.
            ich glaube

            Kommentar


            • #21
              Original geschrieben von ministry
              (Ja, klar, ich habs jetzt händisch an den Link gehängt und nicht mein Serverarray gefälscht. Macht das den Unterschied?)
              Natürlich.

              Das eine ist eine Ausgabe, die du in deinem Script machst - von "Einschleusen" kann dann sowieso keine Rede sein.
              Ausserdem sind die mit % kodierten Zeichen dort eher harmlos - weil die an der Stelle ja nicht dekodiert werden.

              Bei Übergabe über einen URL werden diese aber vom Server wieder dekodiert - und wenn du das dann in deiner Seite ausgibst, dann sind das wieder die "gefährlichen" Zeichen, als die sie gedacht waren.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #22
                Original geschrieben von wahsaga

                Ausserdem sind die mit % kodierten Zeichen dort eher harmlos - weil die an der Stelle ja nicht dekodiert werden.

                Bei Übergabe über einen URL werden diese aber vom Server wieder dekodiert - und wenn du das dann in deiner Seite ausgibst, dann sind das wieder die "gefährlichen" Zeichen, als die sie gedacht waren.
                Ich glaube, du hast Recht - man müsste dann $_SERVER['PHP_SELF'] auf etwas wie "javascript:bösefunction()" fälschen. Geht das mit z.B. Proxomitron? Werd das am WE mal probieren. Danke für den angenehmen späten Austausch
                ich glaube

                Kommentar


                • #23
                  Original geschrieben von ministry
                  Ich glaube, du hast Recht - man müsste dann $_SERVER['PHP_SELF'] auf etwas wie "javascript:bösefunction()" fälschen. Geht das mit z.B. Proxomitron?
                  Nein. Den Wert schickt nicht dein Client, bzw. nur indirekt - der Server erstellt ihn aus den Daten des Request, genauer der angeforderten Adresse.

                  Aber "fälschen" ist auch gar nicht nötig - man muss nur dafür sorgen, dass der Server das Script findet und ausführt - und dabei nachfolgende Teile der Adresse unberücksichtigt lässt.
                  Und genau das passiert beim ersten Beispiel, das ich gebracht habe - der Server findet die Scriptdatei /index.php, danach kommt ein Slash und "böse" Zeichen - und die stellt er dann mit in die Umgebungsvariable rein.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #24
                    Original geschrieben von wahsaga

                    man muss nur dafür sorgen, dass der Server das Script findet und ausführt - und dabei nachfolgende Teile der Adresse unberücksichtigt lässt.
                    Und genau das passiert beim ersten Beispiel, das ich gebracht habe - der Server findet die Scriptdatei /index.php, danach kommt ein Slash und "böse" Zeichen - und die stellt er dann mit in die Umgebungsvariable rein.
                    Hm, doch nicht verstanden. Wieso geht dann
                    PHP-Code:
                    echo("<a href=\"" $_SERVER['PHP_SELF'] . "/<script>alert('test');</script>">test</a>"); 
                    nicht?

                    EDIT:
                    verkehrt - wenn man sich nicht vertippt, dann geht es sehr wohl:
                    PHP-Code:
                    echo("du bist auf:" $_SERVER['PHP_SELF'] . "<br><br>");
                    echo(
                    "<a href=\"" $_SERVER['PHP_SELF'] . "/<script>alert('test');</script>\">test2</a>"); 
                    danke, mal wieder was dazugelernt

                    Zuletzt geändert von ministry; 23.03.2007, 01:38.
                    ich glaube

                    Kommentar


                    • #25
                      es gibt doch einen Haufen Bugreports in php.net über dieses Verhalten von $_SERVER['PHP_SELF'] bzw. $PHP_SELF

                      Kommentar

                      Lädt...
                      X