Sicherheitsproblem (Include)

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

  • Sicherheitsproblem (Include)

    Hi,

    ich weiß, das Thema ist schon des öfteren Besprochen worden, allerdings bin ich eben ein absoluter Anfänger in der PHP Programmierung und kann deswegen relativ wenig mit dem ganzen anfangen.

    Ich bräuchte eine Konkrete und (leider) schnelle Lösung für mein Problem.

    Ich bin in der Nacht auf heute von meinem Provider angeschrieben worden, das über eine Seite von mir ein Hackangriff gestartet wurde, und in der Tat hab ich einige PERL Scripte auf meinem Server gefunden die nicht von mir sind (Backdoor Trojaner ).

    Laut meinem Provider ging der Angriff über einen Include Befehl auf der Seite von statten.

    Ich binde auf meiner index.php Seite 2 Inhalte über Include befehle ein.

    1) Den Inhalt
    2) Unterschiedliche Navigationsebenen

    Für den Inhalt sieht der Code wie folgt aus:


    PHP-Code:
    <? 
      if (strpos($open, '://') !== FALSE || strpos($open, '../') !== FALSE)
      die('Nicht erlaubte Anweisung. Klicken sie <a href="/index.php">hier</a> 
    um auf die Hauptseite zurück zu kehren');
      if ($open) {include($open);}
      else {include("docs/main.php");}
    ?>
    Im Navigationsbereich sieht es so aus:

    PHP-Code:

    <?
      if (strpos($menulev, '://') !== FALSE || strpos($menulev, '../') !== FALSE)
      die('Nicht erlaubte Anweisung. Klicken sie <a href="/index.php">hier</a>
     um auf die Hauptseite zurück zu kehren'); 
      chdir (menulev);
      if ($menulev)
      {include($menulev);} 
      else {include("1.php");}
      ?>
    Laut Provider ist der Angriff über den 2. Code Bereich erfolgt. Ich kann es mir leider nicht erklären, da ich der Meinung bin das mit meinem Script keine fremde Seite eingebunden werden kann.

    Die Seite um die es geht heißt: http://www.ueberlebensschule-tirol.at

    Kann mir bitte jemand helfen? Es wäre recht dringend.

    Ich arbeite im Augenblick eh an einer neuen Version der Seite (Typo3), da sollte das alles behoben sein. Aber für den jetzigen Zeitraum bräuchte ich ne Lösung.

    Danke für die Hilfe,

    Javanoth
    Zuletzt geändert von Javanoth; 15.05.2006, 10:55.

  • #2
    Als erstes mal bitte unsere Regeln lesen und den Code umbrechen/kürzen.

    Kommentar


    • #3
      standardangriff, deine Variablen $open und $menulev kommen von aussen, aus dem
      querystring nach dem ?, z.B. kann deine Seite so aufgerufen werden.
      www.deineseite.com/index.php?menulev=http://fremdeseite.de/angriff.php


      Du selber rufst sie mit klicks.
      www.deineseite.com/index.php?menulev=hallenklettern.php .

      Du musst absichern, dass nur deine Seiten im menulev sind und keine http://

      Kommentar


      • #4
        $menulev und $open sind GET-Variablen.
        Wenn Du die nicht besser prüfst, kann man da alles möglich includieren, dass im selben Verzeichnis liegt bzw über den ABSOLUTEN Serverpfad auch ALLES andere (sofern man ihn kennt).

        Mach Dir doch ein Array, welche Skripte erlaubt sind fürs include und prüf dann mit in_array

        Du musst absichern, dass nur deine Seiten im menulev sind und keine http://
        Das hat er ja immerhin mit strpos($menuelev, '://') gemacht!
        Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

        Kommentar


        • #5
          Ich seh gerade dass Du :// abprüfst.

          Was sagt das log? die Angriffszeile sollte doch im log sein.

          oder in der Botschaft des providers.
          Zuletzt geändert von muh (newbie); 15.05.2006, 09:46.

          Kommentar


          • #6
            Es geht ja auch mit
            PHP-Code:
            www.deineseite.com/index.php?menulev=/absoluter/pfad/zum/perlskript.pl 
            Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

            Kommentar


            • #7
              sorry,

              hab den code nun angepasst.

              ich habe den fehler auch schon gefunden. ich habe eine include angabe vergessen und nun auch diese abgesichert.

              nun sollte es eigentlich nicht mehr möglich sein, die seite zu hacken, da alle includes die ausgeführt werden, überprüfft werden ob :// oder ../ in der url vorkommen. dies sollte eigentlich nun verhindert werden.

              wegen dem absoluten pfad:

              naja, da muss das aber schon auf meinem rechner (server) liegen.. also die seite muss schon gehackt worden sein, oder?

              Kommentar


              • #8
                dann lag es also gar nicht an den beiden publizierten includes.

                Was die absoluten Pfade betrifft, ist das Sache des hosters und wäre im php sehr mühsam abzusichern , oder täusche ich mich?

                Kommentar


                • #9
                  Original geschrieben von Javanoth

                  naja, da muss das aber schon auf meinem rechner (server) liegen.. also die seite muss schon gehackt worden sein, oder?

                  und in der Tat hab ich einige PERL Scripte auf meinem Server gefunden die nicht von mir sind
                  Na, was denn nun? Wenns fremde Skripte auf deinem Server -d.h. doch wohl in deinem Account - gegeben hat, ist der Server doch schon "gehackt" und man kann die immer noch ohne weiteres mit Deinem include einbinden, so wie es jetzt ist.

                  Ich würde mich da mit einer Whitelist von erlaubten Skripten absichern. Alles andere fliegt raus.
                  Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

                  Kommentar

                  Lädt...
                  X