Andavos: Mit PHP-Dateien alle Dateien auf dem Server löschen?!?

Hallo,
von Tobias Kloth habe ich erfahren, das man mit dem Befehl include alle Dateien auf dem Server löschen kann.

Aber was ist, wenn man nur .php / .html Dateien Inlcude könnte?
Könnte man dann immer noch alles auf dem Server löschen?

Denn ich habe ein Gästebuch (zum Runterladen) und dort kann man dann im Adminbereich eine Datei includen lassen. Das Gästebuch liegt dann bei dem Space vom Kunden.

Tobias Kloth meint, dass man so ganz einfach alle Dateien auf dem Server löschen kann, und das will ich ja nicht, denn wenn jemand das Passwort rausfindet, wäre das nicht so gut.

Wie wäre es, wenn ich als Bedingung angebe, das man nur .php/.html inlucden könnte?
Oder könnte man dann immer noch alles löschen.

MFG
Andavos

--
http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
  1. Holladiewaldfee,

    von Tobias Kloth habe ich erfahren, das man mit dem Befehl include alle Dateien auf dem Server löschen kann.

    Nein.
    Man kann alle Dateien löschen, auf die die das PHP-Script Zugriff hat und die es löschen kann. Das sind im Normalfall nur sehr wenige.

    Auch hat das an sich mit dem include()-Befehl nichts zu tun. Das Problem ist, daß Du wenn Du Dir unbekannte Seiten einbindest, evtl. auch eine Seite einbinden könntest, in der ein unlink(...) oder exec('rm -r *') drinstehen könnte.

    Du solltest also darauf acht geben, niemals Dateien von Dritten, denen Du nicht trauen kannst, per include() einzubinden.

    Ciao,

    Harry

    --
      Herbst ist Wanderzeit!
      http://harry.ilo.de/projekte/berge/
    1. Hallo,
      was passiert denn wenn man unlink(...) oder exec('rm -r *') einbindet?
      Löscht er dann alles?

      Und wie siehts mit HTML Dateien only aus?
      Also wenn man nur .htm/.html einbinden kann?
      Dann sollte das ja rein theo nicht gehn, oder?

      MFG
      Andavos

      --
      http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
      1. Hallo,

        Hallo,
        was passiert denn wenn man unlink(...) oder exec('rm -r *') einbindet?
        Löscht er dann alles?

        Und wie siehts mit HTML Dateien only aus?
        Also wenn man nur .htm/.html einbinden kann?
        Dann sollte das ja rein theo nicht gehn, oder?

        MFG
        Andavos

        Ich hab mal ein kleines Experiment gemacht:

        Ich habe auf meinem PC mich mit der Datenbank verbunden.

        <?
          mysql_connect("localhost","Andavos","andavos") or die
          ("Keine Verbindung moeglich");
          mysql_select_db("anda") or die ("Die Datenbank existiert nicht");
          ?>

        Dann habe ich folgendes include:

        <?php
        include("http://www.rpgcommunity.de/clanwissen/schleife.php");
        ?>

        schleife.php hat folgenden Inhalt:
        <?
          $abfrage = "SELECT id, urlname FROM links";
          $ergebnis = mysql_query($abfrage);
          while($row = mysql_fetch_object($ergebnis))
            {
            echo "$row->id <br>";
            }
          ?>

        Ruf ich die Datei jetzt am PC auf, erhalte ich folgendes Ergebnis:

        Wenn ich das ohne include mache, dann geht das perfekt.
        Wenn ich es mit Include mache, bekommte ich lauter Fehlermeldungen.

        Also hat schleife.php nicht die Ausgabe von meiner Datenbank (auf dem PC) preisgegeben.

        Das Adminmenü sieht so aus:
        Der User gibt eine URL zu einer Datei an. Diese URL wird gespeichert in der Datenbank (die Datei wird aber nicht hochgeladen etc.).

        Dann wird später der Eintrag abgefragt, und dann per include(...) wieder ausgegeben.

        Wenn jetzt ein PHP Script dateien löschen kann, dann muss der doch rein Theoretisch auf dem gleichem Space wie das Gästebuch liegen, damit er die Dateien löschen kann, oder?
        Denn ist es nicht so, das er von fremden Server nur den HTLM Quelltext abfragt und einbindet?

        MFG
        Andavos

        --
        http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
        1. Hallo Andavos,

          Ruf ich die Datei jetzt am PC auf, erhalte ich folgendes Ergebnis:
          Wenn ich das ohne include mache, dann geht das perfekt.
          Wenn ich es mit Include mache, bekommte ich lauter Fehlermeldungen.
          Also hat schleife.php nicht die Ausgabe von meiner Datenbank (auf dem PC) preisgegeben.

          logisch - dein php-Script bei dir zu Hause bindet ja nur die Ausgabe der Datei schleife.php ein, da die Datei ja auf dem Server schon ausgeführt wird (auch wenn es zu Fehlermeldungen führt). Änder die Endung mal z.B. auf .txt (oder irgendeine, die nicht geparst wird) und versuch es dann nochmal, dann sollte es eigentlich funktionieren.

          Grüße aus Nürnberg
          Tobias

          --
          Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
          1. Hallo,
            du hast recht, das ist wirklich ein Problem *daumenrunter*

            MFG
            Andavos

            --
            http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
      2. Holladiewaldfee,

        was passiert denn wenn man unlink(...) oder exec('rm -r *') einbindet?
        Löscht er dann alles?

        Er löscht alles im aktuellen Arbeitsverzeichnis (inkl. dessen Unterverzeichnisse), wo er die Berechtigung zum Löschen hat. Auf einem vernünftig konfigurierten Webserver dürfte das eigentlich gar nichts sein (es sei denn die Dateien/Verzeichnisse, die auch mit PHP angelegt wurde oder halt mit der UserID, unter der PHP läuft (meistens zusammen mit dem Apachen als "nobody" oder einem anderen ziemlich rechtelosen Account)).

        Ciao,

        Harry

        --
          Herbst ist Wanderzeit!
          http://harry.ilo.de/projekte/berge/
  2. Hallo Andavos,

    von Tobias Kloth habe ich erfahren, das man mit dem Befehl include alle Dateien auf dem Server löschen kann.

    nein, nicht mit include - aber include führt die angegebenen Datei aus - und das was da drinsteht kann u.U. Dateien löschen (wenn dein Gästebuch auf Dateien basiert, hat php auch die Rechte die zu löschen).

    Aber was ist, wenn man nur .php / .html Dateien Inlcude könnte?

    das bringt nichts - die Dateien werden trotzdem ausgeführt, egal wie sie heißen. Wenn du allerdings eine Datei über include('http://www.example.com/boesesscipt.php') einbindest, bekommst du nicht den Quelltext, sondern nur die Ausgabe (das was beim Browser auch ankommen würde) (sofern php-Dateien geparst werden).

    Tobias Kloth meint, dass man so ganz einfach alle Dateien auf dem Server löschen kann,

    "ganz einfach" muss es nicht sein (da - wie Harry schon schrieb - php die entsprechenden Recht haben muss) - aber das ausspionieren der Daten für die Datenbank (sofern vorhanden) - und ändern/löschen selbiger - dürfte nicht allzuschwer sein.

    aber warum bist du eigentlich nicht im alten Thread geblieben (das Thema lässt sich schließlich ändern)?

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hallo,
      || Aber was ist, wenn man nur .php / .html Dateien Inlcude könnte?

      <das bringt nichts - die Dateien werden trotzdem ausgeführt, egal wie sie heißen. Wenn du allerdings eine Datei über include('http://www.example.com/boesesscipt.php') einbindest, bekommst du nicht den Quelltext, sondern nur die Ausgabe (das was beim Browser auch ankommen würde) (sofern php-Dateien geparst werden).

      Der User gibt ja nur die URL zu einer datei an und die wird in der Tabelle abgespeichert.

      Wenn jetzt jemand auf seinen Space (http://www.example.com/boesesscipt.php) hochlädt, und dann bei einer fremden Person im Adminbereich http://www.example.com/boesesscipt.php angibt, dann sieht der Quelltext vom Gästebuch ja so aus:

      Inhalt von http://www.meinesite.de/gbook.php:

      <?php
      include("http://www.example.com/boesesscipt.php");
      ?>

      Würde dieser boesescript dann daten auf dem Server (www.meinesite.de) löschen, oder könnte er Daten ausspionieren und wäre damit ein Sicherheitsloch entstanden?

      Oder muss boesesscipt.php auf dem eigenem Server (http://www.meinesite.de/boesesscript.php) liegen, damit er ein Sicherheitsloch verursacht?

      MFG
      Andavos

      --
      http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr