Sicherheitsrisiko - steh ich auf dem Schlauch ?

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

  • Sicherheitsrisiko - steh ich auf dem Schlauch ?

    Hallo.

    Bin seit ca. 1 Jahr an einem kleinen Site/Gallery-Managementsystem am Arbeiten, nähert sich der Fertigstellung.

    Derzeit arbeite ich an diversen Spamschutzmechanismen / Missbrauchs-Schutz.

    Dabei bin ich auf folgendes Problem gestossen:
    Von meinem Localhost kann ich problemlos scripts auf dem Webserver includen (http://www.domain.../.../.../xyz.php).
    Das fuktioniert i.A. auch mit dem config.php - File, welches Angaben über die zu verwendende Datenbank (MySQL/SQlite) und die passenden Namen/Passwörter enthält + die Datenbankverbindung aufbaut.

    Nachdem anscheinend jeder Localhost das File includieren könnte wäre es möglich, dass eben diese Localhosts bei bekannter Verzeichnisstruktur (ist ja ab Veröffentlichung dann bekannt) Zugriff auf die Datenbanken erlangen können -> alle Türen offen für Missbrauchsversuche.

    Gibt es da eine Lösung? Irgendwie habe ich das Gefühl ich stehe peinlicherweise total auf dem Schlauch.

    Wie machen das andere CMS/Applikationen etc. ?

    config.php in Verzeichnus unterhalb Roor legen darf ich lt. Provider nicht.

    .htaccess habe ich lt. Provider ebenfalls keinen Zugriff.

    Kann mir da jemand einen Denkanstoss geben ?

    Würde mich über Hilfe freuen.

    MfG
    Cyw

  • #2
    Wenn du nicht willst dass jeder andere Kunde deine Scripts includiert, dann musst du wohl oder übel auf open_basedir vom Provider setzen.

    Denn ansonsten kann wirklich jeder alles includieren. Das ganze läuft dann nicht über das http protokoll, sondern wird direkt über das filesystem gemacht.

    .htaccess bringt hier natürlich somit dann auch reichlich wenig, weil sich apache dafür nur bei http anfragen interessiert
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Also normalerweise sollte der Pfad immer root/htdocs sein mit Zugriff auf root, wo man dann von außen nicht sichtbare Dateien ablegen kann.
      Bei allen Providern die ich kenne ist dies auch so.

      Was meinst du mit jeder Localhost? Es gibt immer nur einen Localhost und natürlich könnte ein zweiter Kunde der dem gleichen Server zugewiesen wurde wie du versuchen auf deine DB zuzugreifen. Zugriff auf deine Verzeichnisse hat er allerdings nicht, so dass er dein Passwort schon knacken müsste.

      Kommentar


      • #4
        Original geschrieben von tommie82
        Was meinst du mit jeder Localhost? Es gibt immer nur einen Localhost und natürlich könnte ein zweiter Kunde der dem gleichen Server zugewiesen wurde wie du versuchen auf deine DB zuzugreifen. Zugriff auf deine Verzeichnisse hat er allerdings nicht, so dass er dein Passwort schon knacken müsste.
        Leider falsch. Wenn dein PHP fehlerhaft konfiguriert ist HAT er Zugriff....
        Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
        var_dump(), print_r(), debug_backtrace und echo.
        Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
        Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
        Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

        Kommentar


        • #5
          Der Provider ist Kontent.de

          open_basedir: /usr/local/httpd/htdocs/:/raid/domains/:/tmp/uploads:/raid/news

          Mit Localhost ist gemeint, jeder der einen (bei mir Apache) Localhost auf einem eigenen Rechner installiert hat -> leichte Grundausstattung für Angriffe.


          Habe gerade testweise versucht unterhalb des Verzeichnisses "www" (kontent.de Rootverzeichnis) einen Ordner od. eine Datei zu erstellen/kopieren - kein Erfolg. Zugriff verweigert.

          Also nur open_basedir anders setzen lassen als Lösung ?

          Danke für die Hilfe

          MfG
          Cyw

          Kommentar


          • #6
            Naja, open_basedir müßte für die anderen Kunden anders gesetzt werden.

            Kannst du denn das Verzeichnis /usr/local/httpd/htdocs/ auslesen? Würd mich mal interessieren ob du auf andere Kunden zugreifen kannst...

            Mit Localhost ist gemeint, jeder der einen (bei mir Apache) Localhost auf einem eigenen Rechner installiert hat -> leichte Grundausstattung für Angriffe.
            Was? Versteh ich nicht...?! Was hat das mit deinem Problem zu tun?
            Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
            var_dump(), print_r(), debug_backtrace und echo.
            Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
            Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
            Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

            Kommentar


            • #7
              Also, ich bin jetzt mal ein vollkommen Fremder.
              Ich kenne die Verzeichnisstruktur des Galleriesystems.

              Installiere mir einen Apache->Localhost auf meinem PC
              Schreibe mir ein kleines PHP-Script, dass mir die config.php includiert.

              =>Datenbankverbindung

              Das Script müllt mir jetzt desweiteren die DB mit Spam oder anderem Müll zu.

              Fertig.

              Das könnte also JEDER von einem eigenen lokalen localhost tun.

              Sorry, kann nicht so gut erklären, jetzt besser verständlich ?



              Ob ich auf das o.g. Verzeichnis zugreifen kann kann ich leider nicht prüfen, da ich k.A. habe wie genau das funktionieren soll (Ascha auf mein Haupt) - und eine Anleitung möchte ich hier auch nicht gepostet haben .

              Kommentar


              • #8
                Achso,
                du meinst jeder schreibt sich kurz nen Script und includiert dann über

                include 'http://www.deinedomain.de/dein/pfad/zu/config.php';

                und liest das dann aus? Das geht nicht... .php Dateien werden bei HTTP-Requests (also von Besuchern etc.) vom PHP-Parser durchgearbeitet. Das wiederum heißt, wenn dein Zeug in <?php ?> Tags steht, kommt dabei nix raus -> auch keine Datenbankverbindung.

                Nur Leute die auf dem gleichen Server sind wie du könnten das Script includieren...
                Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                var_dump(), print_r(), debug_backtrace und echo.
                Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                Kommentar


                • #9
                  Original geschrieben von cyw
                  Installiere mir einen Apache->Localhost auf meinem PC Schreibe mir ein kleines PHP-Script, dass mir die config.php includiert.

                  =>Datenbankverbindung
                  ja fein.
                  und?

                  Das Script müllt mir jetzt desweiteren die DB mit Spam oder anderem Müll zu.
                  und wie macht es das - kann es zaubern?
                  da müsste ja auf deinem webspace zusätzlich noch ein datenbank-zumüll-script vorhanden sein, welches ich auf meinem apachen ebenfalls über HTTP includen kann, damit das geht.

                  außerdem müsste dieses script die config mit der db-verbindung selber einbinden - denn wenn ich erst das eine und dann das andere script über HTTP aufrufe, dann weiß das zweite ja überhaupt nichts von irgendwelchen variablen des ersten scriptes, in denen bspw. datenbankverbindungsressourceIDs (feines wort) abgelegt wurden.

                  Das könnte also JEDER von einem eigenen lokalen localhost tun.
                  nö, in dem er nur deine scripte mittels eines lokalen webservers über HTTP includet, kann jeder nur genau das gleiche bewirken, wie jemand der deine scripte gleich mit einem browser aufruft.
                  der lokale webserver ist in dem falle auch nur ein client, der eine ressource über HTTP anfordert - nicht mehr und nicht weniger.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Puuuuuuuuuuuuuuh!
                    1 Jahr Arbeit gerettet, war schon fix und fertig.
                    Ist also doch ein peinlicher Denkfehler gewesen - klar, ist ja in diesem Fall ein externer Aufruf einen php-Datei...hätte ich ja auch gleich drauf kommen können.

                    *mich ganz klein mach*


                    Danke an alle!


                    Bleib nur noch das Problem, dass ich wohl sicherheitsrelevante Daten nicht unterhalb des www-Verzeichnisses lagern kann - dort tauchen einzig und allein Dirs für angelegte Subdomains auf...schade.


                    MfG
                    Cyw
                    Zuletzt geändert von cyw; 25.06.2005, 10:59.

                    Kommentar


                    • #11
                      Nachtrag: Einen Provider, der weder Zugriff auf eine Ebene oberhalb des Doc-Roots noch Passwortschutz für Verzeichnisse bietet, würde ich sofort feuern.

                      Just my 2 cents

                      Kommentar


                      • #12
                        Yup - wollte ich auch, Wechsel war geplant - leider hat mir meine Vergesslichkeit und 2 Wochen Urlaub einen Strich durch die Rechnung gemacht...16.06.05 war Stichtag...

                        Verzeichnisschutz ist wohl möglich, allerdings nur über das Adminsystem des Providers konfigurierbar.

                        MfG Cyw

                        Achso -
                        Muss dazu sagen, dass kontent.de an sonsten sehr zuverlässig war, hatte kaum mal Geschwindigkeitsprobleme o.Ä., Email-Support nach spätestens 2-3 Tagen, Webspace,Domain,Email und Datenbank funtionieren gut. Nur die Sache mit "ausserhalb root" stört mich im Moment - und die Tatsache, dass man die gleichen Leistungen wohl mittlerweile auch günstiger bekommt bzw. mehr Leistung zum gleichen Preis...

                        Kommentar


                        • #13
                          muss aber nich immer besser sein...

                          Bei vielen Hostern wo du mehr bezahlst wirst du als Kunde behandelt und nicht als Nummer....
                          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                          var_dump(), print_r(), debug_backtrace und echo.
                          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                          Kommentar


                          • #14
                            also ich war selbst mal bei kontent, zu der zeit wo das noch ein günstiges angebot war. aber mittlerweile bist du fast überall besser dran als dort...

                            a) zu teuer
                            b) zu eingeschränkt
                            c) schlechter support

                            Kommentar

                            Lädt...
                            X