php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.08.2005, 01:07  
Gast
 
Beiträge: n/a
Standard Sicherheit im Dateianzeige Skript

Hallo,

ich habe bermerkt das dieses folgende Skript ein Sicherheitsloch hat:
PHP-Code:

<?php

if(!$flag)
{
     
?>
        
      <?php
   
//Formular für die Verzeichnisse
      //Sonst könnte man ja unendlich viele Verzeichnisse anlegen.
      
if ($dir == "")
      {
      
?>
      
      <?php
      
}
      }
   
//Nun erst mal eine JavaScript Funktion welche noch benötigt wird.
      
echo " <script language='JavaScript'>
      function del(url, datei) {
         if( confirm(\"Soll die Datei '\" + datei + \"' wirklich gelöscht werden?\") )   window.location = url;
      }
      </script>"
;
      
$writeurl "";
      
//Wo sind wir? Haupt oder Unterverzeichnis?
      
if ($dir)
      {
          
$writeurl "/".$dir;
          echo 
"[url='$PHP_SELF']<< Home[/url]
"
;
      }
      
$uvz="ordner$writeurl"// Das Hauptverzeichnis ist immer /ordner
       
if (!file_exists($uvz)) //Wenn nicht vorhanden, dann anlegen
       
{
           
mkdir($uvz,0755);
       }
      if (
$sent==1//Wenn Datei gelöscht werden soll.... Weiter unten.
      
{
          
$name urldecode($name);
          
$pfad $uvz."/".$name;
          @
unlink($pfad); //Pfad zusammenbasteln ;-)
       
      
}
      echo 
"<font style='font-size:11px';}>current directory:

      [url='$uvz']/$uvz[/url]<p align='center'>current uploaded files:
<hr width='100%' color='#ffffff'></p></font>[list=1]"
;
      
//Anzeigen des Verzeichnisses und es folgt das Anzeigen der hochgeladenen Dateien
   
$i 1;
      
$verzeichnis opendir($uvz);

      while (
$file readdir($verzeichnis)) //Verzeichnis auslesen
      
{
          if (
is_file($uvz."/".$file))
          {  
              echo 
"[*][url='$uvz/$file']$file[/url]<font color=#999999>|</font>".gmdate("d.m.Y H:i"); //Datei(en) anzeigen
              
$file urlencode($file);
              
//echo " <a href=\"javascript:del('$PHP_SELF?sent=1&name=$file&dir=$dir','".urldecode($file)."')\"> <font color='#880000'>L&ouml;schen<hr></font></a>";
        //Möglichkeit zum Löschen der Datei. Die JavaScriptfunktion del ist hierbei eine Abfrage ob wirklich gelöscht werden soll.
        //Klickt man ja, wird die URL übergeben mit der Variable $sent=1  Dieses wurde weiter oben ja bereits abgefragt.
              
$i++;
          }
      }
      if (
$i == 1)
      {
          echo 
"Keine Dateien vorhanden!";
      }
      
closedir($verzeichnis);
      echo 
"[/list]";
echo 
"
"
;
if (
$dir == "")
{
//Das Gleiche für die Verzeichnisse nochmal
echo "<font style='font-size:11px';}><p align='center'>current put on directories:
<hr width='100%' color='#ffffff'></p></font>[list=1]"
;
  
//Auslesen der Verzeichnisse
  
$dirlist=array();
  
$writeurl "";
      if (
$dir)
      {
          
$writeurl "/".$dir;
      }
  
$dir "ordner$writeurl";
  
$dh=opendir($dir);
  if (
$dh)
  {
  
$i=1;
   while (
$filename=readdir($dh))
   {
     if (
is_dir($dir."/".$filename) && $filename != "." && $filename != "..")
     {
       echo 
"[*][url='$PHP_SELF?dir=$filename']../".$dir."/".$filename."[/url]<font color=#999999>|</font>".date("d.m.Y H:i");    // Verzeichnisse anzeigen.
       
echo dateigroesse($dir."/".$filename2);
       
$i++;
     }
   }
   if (
$i == 1)
      {
          echo 
"Keine Verzeichnisse vorhanden!";
      }
   
closedir($dh);
  }
  else
  {
   echo 
"FEHLER";
  }
echo 
"[/list]";
}
  
?>
Also wenn ich jetzt "php?dir=../test" oder "php?dir=/test"eingebe wird der Ordner test erzeugt.
Anhand dieser Sicherheitslücke ist es natürlich möglich noch mehr Schade anzurichten.
Könnt ihr mir helfen, wie ich sowas unterbinden kann?
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.08.2005, 05:04  
Erfahrener Benutzer
 
Registriert seit: 30.10.2004
Beiträge: 160
Jacks Rache
Standard

Leider themenfremd (sorry dafür):
Dein Code sieht recht unübersichtlich aus. Sieht aus, als hätte bei dir die Forenfunktion für farblich unterschiedlichen PHP-Code versagt. Eventuell mal versuchen, das erste <? und das letzte ?> zu entfernen und dann noch mal zu posten. Denn vielleicht hast du das zwei mal benutzt, sodass das Forum den Code nicht richtig erkennt.
Jacks Rache ist offline  
Alt 08.08.2005, 08:43  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

1) bitte [ php] anstatt der [ code]-tags verwenden
2) vieleicht ein base-dir festlegen und in der art das ganze machen:

PHP-Code:
<?php
$verzeichnis 
$basedir.$_GET['dir'];
if(
file_exists($verzeichnis))
{
// gut
}
else
{
//schlecht
}

mfg
robo47
?>
Der Beitrag wurde verschoben, wegen...
... Postings im falschen Forum. Bitte beim nächsten Mal darauf achten..

Bemerkung:
Die gestellte Frage entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen.
Bei Einspruch oder weiteren Fragen bitte an mich wenden.

moved to PHP - Anfänger

mfg
robo47
robo47 ist offline  
Alt 08.08.2005, 11:34  
Gast
 
Beiträge: n/a
Standard

Ich hab jetzt den PHP Tag verwendet
Also ich hab anstatt
PHP-Code:
<?php
if (!file_exists($uvz)) //Wenn nicht vorhanden, dann anlegen
     
{
         
mkdir($uvz,0755);
     } 
?>
das gemacht
PHP-Code:
<?php
if (!file_exists($uvz)) //Wenn nicht vorhanden, dann auch nicht anlegen!
     
{
         echo 
"failure";
     } 
?>
Dieser Weg geht doch. Gibt es aber vielleicht bessere Methoden?

//edit

Achso und wie kann ich verhindern, dass man nicht mit "source-codes.php?dir=.." das ganze Verzeichnis ausließt?
Für Antworten wäre ich dankbar.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Skript auf einem anderen Server! aha_01 PHP Tipps 2008 3 05.12.2007 09:02
Startup Skript m_haussner Datenbanken 3 10.10.2007 20:56
.htpasswd (im geschützten Ordner!) per skript ändern! Funky_ PHP Tipps 2006 8 22.07.2006 18:03
Sicherheit: CSRF-Demo Basti Tutorials 12 15.05.2006 14:01
ein Skript startet ein zweites... ajo_silent PHP-Fortgeschrittene 8 03.05.2006 13:42
Skript &amp;amp;amp;quot;tarnen&amp;amp;amp;quot;? Off-Topic Diskussionen 17 07.08.2005 19:42
Ein php skript aus einem anderen skript heraus aufrufen PHP Tipps 2005-2 8 06.08.2005 20:23
Javascript - CountUP Skript zählt falsch.. Chr!s HTML, Usability und Barrierefreiheit 0 28.03.2005 14:32
[Erledigt] php skript ruft anderes php skript auf PHP-Fortgeschrittene 7 09.01.2005 23:06
[Erledigt] problem mit login skript | mysql | cookie PHP Tipps 2004-2 13 07.12.2004 19:01
Proxy Skript gesucht. Beitragsarchiv 2 12.11.2004 12:02
SKRIPT GESUCHT - Werbung auf einer site anzeigen Beitragsarchiv 4 29.08.2004 14:07
php skript frage! Gibt es das?? PHP Tipps 2004 4 02.07.2004 14:38
[Erledigt] Php skript upload problem! PHP Tipps 2004 2 30.06.2004 00:06
[Erledigt] Php Skript an Html Formular binden!! PHP Tipps 2004 3 17.06.2004 23:27

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php script dateianzeige, dateianzeige php, dateianzeige mit php

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:34 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.